hyperion.ng/assets/webconfig/js/wizards/LedDevice_nanoleaf.js
LordGrey ac57fea09a
Fix Kodi Color Calibration, Refactor Wizards (#1718)
* 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
2024-03-30 15:43:50 +01:00

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 };