jellyfin-web/dashboard-ui/scripts/mysync.js
2016-12-26 12:37:05 -05:00

80 lines
2.3 KiB
JavaScript

define(['apphost', 'globalize', 'syncJobList', 'events', 'localsync', 'emby-button', 'paper-icon-button-light'], function (appHost, globalize, syncJobList, events, localSync) {
'use strict';
return function (view, params) {
var interval;
function isLocalSyncManagement() {
return appHost.supports('sync') && params.mode == 'offline';
}
function refreshSyncStatus(page) {
if (isLocalSyncManagement()) {
var status = localSync.getSyncStatus();
if (status == "Active") {
page.querySelector('.btnSyncNow').classList.add('hide');
}
else {
page.querySelector('.btnSyncNow').classList.remove('hide');
}
}
}
function syncNow(page) {
localSync.sync();
require(['toast'], function (toast) {
toast(Globalize.translate('MessageSyncStarted'));
});
refreshSyncStatus(page);
}
view.querySelector('.btnSyncNow').addEventListener('click', function () {
syncNow(view);
});
if (isLocalSyncManagement()) {
view.querySelector('.localSyncStatus').classList.remove('hide');
} else {
view.querySelector('.localSyncStatus').classList.add('hide');
}
var mySyncJobList = new syncJobList({
isLocalSync: params.mode === 'offline',
serverId: ApiClient.serverId(),
userId: params.mode === 'offline' ? null : ApiClient.getCurrentUserId(),
element: view.querySelector('.syncActivity'),
mode: params.mode
});
view.addEventListener('viewbeforeshow', function () {
refreshSyncStatus(view);
if (appHost.supports('sync')) {
interval = setInterval(function () {
refreshSyncStatus(view);
}, 5000);
}
});
view.addEventListener('viewbeforehide', function () {
if (interval) {
clearInterval(interval);
interval = null;
}
});
view.addEventListener('viewdestroy', function () {
mySyncJobList.destroy();
});
};
});