mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-18 11:28:23 -07:00
97 lines
2.8 KiB
JavaScript
97 lines
2.8 KiB
JavaScript
define(['localassetmanager'], function (localAssetManager) {
|
|
|
|
return function (connectionManager) {
|
|
|
|
var self = this;
|
|
|
|
self.uploadImages = function (server) {
|
|
|
|
return LocalAssetManager.getCameraPhotos().then(function (photos) {
|
|
|
|
if (!photos.length) {
|
|
return Promise.resolve();
|
|
}
|
|
|
|
var apiClient = connectionManager.getApiClient(server.Id);
|
|
|
|
return apiClient.getContentUploadHistory().then(function (uploadHistory) {
|
|
|
|
photos = getFilesToUpload(photos, uploadHistory);
|
|
|
|
console.log('Found ' + photos.length + ' files to upload');
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
|
|
uploadNext(photos, 0, server, apiClient, resolve, reject);
|
|
});
|
|
|
|
}, function () {
|
|
return Promise.resolve();
|
|
});
|
|
|
|
});
|
|
};
|
|
|
|
function getFilesToUpload(files, uploadHistory) {
|
|
|
|
return files.filter(function (file) {
|
|
|
|
// Seeing some null entries for some reason
|
|
if (!file) {
|
|
return false;
|
|
}
|
|
|
|
return uploadHistory.FilesUploaded.filter(function (u) {
|
|
|
|
return getUploadId(file) == u.Id;
|
|
|
|
}).length == 0;
|
|
});
|
|
}
|
|
|
|
function getUploadId(file) {
|
|
return CryptoJS.SHA1(file + "1").toString();
|
|
}
|
|
|
|
function uploadNext(files, index, server, apiClient, resolve, reject) {
|
|
|
|
var length = files.length;
|
|
|
|
if (index >= length) {
|
|
|
|
resolve();
|
|
return;
|
|
}
|
|
|
|
uploadFile(files[index], apiClient).then(function () {
|
|
|
|
uploadNext(files, index + 1, server, apiClient, resolve, reject);
|
|
}, function () {
|
|
uploadNext(files, index + 1, server, apiClient, resolve, reject);
|
|
});
|
|
}
|
|
|
|
function uploadFile(file, apiClient) {
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
|
|
require(['fileupload', "cryptojs-sha1"], function (FileUpload) {
|
|
|
|
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()
|
|
});
|
|
|
|
console.log('Uploading file to ' + url);
|
|
|
|
new FileUpload().upload(file, name, url).then(resolve, reject);
|
|
});
|
|
});
|
|
}
|
|
};
|
|
}); |