1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/dashboard-ui/bower_components/emby-apiclient/sync/offlineusersync.js

49 lines
1.2 KiB
JavaScript
Raw Normal View History

2016-08-06 22:56:32 -04:00
define(['localassetmanager'], function (localAssetManager) {
2016-10-02 02:13:04 -04:00
'use strict';
2015-09-09 23:22:52 -04:00
2016-08-06 22:56:32 -04:00
function syncNext(users, index, resolve, reject, apiClient, server) {
2015-09-09 23:22:52 -04:00
2016-08-06 22:56:32 -04:00
var length = users.length;
2015-09-09 23:22:52 -04:00
2016-08-06 22:56:32 -04:00
if (index >= length) {
2015-09-09 23:22:52 -04:00
2016-08-06 22:56:32 -04:00
resolve();
return;
}
2015-09-09 23:22:52 -04:00
2016-08-06 22:56:32 -04:00
var onFinish = function () {
syncNext(users, index + 1, resolve, reject, apiClient, server);
2015-09-09 23:22:52 -04:00
};
2015-09-10 14:28:22 -04:00
2016-08-06 22:56:32 -04:00
syncUser(users[index], apiClient).then(onFinish, onFinish);
}
2015-09-10 14:28:22 -04:00
2016-08-06 22:56:32 -04:00
function syncUser(user, apiClient) {
2015-09-10 14:28:22 -04:00
2016-08-06 22:56:32 -04:00
return apiClient.getOfflineUser(user.Id).then(function (result) {
2015-09-10 14:28:22 -04:00
2016-08-06 22:56:32 -04:00
return localAssetManager.saveOfflineUser(result);
2015-09-10 14:28:22 -04:00
2016-08-06 22:56:32 -04:00
}, function () {
2015-09-10 14:28:22 -04:00
2016-08-06 22:56:32 -04:00
// TODO: We should only delete if there's a 401 response
return localAssetManager.deleteOfflineUser(user.Id).catch(function () {
return Promise.resolve();
});
});
}
2015-09-10 14:28:22 -04:00
2016-08-06 22:56:32 -04:00
return function offlineUserSync() {
2015-09-10 14:28:22 -04:00
2016-08-06 22:56:32 -04:00
var self = this;
2015-09-15 23:55:26 -04:00
2016-08-06 22:56:32 -04:00
self.sync = function (apiClient, server) {
2015-09-15 23:55:26 -04:00
2016-08-06 22:56:32 -04:00
return new Promise(function (resolve, reject) {
2015-09-15 23:55:26 -04:00
2016-08-06 22:56:32 -04:00
var users = server.Users || [];
syncNext(users, 0, resolve, reject, apiClient, server);
2015-09-10 14:28:22 -04:00
});
2016-08-06 22:56:32 -04:00
};
};
});