mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
remove probing of live tv feeds
This commit is contained in:
parent
755f6fc79c
commit
2f83f86ee8
11 changed files with 129 additions and 80 deletions
13
dashboard-ui/thirdparty/cordova/android/iap.js
vendored
13
dashboard-ui/thirdparty/cordova/android/iap.js
vendored
|
@ -3,7 +3,7 @@
|
|||
var unlockId = "com.mb.android.unlock";
|
||||
var updatedProducts = [];
|
||||
|
||||
function updateProductInfo(id, owned) {
|
||||
function updateProductInfo(id, owned, price) {
|
||||
|
||||
updatedProducts = updatedProducts.filter(function (r) {
|
||||
return r.id != id;
|
||||
|
@ -11,7 +11,8 @@
|
|||
|
||||
var product = {
|
||||
id: id,
|
||||
owned: owned
|
||||
owned: owned,
|
||||
price: price
|
||||
};
|
||||
|
||||
updatedProducts.push(product);
|
||||
|
@ -19,12 +20,6 @@
|
|||
Events.trigger(IapManager, 'productupdated', [product]);
|
||||
}
|
||||
|
||||
function hasPurchased(id) {
|
||||
var product = getProduct(id);
|
||||
|
||||
return product != null && product.owned;
|
||||
}
|
||||
|
||||
function getProduct(id) {
|
||||
var products = updatedProducts.filter(function (r) {
|
||||
return r.id == id;
|
||||
|
@ -55,7 +50,7 @@
|
|||
|
||||
window.IapManager = {
|
||||
isPurchaseAvailable: isPurchaseAvailable,
|
||||
hasPurchased: hasPurchased,
|
||||
getProductInfo: getProduct,
|
||||
updateProduct: updateProductInfo,
|
||||
beginPurchase: beginPurchase,
|
||||
onPurchaseComplete: onPurchaseComplete
|
||||
|
|
40
dashboard-ui/thirdparty/cordova/iap.js
vendored
40
dashboard-ui/thirdparty/cordova/iap.js
vendored
|
@ -1,15 +1,19 @@
|
|||
(function () {
|
||||
|
||||
var unlockAlias = "premium features";
|
||||
var unlockAppProductId = 'appunlock';
|
||||
|
||||
var updatedProducts = [];
|
||||
|
||||
function updateProductInfo(p) {
|
||||
function updateProductInfo(product) {
|
||||
|
||||
updatedProducts = updatedProducts.filter(function (r) {
|
||||
return r.id != p.id;
|
||||
return r.id != product.id;
|
||||
});
|
||||
|
||||
updatedProducts.push(p);
|
||||
updatedProducts.push(product);
|
||||
|
||||
Events.trigger(IapManager, 'productupdated', [product]);
|
||||
}
|
||||
|
||||
function normalizeId(id) {
|
||||
|
@ -31,20 +35,15 @@
|
|||
return products.length ? products[0] : null;
|
||||
}
|
||||
|
||||
function hasPurchased(id) {
|
||||
var product = getProduct(id);
|
||||
|
||||
return product != null && product.owned;
|
||||
}
|
||||
|
||||
function isPurchaseAvailable(id) {
|
||||
var product = getProduct(id);
|
||||
|
||||
return product != null && product.canPurchase;
|
||||
return product != null && product.valid /*&& product.canPurchase*/;
|
||||
}
|
||||
|
||||
function beginPurchase(id) {
|
||||
|
||||
id = normalizeId(id);
|
||||
store.order(id);
|
||||
}
|
||||
|
||||
function validateProduct(product, callback) {
|
||||
|
@ -80,22 +79,33 @@
|
|||
|
||||
// iOS
|
||||
store.register({
|
||||
id: "appunlock",
|
||||
id: unlockAppProductId,
|
||||
alias: unlockAlias,
|
||||
type: store.NON_CONSUMABLE
|
||||
});
|
||||
|
||||
// When purchase of the full version is approved,
|
||||
// show some logs and finish the transaction.
|
||||
store.when(unlockAlias).approved(function (order) {
|
||||
store.when(unlockAppProductId).approved(function (order) {
|
||||
log('You just unlocked the FULL VERSION!');
|
||||
alert('approved');
|
||||
order.finish();
|
||||
});
|
||||
|
||||
store.when(unlockAppProductId).verified(function (p) {
|
||||
alert('verified');
|
||||
log("verified");
|
||||
p.finish();
|
||||
});
|
||||
|
||||
// The play button can only be accessed when the user
|
||||
// owns the full version.
|
||||
store.when(unlockAlias).updated(function (product) {
|
||||
store.when(unlockAppProductId).updated(function (product) {
|
||||
|
||||
if (product.loaded && product.valid && product.state == store.APPROVED) {
|
||||
console.log('finishing previously created transaction');
|
||||
product.finish();
|
||||
}
|
||||
updateProductInfo(product);
|
||||
});
|
||||
|
||||
|
@ -114,7 +124,7 @@
|
|||
|
||||
window.IapManager = {
|
||||
isPurchaseAvailable: isPurchaseAvailable,
|
||||
hasPurchased: hasPurchased,
|
||||
getProductInfo: getProduct,
|
||||
beginPurchase: beginPurchase
|
||||
};
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
return "com.mb.android.unlock";
|
||||
}
|
||||
|
||||
return 'premiumunlock';
|
||||
return 'appunlock';
|
||||
}
|
||||
|
||||
function validatePlayback(deferred) {
|
||||
|
@ -24,20 +24,12 @@
|
|||
return;
|
||||
}
|
||||
|
||||
validateFeature({
|
||||
|
||||
id: getPremiumUnlockFeatureId()
|
||||
|
||||
}, deferred);
|
||||
validateFeature(getPremiumUnlockFeatureId(), deferred);
|
||||
}
|
||||
|
||||
function validateLiveTV(deferred) {
|
||||
|
||||
validateFeature({
|
||||
|
||||
id: getPremiumUnlockFeatureId()
|
||||
|
||||
}, deferred);
|
||||
validateFeature(getPremiumUnlockFeatureId(), deferred);
|
||||
}
|
||||
|
||||
function getRegistrationInfo(feature, enableSupporterUnlock) {
|
||||
|
@ -50,17 +42,20 @@
|
|||
return ConnectionManager.getRegistrationInfo(feature, ApiClient);
|
||||
}
|
||||
|
||||
function validateFeature(info, deferred) {
|
||||
function validateFeature(id, deferred) {
|
||||
|
||||
if (IapManager.hasPurchased(info.id)) {
|
||||
var info = IapManager.getProductInfo(id) || {};
|
||||
|
||||
if (info.owned) {
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var productInfo = {
|
||||
enableSupporterUnlock: isAndroid(),
|
||||
enableAppUnlock: IapManager.isPurchaseAvailable(info.id),
|
||||
id: info.id
|
||||
enableAppUnlock: IapManager.isPurchaseAvailable(id),
|
||||
id: id,
|
||||
price: info.price
|
||||
};
|
||||
|
||||
var prefix = isAndroid() ? 'android' : 'ios';
|
||||
|
@ -89,7 +84,7 @@
|
|||
html += '<div class="inAppPurchaseOverlayInner" style="background:rgba(10,10,10,.8);width:100%;height:100%;color:#eee;">';
|
||||
|
||||
|
||||
html += '<form class="inAppPurchaseForm" style="margin: 0 auto;padding: 30px 1em 0;">';
|
||||
html += '<div class="inAppPurchaseForm" style="margin: 0 auto;padding: 30px 1em 0;">';
|
||||
|
||||
html += '<h1 style="color:#fff;">' + Globalize.translate('HeaderUnlockApp') + '</h1>';
|
||||
|
||||
|
@ -116,7 +111,12 @@
|
|||
}
|
||||
|
||||
if (info.enableAppUnlock) {
|
||||
html += '<button class="btn btnActionAccent btnAppUnlock" data-role="none" type="submit"><span>' + Globalize.translate('ButtonUnlockWithPurchase') + '</span><i class="fa fa-check"></i></button>';
|
||||
|
||||
var unlockText = Globalize.translate('ButtonUnlockWithPurchase');
|
||||
if (info.price) {
|
||||
unlockText = Globalize.translate('ButtonUnlockPrice', info.price);
|
||||
}
|
||||
html += '<button class="btn btnActionAccent btnAppUnlock" data-role="none" type="button"><span>' + unlockText + '</span><i class="fa fa-check"></i></button>';
|
||||
}
|
||||
|
||||
if (info.enableSupporterUnlock) {
|
||||
|
@ -125,7 +125,7 @@
|
|||
|
||||
html += '<button class="btn btnCancel" data-role="none" type="button"><span>' + Globalize.translate('ButtonCancel') + '</span><i class="fa fa-close"></i></button>';
|
||||
|
||||
html += '</form>';
|
||||
html += '</div>';
|
||||
|
||||
html += '</div>';
|
||||
html += '</div>';
|
||||
|
@ -155,10 +155,9 @@
|
|||
currentDisplayingProductInfo = info;
|
||||
currentDisplayingDeferred = deferred;
|
||||
|
||||
$('.inAppPurchaseForm', elem).on('submit', function () {
|
||||
$('.btnAppUnlock', elem).on('click', function () {
|
||||
|
||||
IapManager.beginPurchase(info.id);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('.btnCancel', elem).on('click', function () {
|
||||
|
@ -166,12 +165,7 @@
|
|||
clearCurrentDisplayingInfo();
|
||||
cancelInAppPurchase();
|
||||
|
||||
// For testing purposes
|
||||
if (!info.enableSupporterUnlock && !info.enableAppUnlock) {
|
||||
deferred.resolve();
|
||||
} else {
|
||||
deferred.reject();
|
||||
}
|
||||
deferred.reject();
|
||||
});
|
||||
$('.btnSignInSupporter', elem).on('click', function () {
|
||||
|
||||
|
@ -238,9 +232,9 @@
|
|||
}
|
||||
|
||||
if (isAndroid()) {
|
||||
requirejs(['thirdparty/cordova/android/iap', onIapManagerLoaded]);
|
||||
requirejs(['thirdparty/cordova/android/iap'], onIapManagerLoaded);
|
||||
} else {
|
||||
requirejs(['thirdparty/cordova/iap', onIapManagerLoaded]);
|
||||
requirejs(['thirdparty/cordova/iap'], onIapManagerLoaded);
|
||||
}
|
||||
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue