EmbyCrackedClient/web/embypremiere/embypremiere.js

294 lines
11 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
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 = "&#xe000;"),
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 = "&#xe000;"),
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 = "&#xe5CA;"),
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">&#xe1b2;</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;