jellyfin-web/dashboard-ui/bower_components/emby-apiclient/sync/serversync.js

110 lines
3.2 KiB
JavaScript
Raw Normal View History

2016-08-06 19:56:32 -07:00
define([], function () {
2016-10-01 23:13:04 -07:00
'use strict';
2015-09-09 10:49:44 -07:00
2016-08-06 19:56:32 -07:00
return function (connectionManager) {
2015-09-09 10:49:44 -07:00
2015-09-09 20:22:52 -07:00
var self = this;
2015-09-21 18:05:33 -07:00
self.sync = function (server, options) {
2015-09-09 10:49:44 -07:00
if (!server.AccessToken && !server.ExchangeToken) {
2015-12-23 10:46:01 -07:00
console.log('Skipping sync to server ' + server.Id + ' because there is no saved authentication information.');
2016-08-06 19:56:32 -07:00
return Promise.resolve();
2015-09-09 10:49:44 -07:00
}
var connectionOptions = {
updateDateLastAccessed: false,
enableWebSocket: false,
2016-12-10 11:40:39 -07:00
reportCapabilities: false,
enableAutomaticBitrateDetection: false
2015-09-09 10:49:44 -07:00
};
2015-12-23 10:46:01 -07:00
return connectionManager.connectToServer(server, connectionOptions).then(function (result) {
2015-09-09 10:49:44 -07:00
2016-10-01 23:13:04 -07:00
if (result.State === MediaBrowser.ConnectionState.SignedIn) {
2015-12-23 10:46:01 -07:00
return performSync(server, options);
2015-09-09 10:49:44 -07:00
} else {
2015-12-23 10:46:01 -07:00
console.log('Unable to connect to server id: ' + server.Id);
return Promise.reject();
2015-09-09 10:49:44 -07:00
}
2015-12-23 10:46:01 -07:00
}, function (err) {
2015-09-09 10:49:44 -07:00
2015-12-23 10:46:01 -07:00
console.log('Unable to connect to server id: ' + server.Id);
throw err;
2015-09-09 10:49:44 -07:00
});
};
2015-12-23 10:46:01 -07:00
function performSync(server, options) {
2015-09-09 10:49:44 -07:00
2016-12-10 00:16:15 -07:00
console.log("ServerSync.performSync to server: " + server.Id);
2015-09-21 18:05:33 -07:00
options = options || {};
2015-09-26 07:51:26 -07:00
var uploadPhotos = options.uploadPhotos !== false;
2016-10-01 23:13:04 -07:00
if (options.cameraUploadServers && options.cameraUploadServers.indexOf(server.Id) === -1) {
2015-09-26 07:51:26 -07:00
uploadPhotos = false;
}
2016-12-10 00:16:15 -07:00
var pr = syncOfflineUsers(server, options);
2015-09-09 10:49:44 -07:00
2016-12-10 00:16:15 -07:00
return pr.then(function () {
2015-09-09 20:22:52 -07:00
2016-12-10 00:16:15 -07:00
if (uploadPhotos) {
return uploadContent(server, options);
}
2015-09-09 20:22:52 -07:00
2016-12-10 00:16:15 -07:00
return Promise.resolve();
2015-09-09 20:22:52 -07:00
2016-12-10 00:16:15 -07:00
}).then(function () {
2015-09-09 20:22:52 -07:00
2016-12-10 00:16:15 -07:00
return syncMedia(server, options);
2015-09-09 20:22:52 -07:00
});
}
2016-12-10 00:16:15 -07:00
2015-12-23 10:46:01 -07:00
function syncOfflineUsers(server, options) {
2015-09-09 20:22:52 -07:00
2015-10-01 09:28:24 -07:00
if (options.syncOfflineUsers === false) {
2016-12-10 00:16:15 -07:00
return Promise.resolve();
2015-10-01 09:28:24 -07:00
}
2015-12-23 10:46:01 -07:00
return new Promise(function (resolve, reject) {
2015-09-09 20:22:52 -07:00
2016-08-06 19:56:32 -07:00
require(['offlineusersync'], function (OfflineUserSync) {
2015-09-09 20:22:52 -07:00
2015-12-23 10:46:01 -07:00
var apiClient = connectionManager.getApiClient(server.Id);
2015-09-09 20:22:52 -07:00
2016-12-10 00:16:15 -07:00
new OfflineUserSync().sync(apiClient, server).then(resolve, reject);
});
});
}
function uploadContent(server, options) {
2015-09-09 20:22:52 -07:00
2016-12-10 00:16:15 -07:00
return new Promise(function (resolve, reject) {
2015-09-09 10:49:44 -07:00
2016-12-10 00:16:15 -07:00
require(['contentuploader'], function (contentuploader) {
2015-09-09 10:49:44 -07:00
2016-12-10 00:16:15 -07:00
uploader = new ContentUploader(connectionManager);
uploader.uploadImages(server).then(resolve, reject);
2015-09-09 20:22:52 -07:00
});
});
}
2015-12-23 10:46:01 -07:00
function syncMedia(server, options) {
return new Promise(function (resolve, reject) {
2015-09-09 20:22:52 -07:00
2016-08-06 19:56:32 -07:00
require(['mediasync'], function (MediaSync) {
2015-09-09 20:22:52 -07:00
2015-12-23 10:46:01 -07:00
var apiClient = connectionManager.getApiClient(server.Id);
2015-09-09 20:22:52 -07:00
2016-08-06 19:56:32 -07:00
new MediaSync().sync(apiClient, server, options).then(resolve, reject);
2015-09-09 10:49:44 -07:00
});
});
}
2016-08-06 19:56:32 -07:00
};
});