Example #1
0
        public async Task <IEnumerable <Site> > GetAllAsync()
        {
            var data = await _siteRepository.GetAllByUserIdAsync(_authService.UserId);

            var sites = data.Select(f => new Site(f));

            return(sites);
        }
Example #2
0
        private async Task SyncSitesAsync(IDictionary <string, CipherResponse> serverSites, bool deleteMissing)
        {
            if (!_authService.IsAuthenticated)
            {
                return;
            }

            var localSites = (await _siteRepository.GetAllByUserIdAsync(_authService.UserId).ConfigureAwait(false))
                             .ToDictionary(s => s.Id);

            foreach (var serverSite in serverSites)
            {
                if (!_authService.IsAuthenticated)
                {
                    return;
                }

                var existingLocalSite = localSites.ContainsKey(serverSite.Key) ? localSites[serverSite.Key] : null;
                if (existingLocalSite == null)
                {
                    var data = new SiteData(serverSite.Value, _authService.UserId);
                    await _siteRepository.InsertAsync(data).ConfigureAwait(false);
                }
                else if (existingLocalSite.RevisionDateTime != serverSite.Value.RevisionDate)
                {
                    var data = new SiteData(serverSite.Value, _authService.UserId);
                    await _siteRepository.UpdateAsync(data).ConfigureAwait(false);
                }
            }

            if (!deleteMissing)
            {
                return;
            }

            foreach (var site in localSites.Where(localSite => !serverSites.ContainsKey(localSite.Key)))
            {
                await _siteRepository.DeleteAsync(site.Value.Id).ConfigureAwait(false);
            }
        }