Example #1
0
        public void AddOrUpdate(ServerUserInfo user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            // Clone the existing list of users
            var list = new List<ServerUserInfo>();
            foreach (ServerUserInfo serverUserInfo in Users)
            {
                list.Add(serverUserInfo);
            }

            var index = FindIndex(list, user.Id);

            if (index != -1)
            {
                var existing = list[index];

                // Merge the data
                existing.IsSignedInOffline = user.IsSignedInOffline;
            }
            else
            {
                list.Add(user);
            }

            Users = list;
        }
Example #2
0
        public void AddOrUpdate(ServerUserInfo user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            // Clone the existing list of users
            var list = new List <ServerUserInfo>();

            foreach (ServerUserInfo serverUserInfo in Users)
            {
                list.Add(serverUserInfo);
            }

            var index = FindIndex(list, user.Id);

            if (index != -1)
            {
                var existing = list[index];

                // Merge the data
                existing.IsSignedInOffline = user.IsSignedInOffline;
            }
            else
            {
                list.Add(user);
            }

            Users = list;
        }
Example #3
0
        public void AddOrUpdate(ServerUserInfo user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            var list = Users.ToList();

            var index = FindIndex(list, user.Id);

            if (index != -1)
            {
                var existing = list[index];

                // Merge the data
                existing.IsSignedInOffline = user.IsSignedInOffline;
            }
            else
            {
                list.Add(user);
            }

            Users = list;
        }
        private async Task SaveOfflineUser(ServerUserInfo user, IApiClient apiClient, CancellationToken cancellationToken)
        {
            var deleteUser = false;
            var updateImage = false;

            UserDto offlineUser = null;

            try
            {
                offlineUser = await apiClient.GetOfflineUserAsync(user.Id).ConfigureAwait(false);

                await _localAssetManager.SaveOfflineUser(offlineUser).ConfigureAwait(false);

                updateImage = true;
            }
            catch (HttpException ex)
            {
                _logger.ErrorException("Error getting user info", ex);

                if (ex.StatusCode.HasValue && ex.StatusCode.Value == HttpStatusCode.NotFound)
                {
                    deleteUser = true;
                }
            }
            catch (Exception ex)
            {
                _logger.ErrorException("Error getting user info", ex);
            }

            if (deleteUser)
            {
                await _localAssetManager.DeleteOfflineUser(user.Id).ConfigureAwait(false);
            }

            if (updateImage && offlineUser != null)
            {
                await UpdateUserImage(offlineUser, apiClient, cancellationToken).ConfigureAwait(false);
            }
        }