1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update schedules direct mapping

This commit is contained in:
Luke Pulverenti 2015-10-10 20:39:30 -04:00
parent bd43e4e167
commit c97c4ac4e3
10 changed files with 126 additions and 80 deletions

View file

@ -5,7 +5,7 @@
function getStoreFeatureId(feature) {
if (feature == 'embypremieremonthly') {
return "emby.supporter.weekly";
return "emby.supporter.monthly";
}
return "com.mb.android.unlock";
@ -39,14 +39,26 @@
return products.length ? products[0] : null;
}
var storeReady = false;
function onStoreReady() {
storeReady = true;
refreshPurchases();
}
function isPurchaseAvailable(feature) {
return NativeIapManager.isStoreAvailable();
return storeReady;
}
function beginPurchase(feature, email) {
var id = getStoreFeatureId(feature);
return MainActivity.beginPurchase(id, email);
if (feature == 'embypremieremonthly') {
return MainActivity.purchasePremiereMonthly(email);
}
if (feature == 'embypremiereweekly') {
return MainActivity.purchasePremiereWeekly(email);
}
return MainActivity.purchaseUnlock(email);
}
function onPurchaseComplete(result) {
@ -90,10 +102,10 @@
updateProduct: updateProductInfo,
beginPurchase: beginPurchase,
onPurchaseComplete: onPurchaseComplete,
getStoreFeatureId: getStoreFeatureId,
getSubscriptionOptions: getSubscriptionOptions
getSubscriptionOptions: getSubscriptionOptions,
onStoreReady: onStoreReady
};
refreshPurchases();
NativeIapManager.initStore();
})();

View file

@ -1,6 +1,7 @@
(function () {
var updatedProducts = [];
var enteredEmail;
function getStoreFeatureId(feature) {
@ -41,6 +42,11 @@
}
function beginPurchase(feature, email) {
if (email) {
enteredEmail = email;
}
var id = getStoreFeatureId(feature);
store.order(id);
}
@ -54,32 +60,45 @@
// product attributes:
// https://github.com/j3k0/cordova-plugin-purchase/blob/master/doc/api.md#validation-error-codes
alert(JSON.stringify(product));
alert(JSON.stringify(product.transaction));
var productId = product.id;
var transactionId = product.transaction.id;
var receipt = product.transaction.appStoreReceipt;
var price = product.price;
callback(true, {
HttpClient.send({
type: "POST",
url: "https://mb3admin.com/test/admin/service/appstore/register",
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: {
store: "Apple",
application: "com.emby.mobile",
product: productId,
type: "Subscription",
feature: "MBSClubMonthly",
email: enteredEmail,
token: receipt,
amt: price,
storeId: transactionId
},
headers: {
"X-Emby-Token": "08606E86D043"
}
}).done(function () {
callback(true, product);
}).fail(function () {
callback(false, product);
});
//callback(true, { ... transaction details ... }); // success!
//// OR
//callback(false, {
// error: {
// code: store.PURCHASE_EXPIRED,
// message: "XYZ"
// }
//});
//// OR
//callback(false, "Impossible to proceed with validation");
}
function initProduct(id, alias, type) {
function initProduct(id, requiresVerification, type) {
store.register({
id: id,
alias: alias,
alias: id,
type: type
});
@ -87,12 +106,12 @@
// show some logs and finish the transaction.
store.when(id).approved(function (product) {
product.finish();
//if (product.type == store.PAID_SUBSCRIPTION) {
// product.verify();
//} else {
// product.finish();
//}
//product.finish();
if (requiresVerification) {
product.verify();
} else {
product.finish();
}
});
store.when(id).verified(function (p) {
@ -105,7 +124,11 @@
if (product.loaded && product.valid && product.state == store.APPROVED) {
Logger.log('finishing previously created transaction');
product.finish();
if (requiresVerification) {
product.verify();
} else {
product.finish();
}
}
updateProductInfo(product);
});
@ -119,8 +142,8 @@
store.validator = validateProduct;
initProduct(getStoreFeatureId(""), "premium features", store.NON_CONSUMABLE);
initProduct(getStoreFeatureId("embypremieremonthly"), "emby premiere monthly", store.PAID_SUBSCRIPTION);
initProduct(getStoreFeatureId(""), false, store.NON_CONSUMABLE);
initProduct(getStoreFeatureId("embypremieremonthly"), true, store.PAID_SUBSCRIPTION);
// When every goes as expected, it's time to celebrate!
// The "ready" event should be welcomed with music and fireworks,
@ -163,7 +186,6 @@
getProductInfo: getProduct,
beginPurchase: beginPurchase,
restorePurchase: restorePurchase,
getStoreFeatureId: getStoreFeatureId,
getSubscriptionOptions: getSubscriptionOptions
};

View file

@ -13,8 +13,6 @@
function validateFeature(feature, deferred) {
var id = IapManager.getStoreFeatureId(feature);
if (validatedFeatures.indexOf(feature) != -1) {
deferred.resolve();
return;
@ -23,7 +21,7 @@
var info = IapManager.getProductInfo(feature) || {};
if (info.owned) {
notifyServer(id);
notifyServer(info.id);
validatedFeatures.push(feature);
deferred.resolve();
return;
@ -31,7 +29,7 @@
var unlockableProductInfo = IapManager.isPurchaseAvailable(feature) ? {
enableAppUnlock: IapManager.isPurchaseAvailable(feature),
id: id,
id: info.id,
price: info.price,
feature: feature
@ -211,7 +209,7 @@
$('.btnRestorePurchase', elem).on('click', function () {
isCancelled = false;
IapManager.restorePurchase(info.feature);
IapManager.restorePurchase();
});
$(elem).on('iron-overlay-closed', function () {