//Processを処理 public void DoProcess(MylistListViewModel list) { Status = "マイリストを" + Process + "しています"; Task.Run(() => { //各種バックエンド呼び出し switch (Process) { case "削除": MylistViewModel.MylistInstance.DeleteMylist(SelectedMylist); break; case "移動": MylistViewModel.MylistInstance.MoveMylist(SelectedMylist, list); break; case "コピー": MylistViewModel.MylistInstance.CopyMylist(SelectedMylist, list); break; } //削除なら削除したマイリストのみ更新 その他はソースとディスティネーションを更新 if (Process == "削除") { List.Refresh(); } else { List.Refresh(); list.Refresh(); } Status = "マイリストを" + Process + "しました"; List.CloseDialog(); }); }
public MylistListEntryViewModel(MylistListViewModel vm, NicoNicoMylistData data) { Owner = vm; Entry = data; }
//マイリストを移動 public void MoveMylist(IEnumerable<MylistListEntryViewModel> source, MylistListViewModel dest) { string token = GetMylistToken(source.First().Owner.Group); Dictionary<string, string> pair = new Dictionary<string, string>(); pair["group_id"] = source.First().Owner.Group.Id; pair["target_group_id"] = dest.Group.Id; pair["token"] = token; //id_list以外のペアを指定 var encodedContent = new FormUrlEncodedContent(pair); //エンコードされたデータを取得 var text = encodedContent.ReadAsStringAsync().Result; //id_listを付け足す text += MakeIdList(source); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, MylistMoveAPI); //ソースがとりあえずマイリストだったら if(source.First().Owner.Group.Id == "0") { request.RequestUri = new Uri(DefListMoveAPI); } //データw指定 request.Content = new StringContent(text); //コンテンツタイプを設定 request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded"); //移動先がとりあえずマイリストだったら if(dest.Group.Id == "0") { foreach(MylistListEntryViewModel vm in source) { AddDefMylist(vm.Entry.Id, token); } } else { var ret = NicoNicoWrapperMain.Session.GetAsync(request).Result; } }
//マイリストを移動 public void MoveMylist(MylistListEntryViewModel source, MylistListViewModel dest) { string token = GetMylistToken(source.Owner.Group); Dictionary<string, string> pair = new Dictionary<string, string>(); pair["group_id"] = source.Owner.Group.Id; pair["target_group_id"] = dest.Group.Id; pair["id_list[0][]"] = source.Entry.ItemId; pair["token"] = token; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, MylistMoveAPI); //とりあえずマイリストだったら if(source.Owner.Group.Id == "0") { request.RequestUri = new Uri(DefListMoveAPI); } request.Content = new FormUrlEncodedContent(pair); var text = NicoNicoWrapperMain.Session.GetAsync(request).Result; //移動先がとりあえずマイリストだったら if(dest.Group.Id == "0") { AddDefMylist(source.Entry.Id, token); } }
//マイリストをコピー public void CopyMylist(IEnumerable<MylistListEntryViewModel> source, MylistListViewModel dest) { string token = GetMylistToken(source.First().Owner.Group); Dictionary<string, string> pair = new Dictionary<string, string>(); pair["group_id"] = source.First().Owner.Group.Id; pair["target_group_id"] = dest.Group.Id; pair["token"] = token; //フォームエンコード済み文字列を取得 var encodedContent = new FormUrlEncodedContent(pair); var text = encodedContent.ReadAsStringAsync().Result; //IDリスト作成 text += MakeIdList(source); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, MylistCopyAPI); if(source.First().Owner.Group.Id == "0") { request.RequestUri = new Uri(DefListCopyAPI); } request.Content = new StringContent(text); request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded"); if(dest.Group.Id == "0") { foreach(MylistListEntryViewModel vm in source) { AddDefMylist(vm.Entry.Id, token); } } else { var ret = NicoNicoWrapperMain.Session.GetAsync(request).Result; } }
public MylistEditModeViewModel(MylistListViewModel vm) { List = vm; }
//Processを処理 public void DoProcess(MylistListViewModel list) { Status = "マイリストを" + Process + "しています"; Task.Run(() => { //各種バックエンド呼び出し switch(Process) { case "削除": MylistViewModel.MylistInstance.DeleteMylist(SelectedMylist); break; case "移動": MylistViewModel.MylistInstance.MoveMylist(SelectedMylist, list); break; case "コピー": MylistViewModel.MylistInstance.CopyMylist(SelectedMylist, list); break; } //削除なら削除したマイリストのみ更新 その他はソースとディスティネーションを更新 if(Process == "削除") { List.Reflesh(); } else { List.Reflesh(); list.Reflesh(); } Status = "マイリストを" + Process + "しました"; List.CloseDialog(); }); }