define([],function(){"use strict";functionperformSync(connectionManager,server,options){console.log("ServerSync.performSync to server: "+server.Id),options=options||{};varcameraUploadServers=options.cameraUploadServers||[];console.log("ServerSync cameraUploadServers: "+JSON.stringify(cameraUploadServers));varuploadPhotos=-1!==cameraUploadServers.indexOf(server.Id);returnconsole.log("ServerSync uploadPhotos: "+uploadPhotos),(uploadPhotos?uploadContent(connectionManager,server,options):Promise.resolve()).then(function(){returnsyncMedia(connectionManager,server,options)})}functionuploadContent(connectionManager,server,options){returnnewPromise(function(resolve,reject){require(["contentuploader"],function(ContentUploader){(newContentUploader).uploadImages(connectionManager,server).then(resolve,reject)})})}functionsyncMedia(connectionManager,server,options){returnnewPromise(function(resolve,reject){require(["mediasync"],function(MediaSync){varapiClient=connectionManager.getApiClient(server.Id);(newMediaSync).sync(apiClient,server,options).then(resolve,reject)})})}functionServerSync(){}returnServerSync.prototype.sync=function(connectionManager,server,options){if(!server.AccessToken&&!server.ExchangeToken)returnconsole.log("Skipping sync to server "+server.Id+" because there is no saved authentication information."),Promise.resolve();varconnectionOptions={updateDateLastAccessed:!1,enableWebSocket:!1,reportCapabilities:!1,enableAutomaticBitrateDetection:!1};returnconnectionManager.connectToServer(server,connectionOptions).then(function(result){return"SignedIn"===result.State?performSync(connectionManager,server,options):(console.log("Unable to connect to server id: "+server.Id),Promise.reject())},function(err){throwconsole.log("Unable to connect to server id: "+server.Id),err})},ServerSync});