private async void RefreshGroup(GroupFactory groupFactory) { // only tracking need build group info. if (!this.Source.IsTracking) { return; } int?episode; this.VideoGroup = groupFactory.GetGroup(this.Source, out episode); Debug.Assert(this.VideoGroup != null); if (this.VideoGroup.Mode == GroupMode.Today) { var playing = this.todayPlaying = new WatchedInfo(episode); if (playing.Episode.HasValue) { var isWatched = await Task.Run(async() => { var user = await this.GetManagers().UserWatchInfoManager.FindAsync(this.Source.Id); return(user.Watcheds?.Contains(playing.Episode.Value)); }); if (isWatched != null && playing.IsWatched != isWatched.Value) { playing.IsWatched = isWatched.Value; IsWatchedUpdated?.Invoke(this, this); //this.NotifyPropertyChanged(nameof(this.TodayPlaying)); this.NotifyPropertyChanged(nameof(this.IsEnableWatchedButton)); } } } else { this.todayPlaying = null; } base.RefreshProperties(); }