mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update sync objects
This commit is contained in:
parent
866ecf78b4
commit
c71f597c58
14 changed files with 250 additions and 435 deletions
|
@ -16,12 +16,12 @@
|
|||
},
|
||||
"devDependencies": {},
|
||||
"ignore": [],
|
||||
"version": "1.1.72",
|
||||
"_release": "1.1.72",
|
||||
"version": "1.1.73",
|
||||
"_release": "1.1.73",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.1.72",
|
||||
"commit": "674ebfd2c3ad177d4b39025573c55920b8f69d03"
|
||||
"tag": "1.1.73",
|
||||
"commit": "3b108b8da07b5b715fe616f1528ad95acd15e061"
|
||||
},
|
||||
"_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git",
|
||||
"_target": "^1.1.51",
|
||||
|
|
|
@ -1,22 +1,12 @@
|
|||
(function (globalScope) {
|
||||
define([], function () {
|
||||
|
||||
function fileUpload() {
|
||||
return function () {
|
||||
|
||||
var self = this;
|
||||
|
||||
self.upload = function (file, name, url) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
reject();
|
||||
});
|
||||
return Promise.reject();
|
||||
};
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.FileUpload = fileUpload;
|
||||
|
||||
})(this);
|
||||
};
|
||||
});
|
|
@ -1,113 +1,77 @@
|
|||
(function () {
|
||||
define([], function () {
|
||||
|
||||
function getLocalMediaSource(serverId, itemId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve(null);
|
||||
});
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
|
||||
function saveOfflineUser(user) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve();
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
function deleteOfflineUser(id) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve();
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
function getCameraPhotos() {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve([]);
|
||||
});
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
|
||||
function getOfflineActions(serverId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve([]);
|
||||
});
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
|
||||
function deleteOfflineActions(actions) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve([]);
|
||||
});
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
|
||||
function getServerItemIds(serverId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve([]);
|
||||
});
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
|
||||
function removeLocalItem(itemId, serverId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve();
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
function getLocalItem(itemId, serverId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve();
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
function addOrUpdateLocalItem(localItem) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve();
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
function createLocalItem(libraryItem, serverInfo, originalFileName) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve({});
|
||||
});
|
||||
return Promise.resolve({});
|
||||
}
|
||||
|
||||
function downloadFile(url, localPath) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve();
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
function downloadSubtitles(url, localItem, subtitleStreamh) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve("");
|
||||
});
|
||||
return Promise.resolve('');
|
||||
}
|
||||
|
||||
function hasImage(serverId, itemId, imageTag) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve(false);
|
||||
});
|
||||
return Promise.resolve(false);
|
||||
}
|
||||
|
||||
function downloadImage(url, serverId, itemId, imageTag) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve(false);
|
||||
});
|
||||
return Promise.resolve(false);
|
||||
}
|
||||
|
||||
function fileExists(path) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve(false);
|
||||
});
|
||||
return Promise.resolve(false);
|
||||
}
|
||||
|
||||
function translateFilePath(path) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve(path);
|
||||
});
|
||||
return Promise.resolve(path);
|
||||
}
|
||||
|
||||
window.LocalAssetManager = {
|
||||
return {
|
||||
getLocalMediaSource: getLocalMediaSource,
|
||||
saveOfflineUser: saveOfflineUser,
|
||||
deleteOfflineUser: deleteOfflineUser,
|
||||
|
@ -126,5 +90,4 @@
|
|||
fileExists: fileExists,
|
||||
translateFilePath: translateFilePath
|
||||
};
|
||||
|
||||
})();
|
||||
});
|
|
@ -1,39 +1,35 @@
|
|||
(function (globalScope) {
|
||||
define(['localassetmanager'], function (localAssetManager) {
|
||||
|
||||
function contentUploader(connectionManager) {
|
||||
return function (connectionManager) {
|
||||
|
||||
var self = this;
|
||||
|
||||
self.uploadImages = function (server) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
LocalAssetManager.getCameraPhotos().then(function (photos) {
|
||||
return LocalAssetManager.getCameraPhotos().then(function (photos) {
|
||||
|
||||
if (!photos.length) {
|
||||
deferred.resolve();
|
||||
return;
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
var apiClient = connectionManager.getApiClient(server.Id);
|
||||
|
||||
apiClient.getContentUploadHistory().then(function (uploadHistory) {
|
||||
return apiClient.getContentUploadHistory().then(function (uploadHistory) {
|
||||
|
||||
photos = getFilesToUpload(photos, uploadHistory);
|
||||
|
||||
console.log('Found ' + photos.length + ' files to upload');
|
||||
|
||||
uploadNext(photos, 0, server, apiClient, deferred);
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
uploadNext(photos, 0, server, apiClient, resolve, reject);
|
||||
});
|
||||
|
||||
}, function () {
|
||||
deferred.reject();
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
}, function () {
|
||||
deferred.reject();
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
function getFilesToUpload(files, uploadHistory) {
|
||||
|
@ -57,62 +53,45 @@
|
|||
return CryptoJS.SHA1(file + "1").toString();
|
||||
}
|
||||
|
||||
function uploadNext(files, index, server, apiClient, deferred) {
|
||||
function uploadNext(files, index, server, apiClient, resolve, reject) {
|
||||
|
||||
var length = files.length;
|
||||
|
||||
if (index >= length) {
|
||||
|
||||
deferred.resolve();
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
uploadFile(files[index], apiClient).then(function () {
|
||||
|
||||
uploadNext(files, index + 1, server, apiClient, deferred);
|
||||
uploadNext(files, index + 1, server, apiClient, resolve, reject);
|
||||
}, function () {
|
||||
uploadNext(files, index + 1, server, apiClient, deferred);
|
||||
uploadNext(files, index + 1, server, apiClient, resolve, reject);
|
||||
});
|
||||
}
|
||||
|
||||
function uploadFile(file, apiClient) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
require(['fileupload', "cryptojs-sha1"], function () {
|
||||
require(['fileupload', "cryptojs-sha1"], function (FileUpload) {
|
||||
|
||||
var name = 'camera image ' + new Date().getTime();
|
||||
var name = 'camera image ' + new Date().getTime();
|
||||
|
||||
var url = apiClient.getUrl('Devices/CameraUploads', {
|
||||
DeviceId: apiClient.deviceId(),
|
||||
Name: name,
|
||||
Album: 'Camera Roll',
|
||||
Id: getUploadId(file),
|
||||
api_key: apiClient.accessToken()
|
||||
});
|
||||
var url = apiClient.getUrl('Devices/CameraUploads', {
|
||||
DeviceId: apiClient.deviceId(),
|
||||
Name: name,
|
||||
Album: 'Camera Roll',
|
||||
Id: getUploadId(file),
|
||||
api_key: apiClient.accessToken()
|
||||
});
|
||||
|
||||
console.log('Uploading file to ' + url);
|
||||
console.log('Uploading file to ' + url);
|
||||
|
||||
new MediaBrowser.FileUpload().upload(file, name, url).then(function () {
|
||||
|
||||
console.log('File upload succeeded');
|
||||
deferred.resolve();
|
||||
|
||||
}, function () {
|
||||
|
||||
console.log('File upload failed');
|
||||
deferred.reject();
|
||||
new FileUpload().upload(file, name, url).then(resolve, reject);
|
||||
});
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.ContentUploader = contentUploader;
|
||||
|
||||
})(this);
|
||||
};
|
||||
});
|
|
@ -1,66 +1,41 @@
|
|||
(function (globalScope) {
|
||||
define(['localassetmanager'], function (LocalAssetManager) {
|
||||
|
||||
function mediaSync() {
|
||||
return function () {
|
||||
|
||||
var self = this;
|
||||
|
||||
self.sync = function (apiClient, serverInfo, options) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
reportOfflineActions(apiClient, serverInfo).then(function () {
|
||||
return reportOfflineActions(apiClient, serverInfo).then(function () {
|
||||
|
||||
// Do the first data sync
|
||||
syncData(apiClient, serverInfo, false).then(function () {
|
||||
return syncData(apiClient, serverInfo, false).then(function () {
|
||||
|
||||
// Download new content
|
||||
getNewMedia(apiClient, serverInfo, options).then(function () {
|
||||
return getNewMedia(apiClient, serverInfo, options).then(function () {
|
||||
|
||||
// Do the second data sync
|
||||
syncData(apiClient, serverInfo, false).then(function () {
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
return deferred.promise();
|
||||
return syncData(apiClient, serverInfo, false);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
function reportOfflineActions(apiClient, serverInfo) {
|
||||
|
||||
console.log('Begin reportOfflineActions');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
return LocalAssetManager.getOfflineActions(serverInfo.Id).then(function (actions) {
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
if (!actions.length) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
LocalAssetManager.getOfflineActions(serverInfo.Id).then(function (actions) {
|
||||
return apiClient.reportOfflineActions(actions).then(function () {
|
||||
|
||||
if (!actions.length) {
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
apiClient.reportOfflineActions(actions).then(function () {
|
||||
|
||||
LocalAssetManager.deleteOfflineActions(actions).then(function () {
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
}, getOnFail(deferred));
|
||||
return LocalAssetManager.deleteOfflineActions(actions);
|
||||
});
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
function syncData(apiClient, serverInfo, syncUserItemAccess) {
|
||||
|
@ -69,24 +44,21 @@
|
|||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
LocalAssetManager.getServerItemIds(serverInfo.Id).then(function (localIds) {
|
||||
|
||||
LocalAssetManager.getServerItemIds(serverInfo.Id).then(function (localIds) {
|
||||
var request = {
|
||||
TargetId: apiClient.deviceId(),
|
||||
LocalItemIds: localIds,
|
||||
OfflineUserIds: (serverInfo.Users || []).map(function (u) { return u.Id; })
|
||||
};
|
||||
|
||||
var request = {
|
||||
TargetId: apiClient.deviceId(),
|
||||
LocalItemIds: localIds,
|
||||
OfflineUserIds: (serverInfo.Users || []).map(function (u) { return u.Id; })
|
||||
};
|
||||
apiClient.syncData(request).then(function (result) {
|
||||
|
||||
apiClient.syncData(request).then(function (result) {
|
||||
|
||||
afterSyncData(apiClient, serverInfo, syncUserItemAccess, result, deferred);
|
||||
|
||||
}, getOnFail(deferred));
|
||||
afterSyncData(apiClient, serverInfo, syncUserItemAccess, result, deferred);
|
||||
|
||||
}, getOnFail(deferred));
|
||||
});
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
@ -146,18 +118,7 @@
|
|||
|
||||
console.log('Begin removeLocalItem');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
|
||||
LocalAssetManager.removeLocalItem(itemId, serverId).then(function (localIds) {
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
}, getOnFail(deferred));
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
return LocalAssetManager.removeLocalItem(itemId, serverId);
|
||||
}
|
||||
|
||||
function getNewMedia(apiClient, serverInfo, options) {
|
||||
|
@ -203,27 +164,23 @@
|
|||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
var libraryItem = jobItem.Item;
|
||||
LocalAssetManager.createLocalItem(libraryItem, serverInfo, jobItem.OriginalFileName).then(function (localItem) {
|
||||
|
||||
var libraryItem = jobItem.Item;
|
||||
LocalAssetManager.createLocalItem(libraryItem, serverInfo, jobItem.OriginalFileName).then(function (localItem) {
|
||||
downloadMedia(apiClient, jobItem, localItem, options).then(function (isQueued) {
|
||||
|
||||
downloadMedia(apiClient, jobItem, localItem, options).then(function (isQueued) {
|
||||
if (isQueued) {
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
if (isQueued) {
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
getImages(apiClient, jobItem, localItem).then(function () {
|
||||
|
||||
getImages(apiClient, jobItem, localItem).then(function () {
|
||||
getSubtitles(apiClient, jobItem, localItem).then(function () {
|
||||
|
||||
getSubtitles(apiClient, jobItem, localItem).then(function () {
|
||||
apiClient.reportSyncJobItemTransferred(jobItem.SyncJobItemId).then(function () {
|
||||
|
||||
apiClient.reportSyncJobItemTransferred(jobItem.SyncJobItemId).then(function () {
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
}, getOnFail(deferred));
|
||||
deferred.resolve();
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
|
@ -232,7 +189,8 @@
|
|||
}, getOnFail(deferred));
|
||||
|
||||
}, getOnFail(deferred));
|
||||
});
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
@ -242,33 +200,29 @@
|
|||
console.log('Begin downloadMedia');
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/File", {
|
||||
api_key: apiClient.accessToken()
|
||||
});
|
||||
|
||||
var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/File", {
|
||||
api_key: apiClient.accessToken()
|
||||
});
|
||||
var localPath = localItem.LocalPath;
|
||||
|
||||
var localPath = localItem.LocalPath;
|
||||
console.log('Downloading media. Url: ' + url + '. Local path: ' + localPath);
|
||||
|
||||
console.log('Downloading media. Url: ' + url + '. Local path: ' + localPath);
|
||||
options = options || {};
|
||||
|
||||
options = options || {};
|
||||
LocalAssetManager.downloadFile(url, localPath, options.enableBackgroundTransfer, options.enableNewDownloads).then(function (path, isQueued) {
|
||||
|
||||
LocalAssetManager.downloadFile(url, localPath, options.enableBackgroundTransfer, options.enableNewDownloads).then(function (path, isQueued) {
|
||||
if (isQueued) {
|
||||
deferred.resolveWith(null, [true]);
|
||||
return;
|
||||
}
|
||||
LocalAssetManager.addOrUpdateLocalItem(localItem).then(function () {
|
||||
|
||||
if (isQueued) {
|
||||
deferred.resolveWith(null, [true]);
|
||||
return;
|
||||
}
|
||||
LocalAssetManager.addOrUpdateLocalItem(localItem).then(function () {
|
||||
|
||||
deferred.resolveWith(null, [false]);
|
||||
|
||||
}, getOnFail(deferred));
|
||||
deferred.resolveWith(null, [false]);
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
});
|
||||
}, getOnFail(deferred));
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
@ -350,28 +304,25 @@
|
|||
console.log('Begin downloadImage');
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
LocalAssetManager.hasImage(serverId, itemId, imageTag).then(function (hasImage) {
|
||||
|
||||
LocalAssetManager.hasImage(serverId, itemId, imageTag).then(function (hasImage) {
|
||||
|
||||
if (hasImage) {
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var imageUrl = apiClient.getImageUrl(itemId, {
|
||||
tag: imageTag,
|
||||
type: imageType,
|
||||
api_key: apiClient.accessToken()
|
||||
});
|
||||
|
||||
LocalAssetManager.downloadImage(imageUrl, serverId, itemId, imageTag).then(function () {
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
}, getOnFail(deferred));
|
||||
if (hasImage) {
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var imageUrl = apiClient.getImageUrl(itemId, {
|
||||
tag: imageTag,
|
||||
type: imageType,
|
||||
api_key: apiClient.accessToken()
|
||||
});
|
||||
|
||||
LocalAssetManager.downloadImage(imageUrl, serverId, itemId, imageTag).then(function () {
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
|
@ -382,23 +333,20 @@
|
|||
console.log('Begin getSubtitles');
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
if (!jobItem.Item.MediaSources.length) {
|
||||
console.log("Cannot download subtitles because video has no media source info.");
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!jobItem.Item.MediaSources.length) {
|
||||
console.log("Cannot download subtitles because video has no media source info.");
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var files = jobItem.AdditionalFiles.filter(function (f) {
|
||||
return f.Type == 'Subtitles';
|
||||
});
|
||||
|
||||
var mediaSource = jobItem.Item.MediaSources[0];
|
||||
|
||||
getNextSubtitle(files, 0, apiClient, jobItem, localItem, mediaSource, deferred);
|
||||
var files = jobItem.AdditionalFiles.filter(function (f) {
|
||||
return f.Type == 'Subtitles';
|
||||
});
|
||||
|
||||
var mediaSource = jobItem.Item.MediaSources[0];
|
||||
|
||||
getNextSubtitle(files, 0, apiClient, jobItem, localItem, mediaSource, deferred);
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
|
@ -443,17 +391,14 @@
|
|||
api_key: apiClient.accessToken()
|
||||
});
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
|
||||
LocalAssetManager.downloadSubtitles(url, localItem, subtitleStream).then(function (subtitlePath) {
|
||||
|
||||
subtitleStream.Path = subtitlePath;
|
||||
LocalAssetManager.addOrUpdateLocalItem(localItem).then(function () {
|
||||
deferred.resolve();
|
||||
}, getOnFail(deferred));
|
||||
LocalAssetManager.downloadSubtitles(url, localItem, subtitleStream).then(function (subtitlePath) {
|
||||
|
||||
subtitleStream.Path = subtitlePath;
|
||||
LocalAssetManager.addOrUpdateLocalItem(localItem).then(function () {
|
||||
deferred.resolve();
|
||||
}, getOnFail(deferred));
|
||||
});
|
||||
|
||||
}, getOnFail(deferred));
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
@ -496,25 +441,22 @@
|
|||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
LocalAssetManager.getUserIdsWithAccess(itemId, serverId).then(function (savedUserIdsWithAccess) {
|
||||
|
||||
LocalAssetManager.getUserIdsWithAccess(itemId, serverId).then(function (savedUserIdsWithAccess) {
|
||||
var userIdsWithAccess = syncDataResult.ItemUserAccess[itemId];
|
||||
|
||||
var userIdsWithAccess = syncDataResult.ItemUserAccess[itemId];
|
||||
if (userIdsWithAccess.join(',') == savedUserIdsWithAccess.join(',')) {
|
||||
// Hasn't changed, nothing to do
|
||||
deferred.resolve();
|
||||
}
|
||||
else {
|
||||
|
||||
if (userIdsWithAccess.join(',') == savedUserIdsWithAccess.join(',')) {
|
||||
// Hasn't changed, nothing to do
|
||||
LocalAssetManager.saveUserIdsWithAccess(itemId, serverId, userIdsWithAccess).then(function () {
|
||||
deferred.resolve();
|
||||
}
|
||||
else {
|
||||
}, getOnFail(deferred));
|
||||
}
|
||||
|
||||
LocalAssetManager.saveUserIdsWithAccess(itemId, serverId, userIdsWithAccess).then(function () {
|
||||
deferred.resolve();
|
||||
}, getOnFail(deferred));
|
||||
}
|
||||
|
||||
}, getOnFail(deferred));
|
||||
});
|
||||
}, getOnFail(deferred));
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
@ -525,12 +467,5 @@
|
|||
deferred.reject();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.MediaSync = mediaSync;
|
||||
|
||||
})(this);
|
||||
};
|
||||
});
|
|
@ -1,6 +1,30 @@
|
|||
(function (globalScope) {
|
||||
define(['serversync'], function (ServerSync) {
|
||||
|
||||
function multiServerSync(connectionManager) {
|
||||
function syncNext(connectionManager, servers, index, options, resolve, reject) {
|
||||
|
||||
var length = servers.length;
|
||||
|
||||
if (index >= length) {
|
||||
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var server = servers[index];
|
||||
|
||||
console.log("Creating ServerSync to server: " + server.Id);
|
||||
|
||||
new ServerSync(connectionManager).sync(server, options).then(function () {
|
||||
|
||||
syncNext(connectionManager, servers, index + 1, options, resolve, reject);
|
||||
|
||||
}, function () {
|
||||
|
||||
syncNext(connectionManager, servers, index + 1, options, resolve, reject);
|
||||
});
|
||||
}
|
||||
|
||||
return function (connectionManager) {
|
||||
|
||||
var self = this;
|
||||
|
||||
|
@ -10,42 +34,8 @@
|
|||
|
||||
var servers = connectionManager.getSavedServers();
|
||||
|
||||
syncNext(servers, 0, options, resolve, reject);
|
||||
syncNext(connectionManager, servers, 0, options, resolve, reject);
|
||||
});
|
||||
};
|
||||
|
||||
function syncNext(servers, index, options, resolve, reject) {
|
||||
|
||||
var length = servers.length;
|
||||
|
||||
if (index >= length) {
|
||||
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var server = servers[index];
|
||||
|
||||
console.log("Creating ServerSync to server: " + server.Id);
|
||||
|
||||
require(['serversync'], function () {
|
||||
|
||||
new MediaBrowser.ServerSync(connectionManager).sync(server, options).then(function () {
|
||||
|
||||
syncNext(servers, index + 1, options, resolve, reject);
|
||||
|
||||
}, function () {
|
||||
|
||||
syncNext(servers, index + 1, options, resolve, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.MultiServerSync = multiServerSync;
|
||||
|
||||
})(this);
|
||||
};
|
||||
});
|
|
@ -1,6 +1,38 @@
|
|||
(function (globalScope) {
|
||||
define(['localassetmanager'], function (localAssetManager) {
|
||||
|
||||
function offlineUserSync() {
|
||||
function syncNext(users, index, resolve, reject, apiClient, server) {
|
||||
|
||||
var length = users.length;
|
||||
|
||||
if (index >= length) {
|
||||
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var onFinish = function () {
|
||||
syncNext(users, index + 1, resolve, reject, apiClient, server);
|
||||
};
|
||||
|
||||
syncUser(users[index], apiClient).then(onFinish, onFinish);
|
||||
}
|
||||
|
||||
function syncUser(user, apiClient) {
|
||||
|
||||
return apiClient.getOfflineUser(user.Id).then(function (result) {
|
||||
|
||||
return localAssetManager.saveOfflineUser(result);
|
||||
|
||||
}, function () {
|
||||
|
||||
// TODO: We should only delete if there's a 401 response
|
||||
return localAssetManager.deleteOfflineUser(user.Id).catch(function () {
|
||||
return Promise.resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return function offlineUserSync() {
|
||||
|
||||
var self = this;
|
||||
|
||||
|
@ -12,53 +44,5 @@
|
|||
syncNext(users, 0, resolve, reject, apiClient, server);
|
||||
});
|
||||
};
|
||||
|
||||
function syncNext(users, index, resolve, reject, apiClient, server) {
|
||||
|
||||
var length = users.length;
|
||||
|
||||
if (index >= length) {
|
||||
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var onFinish = function() {
|
||||
syncNext(users, index + 1, resolve, reject, apiClient, server);
|
||||
};
|
||||
|
||||
syncUser(users[index], apiClient).then(onFinish, onFinish);
|
||||
}
|
||||
|
||||
function syncUser(user, apiClient) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
apiClient.getOfflineUser(user.Id).then(function (result) {
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
|
||||
LocalAssetManager.saveOfflineUser(result).then(resolve, resolve);
|
||||
});
|
||||
|
||||
}, function () {
|
||||
|
||||
// TODO: We should only delete if there's a 401 response
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
|
||||
LocalAssetManager.deleteOfflineUser(user.Id).then(resolve, resolve);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.OfflineUserSync = offlineUserSync;
|
||||
|
||||
})(this);
|
||||
};
|
||||
});
|
|
@ -1,6 +1,6 @@
|
|||
(function (globalScope) {
|
||||
define([], function () {
|
||||
|
||||
function serverSync(connectionManager) {
|
||||
return function (connectionManager) {
|
||||
|
||||
var self = this;
|
||||
|
||||
|
@ -9,10 +9,7 @@
|
|||
if (!server.AccessToken && !server.ExchangeToken) {
|
||||
|
||||
console.log('Skipping sync to server ' + server.Id + ' because there is no saved authentication information.');
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
resolve();
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
var connectionOptions = {
|
||||
|
@ -55,9 +52,9 @@
|
|||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
require(['contentuploader'], function () {
|
||||
require(['contentuploader'], function (ContentUploader) {
|
||||
|
||||
new MediaBrowser.ContentUploader(connectionManager).uploadImages(server).then(function () {
|
||||
new ContentUploader(connectionManager).uploadImages(server).then(function () {
|
||||
|
||||
console.log("ContentUploaded succeeded to server: " + server.Id);
|
||||
|
||||
|
@ -81,22 +78,17 @@
|
|||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
require(['offlineusersync'], function () {
|
||||
require(['offlineusersync'], function (OfflineUserSync) {
|
||||
|
||||
var apiClient = connectionManager.getApiClient(server.Id);
|
||||
|
||||
new MediaBrowser.OfflineUserSync().sync(apiClient, server).then(function () {
|
||||
new OfflineUserSync().sync(apiClient, server).then(function () {
|
||||
|
||||
console.log("OfflineUserSync succeeded to server: " + server.Id);
|
||||
|
||||
syncMedia(server, options).then(resolve, reject);
|
||||
|
||||
}, function () {
|
||||
|
||||
console.log("OfflineUserSync failed to server: " + server.Id);
|
||||
|
||||
reject();
|
||||
});
|
||||
}, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -105,31 +97,13 @@
|
|||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
require(['mediasync'], function () {
|
||||
require(['mediasync'], function (MediaSync) {
|
||||
|
||||
var apiClient = connectionManager.getApiClient(server.Id);
|
||||
|
||||
new MediaBrowser.MediaSync().sync(apiClient, server, options).then(function () {
|
||||
|
||||
console.log("MediaSync succeeded to server: " + server.Id);
|
||||
|
||||
resolve();
|
||||
|
||||
}, function () {
|
||||
|
||||
console.log("MediaSync failed to server: " + server.Id);
|
||||
|
||||
reject();
|
||||
});
|
||||
new MediaSync().sync(apiClient, server, options).then(resolve, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.ServerSync = serverSync;
|
||||
|
||||
})(this);
|
||||
};
|
||||
});
|
|
@ -32,14 +32,14 @@
|
|||
"web-component-tester": "^4.0.0",
|
||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||
},
|
||||
"homepage": "https://github.com/PolymerElements/iron-icon",
|
||||
"homepage": "https://github.com/polymerelements/iron-icon",
|
||||
"_release": "1.0.9",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.0.9",
|
||||
"commit": "f6fb241901377e30e2c9c6cd47e3e8e8beb6574d"
|
||||
},
|
||||
"_source": "git://github.com/PolymerElements/iron-icon.git",
|
||||
"_source": "git://github.com/polymerelements/iron-icon.git",
|
||||
"_target": "^1.0.0",
|
||||
"_originalSource": "PolymerElements/iron-icon"
|
||||
"_originalSource": "polymerelements/iron-icon"
|
||||
}
|
|
@ -26,14 +26,14 @@
|
|||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||
},
|
||||
"main": "iron-meta.html",
|
||||
"homepage": "https://github.com/polymerelements/iron-meta",
|
||||
"homepage": "https://github.com/PolymerElements/iron-meta",
|
||||
"_release": "1.1.1",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.1.1",
|
||||
"commit": "e171ee234b482219c9514e6f9551df48ef48bd9f"
|
||||
},
|
||||
"_source": "git://github.com/polymerelements/iron-meta.git",
|
||||
"_source": "git://github.com/PolymerElements/iron-meta.git",
|
||||
"_target": "^1.0.0",
|
||||
"_originalSource": "polymerelements/iron-meta"
|
||||
"_originalSource": "PolymerElements/iron-meta"
|
||||
}
|
|
@ -32,14 +32,14 @@
|
|||
"iron-component-page": "polymerElements/iron-component-page#^1.1.6"
|
||||
},
|
||||
"private": true,
|
||||
"homepage": "https://github.com/polymer/polymer",
|
||||
"homepage": "https://github.com/Polymer/polymer",
|
||||
"_release": "1.6.1",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.6.1",
|
||||
"commit": "1f197d9d7874b1e5808b2a5c26f34446a7d912fc"
|
||||
},
|
||||
"_source": "git://github.com/polymer/polymer.git",
|
||||
"_source": "git://github.com/Polymer/polymer.git",
|
||||
"_target": "^1.1.0",
|
||||
"_originalSource": "polymer/polymer"
|
||||
"_originalSource": "Polymer/polymer"
|
||||
}
|
|
@ -932,7 +932,7 @@
|
|||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
require(['localassetmanager'], function (LocalAssetManager) {
|
||||
|
||||
var serverInfo = ApiClient.serverInfo();
|
||||
|
||||
|
@ -1045,7 +1045,7 @@
|
|||
|
||||
if (mediaSource.Protocol == 'File') {
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
require(['localassetmanager'], function (LocalAssetManager) {
|
||||
|
||||
LocalAssetManager.fileExists(mediaSource.Path).then(function (exists) {
|
||||
console.log('LocalAssetManager.fileExists: path: ' + mediaSource.Path + ' result: ' + exists);
|
||||
|
|
|
@ -614,7 +614,7 @@ define(['appSettings', 'userSettings', 'appStorage', 'datetime'], function (appS
|
|||
|
||||
if (playMethod == 'DirectPlay' && mediaSource.Protocol == 'File') {
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
require(['localassetmanager'], function (LocalAssetManager) {
|
||||
|
||||
LocalAssetManager.translateFilePath(resultInfo.url).then(function (path) {
|
||||
|
||||
|
|
|
@ -1566,11 +1566,11 @@ var AppInfo = {};
|
|||
}
|
||||
|
||||
if (Dashboard.isRunningInCordova()) {
|
||||
define("localassetmanager", ["cordova/localassetmanager"]);
|
||||
define("fileupload", ["cordova/fileupload"]);
|
||||
define("localassetmanager", ["cordova/localassetmanager"], returnFirstDependency);
|
||||
define("fileupload", ["cordova/fileupload"], returnFirstDependency);
|
||||
} else {
|
||||
define("localassetmanager", [apiClientBowerPath + "/localassetmanager"]);
|
||||
define("fileupload", [apiClientBowerPath + "/fileupload"]);
|
||||
define("localassetmanager", [apiClientBowerPath + "/localassetmanager"], returnFirstDependency);
|
||||
define("fileupload", [apiClientBowerPath + "/fileupload"], returnFirstDependency);
|
||||
}
|
||||
define("connectionmanager", [apiClientBowerPath + "/connectionmanager"]);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue