mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
* Fix #1674 and refactor wizards * Have own code file per LED-Device Wizard * Include SonarLint feedback * Cleanups * Apply module pattern * Address CodeQL findings * Address CodeQL findings
95 lines
3.0 KiB
JavaScript
95 lines
3.0 KiB
JavaScript
//****************************
|
|
// Wizard Nanoleaf
|
|
//****************************
|
|
|
|
const nanoleafWizard = (() => {
|
|
|
|
const retryInterval = 2;
|
|
|
|
async function createNanoleafUserAuthorization() {
|
|
const host = conf_editor.getEditor("root.specificOptions.host").getValue();
|
|
const params = { host };
|
|
let retryTime = 30;
|
|
|
|
const UserInterval = setInterval(async function () {
|
|
retryTime -= retryInterval;
|
|
$("#connectionTime").html(retryTime);
|
|
|
|
if (retryTime <= 0) {
|
|
handleTimeout();
|
|
} else {
|
|
const res = await requestLedDeviceAddAuthorization('nanoleaf', params);
|
|
handleResponse(res);
|
|
}
|
|
}, retryInterval * 1000);
|
|
|
|
function handleTimeout() {
|
|
clearInterval(UserInterval);
|
|
showNotification(
|
|
'warning',
|
|
$.i18n('wiz_nanoleaf_failure_auth_token'),
|
|
$.i18n('wiz_nanoleaf_failure_auth_token_t')
|
|
);
|
|
resetWizard(true);
|
|
}
|
|
|
|
function handleResponse(res) {
|
|
if (res && !res.error) {
|
|
const response = res.info;
|
|
if (jQuery.isEmptyObject(response)) {
|
|
debugMessage(`${retryTime}: Power On/Off button not pressed or device not reachable`);
|
|
} else {
|
|
const token = response.auth_token;
|
|
if (token !== 'undefined') {
|
|
conf_editor.getEditor("root.specificOptions.token").setValue(token);
|
|
}
|
|
clearInterval(UserInterval);
|
|
resetWizard(true);
|
|
}
|
|
} else {
|
|
clearInterval(UserInterval);
|
|
resetWizard(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
return {
|
|
start: function () {
|
|
const nanoleaf_user_auth_title = 'wiz_nanoleaf_user_auth_title';
|
|
const nanoleaf_user_auth_intro = 'wiz_nanoleaf_user_auth_intro';
|
|
|
|
$('#wiz_header').html(
|
|
`<i class="fa fa-magic fa-fw"></i>${$.i18n(nanoleaf_user_auth_title)}`
|
|
);
|
|
$('#wizp1_body').html(
|
|
`<h4 style="font-weight:bold;text-transform:uppercase;">${$.i18n(nanoleaf_user_auth_title)}</h4><p>${$.i18n(nanoleaf_user_auth_intro)}</p>`
|
|
);
|
|
$('#wizp1_footer').html(
|
|
`<button type="button" class="btn btn-primary" id="btn_wiz_cont"><i class="fa fa-fw fa-check"></i>${$.i18n('general_btn_continue')}</button><button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>${$.i18n('general_btn_cancel')}</button>`
|
|
);
|
|
$('#wizp3_body').html(
|
|
`<span>${$.i18n('wiz_nanoleaf_press_onoff_button')}</span> <br /><br /><center><span id="connectionTime"></span><br /><i class="fa fa-cog fa-spin" style="font-size:100px"></i></center>`
|
|
);
|
|
|
|
if (getStorage("darkMode") == "on") {
|
|
$('#wizard_logo').attr("src", 'img/hyperion/logo_negativ.png');
|
|
}
|
|
|
|
$("#wizard_modal").modal({
|
|
backdrop: "static",
|
|
keyboard: false,
|
|
show: true
|
|
});
|
|
|
|
$('#btn_wiz_cont').off().on('click', function () {
|
|
createNanoleafUserAuthorization();
|
|
$('#wizp1').toggle(false);
|
|
$('#wizp3').toggle(true);
|
|
});
|
|
}
|
|
};
|
|
})();
|
|
|
|
export { nanoleafWizard };
|
|
|