mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update sync processes
This commit is contained in:
parent
cad461b296
commit
c23547137d
19 changed files with 400 additions and 326 deletions
55
dashboard-ui/apiclient/sync/contentuploader.js
Normal file
55
dashboard-ui/apiclient/sync/contentuploader.js
Normal file
|
@ -0,0 +1,55 @@
|
|||
(function (globalScope) {
|
||||
|
||||
function contentUploader(connectionManager) {
|
||||
|
||||
self.uploadImages = function (server) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
var apiClient = self.getApiClient(server.Id);
|
||||
|
||||
apiClient.getDevicesOptions().done(function (devicesOptions) {
|
||||
|
||||
if (!devicesOptions.EnabledCameraUploadDevices || devicesOptions.EnabledCameraUploadDevices.indexOf(apiClient.deviceId()) == -1) {
|
||||
Logger.log("Camera upload is not enabled for this device.");
|
||||
deferred.reject();
|
||||
}
|
||||
else {
|
||||
uploadImagesInternal(server, apiClient, deferred);
|
||||
}
|
||||
|
||||
}).fail(function () {
|
||||
deferred.reject();
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
function uploadImagesInternal(server, apiClient, deferred) {
|
||||
|
||||
apiClient.getContentUploadHistory().done(function (result) {
|
||||
|
||||
uploadImagesWithHistory(server, result, apiClient, deferred);
|
||||
|
||||
}).fail(function () {
|
||||
deferred.reject();
|
||||
});
|
||||
}
|
||||
|
||||
function uploadImagesWithHistory(server, uploadHistory, apiClient, deferred) {
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
|
||||
// TODO: Mimic java version of ContentUploader.UploadImagesInternal
|
||||
deferred.resolve();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.ContentUploader = contentUploader;
|
||||
|
||||
})(this);
|
58
dashboard-ui/apiclient/sync/multiserversync.js
Normal file
58
dashboard-ui/apiclient/sync/multiserversync.js
Normal file
|
@ -0,0 +1,58 @@
|
|||
(function (globalScope) {
|
||||
|
||||
function multiServerSync(connectionManager) {
|
||||
|
||||
self.sync = function () {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
connectionManager.getAvailableServers().done(function (result) {
|
||||
syncNext(result, 0, deferred);
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
function syncNext(servers, index, deferred) {
|
||||
|
||||
var length = servers.length;
|
||||
|
||||
if (index >= length) {
|
||||
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
if (progress.isCancelled) {
|
||||
deferred.reject();
|
||||
return;
|
||||
}
|
||||
|
||||
var server = servers[index];
|
||||
|
||||
// get fresh info from connection manager
|
||||
server = connectionManager.getServerInfo(server.Id) || server;
|
||||
|
||||
Logger.log("Creating ServerSync to server: " + server.Id);
|
||||
|
||||
require(['serversync'], function () {
|
||||
|
||||
new MediaBrowser.ServerSync(connectionManager).sync(server).done(function () {
|
||||
|
||||
syncNext(servers, index + 1, deferred);
|
||||
|
||||
}).fail(function () {
|
||||
|
||||
syncNext(servers, index + 1, deferred);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.MultiServerSync = multiServerSync;
|
||||
|
||||
})(this);
|
64
dashboard-ui/apiclient/sync/serversync.js
Normal file
64
dashboard-ui/apiclient/sync/serversync.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
(function (globalScope) {
|
||||
|
||||
function serverSync(connectionManager) {
|
||||
|
||||
self.sync = function (server) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
if (!server.AccessToken && !server.ExchangeToken) {
|
||||
|
||||
Logger.log('Skipping sync to server ' + server.Id + ' because there is no saved authentication information.');
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var connectionOptions = {
|
||||
updateDateLastAccessed: false,
|
||||
enableWebSocket: false,
|
||||
reportCapabilities: false
|
||||
};
|
||||
|
||||
connectionManager.connectToServer(server, connectionOptions).done(function (result) {
|
||||
|
||||
if (result.State == MediaBrowser.ConnectionState.SignedIn) {
|
||||
performSync(server, deferred);
|
||||
} else {
|
||||
Logger.log('Unable to connect to server id: ' + server.Id);
|
||||
deferred.reject();
|
||||
}
|
||||
|
||||
}).fail(function () {
|
||||
|
||||
Logger.log('Unable to connect to server id: ' + server.Id);
|
||||
deferred.reject();
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
function performSync(server, deferred) {
|
||||
|
||||
Logger.log("Creating ContentUploader to server: " + server.Id);
|
||||
|
||||
require(['contentuploader'], function () {
|
||||
|
||||
new MediaBrowser.ContentUploader(connectionManager).uploadImages(server).done(function () {
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
}).fail(function () {
|
||||
|
||||
deferred.resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.ServerSync = serverSync;
|
||||
|
||||
})(this);
|
Loading…
Add table
Add a link
Reference in a new issue