protected override async void Execute(object parameter) { if (parameter is Models.Subscription.Subscription subscription) { // 既に登録済みのアイテムを先頭にして // 続いてマイリスト、ローカルプレイリストと表示する var playlists = new List <Interfaces.IPlaylist>() { HohoemaPlaylist.WatchAfterPlaylist }; foreach (var playlist in UserMylistManager.Mylists) { playlists.Add(playlist); } foreach (var playlist in LocalMylistManager.LocalPlaylists) { playlists.Add(playlist); } var selectedItems = new List <Interfaces.IPlaylist>(); foreach (var dest in subscription.Destinations.Reverse()) { var list = await _playlistAggregateGetter.FindPlaylistAsync(dest.PlaylistId); if (list != null) { playlists.Remove(list); playlists.Insert(0, list); selectedItems.Add(list); } } var choiceItems = await DialogService.ShowMultiChoiceDialogAsync( $"SelectSubscriptionGroup".Translate(), playlists, selectedItems, x => x.Label ); if (choiceItems == null) { return; } subscription.Destinations.Clear(); foreach (var choiceItem in choiceItems) { var dest = new Models.Subscription.SubscriptionDestination( choiceItem.Label, choiceItem.GetOrigin() == PlaylistOrigin.Local ? Models.Subscription.SubscriptionDestinationTarget.LocalPlaylist : Models.Subscription.SubscriptionDestinationTarget.LoginUserMylist, choiceItem.Id ); subscription.Destinations.Add(dest); } } }
protected override async void Execute(object parameter) { if (parameter is Models.Subscription.Subscription subscription) { // 既に登録済みのアイテムを先頭にして // 続いてマイリスト、ローカルプレイリストと表示する var playlists = new List <Interfaces.IMylist>() { HohoemaPlaylist.DefaultPlaylist }; foreach (var playlist in UserMylistManager.Mylists) { playlists.Add(playlist); } foreach (var playlist in LocalMylistManager.Mylists) { playlists.Add(playlist); } var selectedItems = new List <Interfaces.IMylist>(); foreach (var dest in subscription.Destinations.Reverse()) { var list = MylistHelper.FindMylistInCached(dest.PlaylistId, dest.Target == Models.Subscription.SubscriptionDestinationTarget.LocalPlaylist ? PlaylistOrigin.Local : PlaylistOrigin.LoginUser); if (list != null) { playlists.Remove(list); playlists.Insert(0, list); selectedItems.Add(list); } } var choiceItems = await DialogService.ShowMultiChoiceDialogAsync( $"購読『{subscription.Label}』の新着追加先を選択", playlists, selectedItems, x => x.Label ); if (choiceItems == null) { return; } subscription.Destinations.Clear(); foreach (var choiceItem in choiceItems) { var dest = new Models.Subscription.SubscriptionDestination( choiceItem.Label, choiceItem.ToMylistOrigin() == PlaylistOrigin.Local ? Models.Subscription.SubscriptionDestinationTarget.LocalPlaylist : Models.Subscription.SubscriptionDestinationTarget.LoginUserMylist, choiceItem.Id ); subscription.Destinations.Add(dest); } } }