async Task Activate() { if (ViewModelUtility.IsDesginMode) return; try { await _syncerActivities.WaitAsync(); if (_manager.Accounts.IndexOf(this) != _manager.SelectedAccountIndex) return; IsLoading = true; if (await _accountModel.Activate()) { UserName = _accountModel.MyProfile.Name; UserIconUrl = await DataCacheDictionary.DownloadImage( new Uri(_accountModel.Builder.IconUrl .Replace("$SIZE_SEGMENT", "s38-c-k") .Replace("$SIZE_NUM", "80"))); Stream.SelectedIndex = 0; } else { var message = new MetroDialogMessage( "Error", "ストリームの初期化に失敗しました。ネットワークの設定を確認して下さい。", "Account/Dialog", MessageDialogStyle.AffirmativeAndNegative, new MetroDialogSettings() { AffirmativeButtonText = "再接続", NegativeButtonText = "別のアカウントを使う" }); message = await Messenger.GetResponseAsync(message); switch (await message.Response) { case MessageDialogResult.Affirmative: var tsk = Activate(); break; case MessageDialogResult.Negative: _manager.IsAccountSelectorMode = true; _manager.SelectedAccountIndex = -1; break; } } } finally { IsLoading = false; _syncerActivities.Release(); } }
public async void Activate() { if (ViewModelUtility.IsDesginMode) return; //エラー発生時は確認画面を表示して再試行を促す if(await _accountManagerModel.Activate() == false) { var message = new MetroDialogMessage( "Error", "アカウント一覧の読み込みに失敗しました。ネットワークの設定を確認して下さい。", "Main/Dialog", setting: new MetroDialogSettings() { AffirmativeButtonText = "再接続" }); message = await Messenger.GetResponseAsync(message); await message.Response; Activate(); return; } //初期化成功時は継続 NoSelectableAccount = _accountManagerModel.Accounts.Count == 0; //前回起動時の最後に表示されていたアカウントのメールアドレスが //読み込まれているアカウントリストにある場合はこれを表示する var recentlyUsedAccount = string.IsNullOrEmpty(Properties.Settings.Default.RecentlyUsedAccountEMailAddress) ? null : _accountManagerModel.Accounts.FirstOrDefault(account => account.Builder.Email == Properties.Settings.Default.RecentlyUsedAccountEMailAddress); if (recentlyUsedAccount != null) SelectedAccountIndex = _accountManagerModel.Accounts.IndexOf(recentlyUsedAccount); else { IsAccountSelectorMode = true; SelectedAccountIndex = -1; } }