293 lines
11 KiB
JavaScript
293 lines
11 KiB
JavaScript
import BaseSettingsView from "./../modules/viewmanager/basesettingsview.js";
|
|
import "./../modules/emby-elements/emby-input/emby-input.js";
|
|
import "./../modules/emby-elements/emby-button/emby-button.js";
|
|
import globalize from "./../modules/common/globalize.js";
|
|
import loading from "./../modules/loading/loading.js";
|
|
import registrationServices from "./../modules/registrationservices/registrationservices.js";
|
|
import confirm from "./../modules/common/dialogs/confirm.js";
|
|
import connectionManager from "./../modules/emby-apiclient/connectionmanager.js";
|
|
import "./../modules/listview/listview.js";
|
|
import prompt from "./../modules/prompt/prompt.js";
|
|
function showToast(options) {
|
|
return Emby.importModule("./modules/toast/toast.js").then(function (toast) {
|
|
return toast(options);
|
|
});
|
|
}
|
|
function showAlert(options) {
|
|
return Emby.importModule("./modules/common/dialogs/alert.js").then(function (
|
|
alert
|
|
) {
|
|
return alert(options);
|
|
});
|
|
}
|
|
function getPluginSecurityInfo() {
|
|
var apiClient = ApiClient;
|
|
return apiClient.getJSON(apiClient.getUrl("Plugins/SecurityInfo"));
|
|
}
|
|
function load(page) {
|
|
return (
|
|
loading.show(),
|
|
getPluginSecurityInfo().then(function (info) {
|
|
return (
|
|
(page.querySelector(".txtSupporterKey").value =
|
|
info.SupporterKey || ""),
|
|
info.SupporterKey && !info.IsMBSupporter
|
|
? (page
|
|
.querySelector(".txtSupporterKey")
|
|
.classList.add("invalidEntry"),
|
|
page.querySelector(".notSupporter").classList.remove("hide"))
|
|
: (page
|
|
.querySelector(".txtSupporterKey")
|
|
.classList.remove("invalidEntry"),
|
|
page.querySelector(".notSupporter").classList.add("hide")),
|
|
info.IsMBSupporter
|
|
? (page.querySelector(".supporterContainer").classList.add("hide"),
|
|
getPremiereStatus(info.SupporterKey).then(function (statusInfo) {
|
|
if (statusInfo) {
|
|
let statusLine;
|
|
var indicator = page.querySelector(
|
|
".status-indicator .statusIcon"
|
|
),
|
|
extendedPlans = page.querySelector(".extended-plans");
|
|
switch (
|
|
((extendedPlans.innerHTML = globalize.translate(
|
|
"MessagePremiereExtendedPlans",
|
|
'<a is="emby-linkbutton" class="button-link" href="https://emby.media/premiere-ext.html" target="_blank">',
|
|
"</a>"
|
|
)),
|
|
statusInfo.deviceStatus)
|
|
) {
|
|
case 2:
|
|
(statusLine = globalize.translate(
|
|
"MessagePremiereStatusOver",
|
|
statusInfo.planType
|
|
)),
|
|
indicator.classList.add("expiredBackground"),
|
|
indicator.classList.remove("nearExpiredBackground"),
|
|
(indicator.innerHTML = ""),
|
|
indicator.classList.add("autortl"),
|
|
extendedPlans.classList.remove("hide");
|
|
break;
|
|
case 1:
|
|
(statusLine = globalize.translate(
|
|
"MessagePremiereStatusClose",
|
|
statusInfo.planType
|
|
)),
|
|
indicator.classList.remove("expiredBackground"),
|
|
indicator.classList.add("nearExpiredBackground"),
|
|
(indicator.innerHTML = ""),
|
|
indicator.classList.add("autortl"),
|
|
extendedPlans.classList.remove("hide");
|
|
break;
|
|
default:
|
|
(statusLine = globalize.translate(
|
|
"MessagePremiereStatusGood",
|
|
statusInfo.planType
|
|
)),
|
|
indicator.classList.remove("expiredBackground"),
|
|
indicator.classList.remove("nearExpiredBackground"),
|
|
(indicator.innerHTML = ""),
|
|
indicator.classList.remove("autortl"),
|
|
extendedPlans.classList.add("hide");
|
|
}
|
|
page.querySelector(".premiere-status").innerHTML = statusLine;
|
|
var sub,
|
|
subsElement = page.querySelector(".premiere-subs");
|
|
statusInfo.subscriptions && 0 < statusInfo.subscriptions.length
|
|
? ((page.querySelector(".premiere-subs-content").innerHTML =
|
|
getSubscriptionHtml(
|
|
statusInfo.subscriptions,
|
|
info.SupporterKey
|
|
)),
|
|
(sub = page.querySelector(".lnkSubscription")) &&
|
|
sub.addEventListener("click", cancelSub),
|
|
subsElement.classList.remove("hide"))
|
|
: subsElement.classList.add("hide"),
|
|
page.querySelector(".isSupporter").classList.remove("hide");
|
|
}
|
|
loading.hide();
|
|
}))
|
|
: (page.querySelector(".supporterContainer").classList.remove("hide"),
|
|
page.querySelector(".isSupporter").classList.add("hide"),
|
|
loading.hide(),
|
|
Promise.resolve())
|
|
);
|
|
})
|
|
);
|
|
}
|
|
function getPremiereStatus(key) {
|
|
/*see u later
|
|
key = "key=" + key + "&serverId=" + ApiClient.serverId();
|
|
return fetch("https://mb3admin.com/admin/service/registration/getStatus", {
|
|
method: "POST",
|
|
body: key,
|
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
}).then(function (response) {
|
|
return response.json();
|
|
});*/
|
|
return Promise.resolve({
|
|
deviceStatus: "",
|
|
planType: "Lifetime",
|
|
subscriptions: {}
|
|
});
|
|
}
|
|
function getSubscriptionHtml(subs, key) {
|
|
return subs.map(function (item) {
|
|
var itemHtml = "",
|
|
makeLink = item.autoRenew && "Stripe" === item.store,
|
|
tagName = makeLink ? "button" : "div";
|
|
return (
|
|
itemHtml +
|
|
(("button" == tagName ? '<button type="button"' : "<div") +
|
|
' class="listItem listItem-button listItem-border' +
|
|
(makeLink ? " lnkSubscription" : "") +
|
|
'" data-feature="' +
|
|
item.feature +
|
|
'" data-key="' +
|
|
key +
|
|
'">') +
|
|
'<i class="listItemIcon md-icon autortl"></i>' +
|
|
'<div class="listItemBody two-line">' +
|
|
'<div class="listItemBodyText">' +
|
|
globalize.translate(
|
|
"ListItemPremiereSub",
|
|
item.planType,
|
|
item.expDate,
|
|
item.store
|
|
) +
|
|
"</div>" +
|
|
'<div class="listItemBodyText listItemBodyText-secondary secondaryText">' +
|
|
globalize.translate(
|
|
"Stripe" === item.store
|
|
? item.autoRenew
|
|
? "LabelClickToCancel"
|
|
: "LabelAlreadyCancelled"
|
|
: "LabelCancelInfo",
|
|
item.store
|
|
) +
|
|
"</div>" +
|
|
"</div>" +
|
|
("</" + tagName + ">")
|
|
);
|
|
});
|
|
}
|
|
function cancelSub(e) {
|
|
console.log("Cancel ");
|
|
let feature = this.getAttribute("data-feature"),
|
|
key = this.getAttribute("data-key");
|
|
confirm({
|
|
title: globalize.translate("HeaderCancelSub"),
|
|
text: globalize.translate("MessageConfirmSubCancel"),
|
|
confirmText: globalize.translate("ButtonCancelSub"),
|
|
cancelText: globalize.translate("ButtonDontCancelSub"),
|
|
primary: "cancel",
|
|
}).then(function () {
|
|
console.log("after confirm");
|
|
var postData = "key=" + key + "&feature=" + feature;
|
|
fetch("https://mb3admin.com/admin/service/stripe/requestSubCancel", {
|
|
method: "POST",
|
|
body: postData,
|
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
}).then(
|
|
function (response) {
|
|
showAlert({
|
|
text: globalize.translate("MessageSubCancelReqSent"),
|
|
title: globalize.translate("HeaderConfirmation"),
|
|
});
|
|
},
|
|
function (response) {
|
|
showAlert({
|
|
text: globalize.translate(
|
|
"MessageSubCancelError",
|
|
"cancel@emby.media"
|
|
),
|
|
});
|
|
}
|
|
);
|
|
});
|
|
}
|
|
function retrieveSupporterKey(e) {
|
|
prompt({
|
|
title: globalize.translate("HeaderForgotKey"),
|
|
label: globalize.translate("LabelEmail"),
|
|
description: globalize.translate("LabelSupporterEmailAddress"),
|
|
confirmText: globalize.translate("ButtonRetrieveKey"),
|
|
}).then(retrieveSupporterKeyFromEmail);
|
|
}
|
|
function retrieveSupporterKeyFromEmail(email) {
|
|
loading.show();
|
|
var url =
|
|
"https://mb3admin.com/admin/service/supporter/retrievekey?email=" + email;
|
|
console.log(url),
|
|
fetch(url, { method: "POST" })
|
|
.then(function (response) {
|
|
return response.json();
|
|
})
|
|
.then(function (result) {
|
|
loading.hide(),
|
|
result.Success
|
|
? showToast(
|
|
globalize.translate("MessageKeyEmailedTo").replace("{0}", email)
|
|
)
|
|
: showAlert(result.ErrorMessage),
|
|
console.log(result);
|
|
});
|
|
}
|
|
function updateSupporterKey(e) {
|
|
loading.show();
|
|
let form = this,
|
|
key = form.querySelector(".txtSupporterKey").value;
|
|
var info = { SupporterKey: key };
|
|
return (
|
|
ApiClient.updatePluginSecurityInfo(info).then(
|
|
function () {
|
|
loading.hide(),
|
|
key
|
|
? showAlert({
|
|
text: globalize.translate("MessageKeyUpdated"),
|
|
title: globalize.translate("HeaderConfirmation"),
|
|
})
|
|
: showAlert({
|
|
text: globalize.translate("MessageKeyRemoved"),
|
|
title: globalize.translate("HeaderConfirmation"),
|
|
}),
|
|
connectionManager.resetRegistrationInfo(ApiClient),
|
|
load(form.closest(".page"));
|
|
},
|
|
function () {
|
|
loading.hide(),
|
|
connectionManager.resetRegistrationInfo(ApiClient),
|
|
load(form.closest(".page"));
|
|
}
|
|
),
|
|
e.preventDefault(),
|
|
!1
|
|
);
|
|
}
|
|
function onSupporterLinkClick(e) {
|
|
registrationServices.showPremiereInfo(),
|
|
e.preventDefault(),
|
|
e.stopPropagation();
|
|
}
|
|
function View(view, params) {
|
|
BaseSettingsView.apply(this, arguments),
|
|
view
|
|
.querySelector(".supporterKeyForm")
|
|
.addEventListener("submit", updateSupporterKey),
|
|
view
|
|
.querySelector(".btnForgotKey")
|
|
.addEventListener("click", retrieveSupporterKey),
|
|
(view.querySelector(".benefits").innerHTML = globalize.translate(
|
|
"HeaderSupporterBenefit",
|
|
'<a is="emby-linkbutton" class="lnkPremiere button-link" href="https://emby.media/premiere" target="_blank">',
|
|
"</a>"
|
|
)),
|
|
view
|
|
.querySelector(".lnkPremiere")
|
|
.addEventListener("click", onSupporterLinkClick);
|
|
}
|
|
Object.assign(View.prototype, BaseSettingsView.prototype),
|
|
(View.prototype.loadSettingsInternal = function (options) {
|
|
return load(this.view);
|
|
});
|
|
export default View;
|