mirror of https://github.com/sualko/cloud_bbb
83 lines
2.1 KiB
TypeScript
83 lines
2.1 KiB
TypeScript
import {api} from './Common/Api';
|
|
import './Manager/App.scss';
|
|
|
|
declare const OCP: any;
|
|
|
|
$(() => {
|
|
function generateWarningElement(message: string) {
|
|
return $(`<div id="bbb-warning"><span class="icon icon-error-color icon-visible"></span> ${message}</div>`);
|
|
}
|
|
|
|
function generateSuccessElement(message: string) {
|
|
return $(`<div id="bbb-success"><span class="icon icon-checkmark-color icon-visible"></span> ${message}</div>`);
|
|
}
|
|
|
|
async function checkServer(url: string, secret: string) {
|
|
const result = await api.checkServer(url, secret);
|
|
|
|
if (result === 'success') {
|
|
return;
|
|
}
|
|
|
|
throw result;
|
|
}
|
|
|
|
function checkPasswordConfirmation() {
|
|
return new Promise(resolve => {
|
|
if (OC.PasswordConfirmation && OC.PasswordConfirmation.requiresPasswordConfirmation()) {
|
|
OC.PasswordConfirmation.requirePasswordConfirmation(() => resolve());
|
|
|
|
return;
|
|
}
|
|
|
|
resolve();
|
|
});
|
|
}
|
|
|
|
async function saveSettings(url: string, secret: string) {
|
|
url += url.endsWith('/') ? '' : '/';
|
|
|
|
await checkServer(url, secret);
|
|
await checkPasswordConfirmation();
|
|
|
|
OCP.AppConfig.setValue('bbb', 'api.url', url);
|
|
OCP.AppConfig.setValue('bbb', 'api.secret', secret);
|
|
}
|
|
|
|
$('#bbb-settings form').submit(function (ev) {
|
|
ev.preventDefault();
|
|
|
|
$('#bbb-result').empty();
|
|
|
|
saveSettings(this['api.url'].value, this['api.secret'].value).then(() => {
|
|
const successElement = generateSuccessElement(t('bbb', 'Settings saved'));
|
|
|
|
setTimeout(() => {
|
|
$('#bbb-result').empty();
|
|
}, 3000);
|
|
|
|
$('#bbb-result').append(successElement);
|
|
}).catch(err => {
|
|
let message = t('bbb', 'Unexpected error occurred');
|
|
|
|
if (err === 'invalid-url') {
|
|
message = t('bbb', 'API URL is invalid');
|
|
} else if (err === 'invalid-secret') {
|
|
message = t('bbb', 'API secret is invalid');
|
|
}
|
|
|
|
const warningElement = generateWarningElement(message);
|
|
|
|
$('#bbb-result').append(warningElement);
|
|
});
|
|
});
|
|
|
|
$<HTMLInputElement>('#bbb-settings [name="app.navigation"]').change((ev) => {
|
|
ev.preventDefault();
|
|
|
|
console.log('checkbox changed to', ev.target.checked);
|
|
|
|
OCP.AppConfig.setValue('bbb', 'app.navigation', ev.target.checked);
|
|
});
|
|
});
|