예제 #1
0
        private async void Load()
        {
            var t = TaskStarted("dialogs");

            try
            {
                var vkDialogs = await ServiceLocator.Vkontakte.Messages.GetDialogs();

                if (!vkDialogs.Items.IsNullOrEmpty())
                {
                    var dialogs = await ProcessDialogs(vkDialogs.Items);

                    _totalCount = vkDialogs.TotalCount;

                    Dialogs = new IncrementalLoadingCollection <Dialog>(dialogs);
                    Dialogs.HasMoreItemsRequested = () => _totalCount > Dialogs.Count;
                    Dialogs.OnMoreItemsRequested  = LoadMoreDialogs;

                    if (((App)Application.Current).LaunchArgs != null)
                    {
                        var args = ((App)Application.Current).LaunchArgs;
                        if (args != null && args.ContainsKey("uid"))
                        {
                            long uid = long.Parse(args["uid"]);

                            var activeDialog = Dialogs.FirstOrDefault(d => d.User.Profile.Id == uid);
                            SelectedDialog = activeDialog;
                        }
                    }
                }
                else
                {
                    t.Error = Localizator.String("Errors/DialogsEmptyError");
                }
            }
            catch (VkInvalidTokenException)
            {
                Messenger.Default.Send(new LoginStateChangedMessage()
                {
                    IsLoggedIn = false
                });

                Navigator.Main.Navigate(typeof(LoginView), clearHistory: true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Unable to load dialogs");

                t.Error = Localizator.String("Errors/DialogsCommonError");
            }

            t.Finish();
        }