Пример #1
0
        public async Task <string> PersistAsync(Entry entry)
        {
            if (entry == null)
            {
                return(null);
            }

            if (IsLocalMode)
            {
                return(await _fallbackPersister.PersistAsync(entry));
            }

            try
            {
                var entryJson = JsonConvert.SerializeObject(entry);
                var client    = GetClient();
                var content   = new StringContent(entryJson, Encoding.UTF8, "application/json");
                var response  = await client.PutAsync("/api/entries", content);

                if (response.IsSuccessStatusCode)
                {
                    return(entryJson);
                }
                else
                {
                    IsLocalMode = true;
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                IsLocalMode = true;
            }

            if (IsLocalMode)
            {
                return(await _fallbackPersister.PersistAsync(entry));
            }
            ;

            return(null);
        }
Пример #2
0
        private async Task ChangeStateAsync(Func <IWatcherState> action)
        {
            var entry = await _persister.RestoreAsync();

            var interval = Settings.RefreshInterval;

            if (entry != null && entry.SessionId != Session.SessionId && (DateTime.UtcNow - entry.Timestamp) < interval)
            {
                await _dialog.AlertAsync("Alert", "Syncing in progress... Please try again later.");

                return;
            }

            State = action();
            RaiseAllCanExecute();
            RaiseAllPropertyChanged();

            var username = _authManager.AuthData.Username;

            entry = await Entry.CreateAsync(username, State.StateId, State.Data);

            await _persister.PersistAsync(entry);
        }