1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/dashboard-ui/cordova/ios/backgroundfetch.js
2015-09-28 23:35:50 -04:00

112 lines
No EOL
2.6 KiB
JavaScript

(function () {
var lastStart = 0;
function onDeviceReady() {
var fetcher = window.BackgroundFetch;
fetcher.configure(onBackgroundFetch, onBackgroundFetchFailed, {
stopOnTerminate: false // <-- false is default
});
}
function onSyncFinish() {
Logger.log('BackgroundFetch completed');
var fetcher = window.BackgroundFetch;
fetcher.finish(); // <-- N.B. You MUST called #finish so that native-side can signal completion of the background-thread to the os.
}
function onSyncFail() {
Logger.log('BackgroundFetch completed - sync failed');
var fetcher = window.BackgroundFetch;
fetcher.finish(); // <-- N.B. You MUST called #finish so that native-side can signal completion of the background-thread to the os.
}
function startSync(reportToFetcher, syncOptions) {
lastStart = new Date().getTime();
require(['localsync'], function () {
if (LocalSync.getSyncStatus() == 'Syncing') {
onSyncFinish();
return;
}
var promise = LocalSync.sync(syncOptions);
if (reportToFetcher) {
promise.done(onSyncFinish).fail(onSyncFail);
}
});
}
function onBackgroundFetch() {
Logger.log('BackgroundFetch initiated');
startSync(true, {
uploadPhotos: false,
enableBackgroundTransfer: true,
enableNewDownloads: true
});
}
function onBackgroundFetchFailed() {
Logger.log('- BackgroundFetch failed');
}
var syncInterval = 1800000;
function restartInterval() {
setInterval(function () {
startIntervalSync();
}, syncInterval);
if (lastStart > 0 && (new Date().getTime() - lastStart) >= syncInterval) {
setTimeout(function () {
startIntervalSync();
}, 5000);
}
}
function startIntervalSync() {
startSync(false, {
uploadPhotos: true,
enableNewDownloads: false,
enableBackgroundTransfer: true
});
}
function normalizeSyncOptions(options) {
options.enableBackgroundTransfer = true;
if (options.enableNewDownloads == null) {
options.enableNewDownloads = false;
}
}
Dashboard.ready(function () {
require(['localsync'], function () {
LocalSync.normalizeSyncOptions = normalizeSyncOptions;
});
restartInterval();
});
document.addEventListener("resume", restartInterval, false);
onDeviceReady();
})();