public async void Init(ForumsTopicNavigationArgs args) { ViewModelLocator.ForumsMain.CurrentBackNavRegistrar = this; if (LoadingTopic) { return; } LoadingTopic = true; _prevArgs = args; Messages?.Clear(); AvailablePages?.Clear(); ToggleWatchingButtonText = "Toggle watching"; CurrentTopicData = await ForumTopicQueries.GetTopicData(_prevArgs.TopicId, _prevArgs.TopicPage, _prevArgs.LastPost, _prevArgs.MessageId); CurrentPage = _prevArgs.LastPost ? CurrentTopicData.AllPages : CurrentTopicData.CurrentPage; ViewModelLocator.GeneralMain.CurrentStatus = $"Forums - {(CurrentTopicData.IsLocked ? "Locked: " : "")}{CurrentTopicData?.Title}"; Messages = new ObservableCollection <ForumTopicMessageEntryViewModel>( CurrentTopicData.Messages.Select( entry => new ForumTopicMessageEntryViewModel(entry))); if (_prevArgs.FirstVisibleItemIndex != null) { RequestScroll?.Invoke(this, _prevArgs.FirstVisibleItemIndex.Value); } else if (_prevArgs.LastPost) { RequestScroll?.Invoke(this, Messages.Count - 1); } else if (CurrentTopicData.TargetMessageId != null /*|| (_prevArgs.MessageId != null && _prevArgs.MessageId != -1)*/) { //var index = _prevArgs.MessageId != null && _prevArgs.MessageId != -1 ? _prevArgs.MessageId.ToString() : CurrentTopicData.T RequestScroll?.Invoke(this, Messages.IndexOf(Messages.First(model => model.Data.Id == CurrentTopicData.TargetMessageId))); } var watched = _handyDataStorage.WatchedTopics.StoredItems.FirstOrDefault(model => model.Id == CurrentTopicData.Id); if (watched != null) { _isWatched = true; watched.OnCooldown = false; _handyDataStorage.WatchedTopics.SaveData(); } else { _isWatched = false; } RaisePropertyChanged(() => IsWatched); IsPinned = ViewModelLocator.ForumsMain.PinnedTopics.Any(entry => entry.Id == CurrentTopicData.Id); ViewModelLocator.ForumsMain.PinnedTopics.CollectionChanged += PinnedTopicsOnCollectionChanged; LoadingTopic = false; }
public ForumTopicPageFragment(ForumsTopicNavigationArgs args) { _args = args; }