本文整理汇总了C#中IApiClient.SyncData方法的典型用法代码示例。如果您正苦于以下问题:C# IApiClient.SyncData方法的具体用法?C# IApiClient.SyncData怎么用?C# IApiClient.SyncData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IApiClient
的用法示例。
在下文中一共展示了IApiClient.SyncData方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SyncData
private async Task SyncData(IApiClient apiClient,
ServerInfo serverInfo,
bool syncUserItemAccess,
CancellationToken cancellationToken)
{
_logger.Debug("Beginning SyncData with server {0}", serverInfo.Name);
var localIds = await _localAssetManager.GetServerItemIds(serverInfo.Id).ConfigureAwait(false);
var result = await apiClient.SyncData(new SyncDataRequest
{
TargetId = apiClient.DeviceId,
LocalItemIds = localIds,
OfflineUserIds = serverInfo.Users.Select(i => i.Id).ToList()
}).ConfigureAwait(false);
cancellationToken.ThrowIfCancellationRequested();
foreach (var itemIdToRemove in result.ItemIdsToRemove)
{
try
{
await RemoveItem(serverInfo.Id, itemIdToRemove).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.ErrorException("Error deleting item from device. Id: {0}", ex, itemIdToRemove);
}
}
if (syncUserItemAccess)
{
foreach (var item in result.ItemUserAccess)
{
var itemid = item.Key;
var localItem = await _localAssetManager.GetLocalItem(serverInfo.Id, itemid).ConfigureAwait(false);
if (!localItem.UserIdsWithAccess.SequenceEqual(item.Value, StringComparer.OrdinalIgnoreCase))
{
localItem.UserIdsWithAccess = item.Value;
await _localAssetManager.AddOrUpdate(localItem).ConfigureAwait(false);
}
}
}
}