private void OnChannelSelectionChanged(object sender, SelectionChangedEventArgs e) { var combo = (ComboBox)sender; var item = (RepositoryListItem)RepoListView.SelectedItem; Task.Run(async() => { var app = PahkatApp.Current; var repoRecords = await app.PackageStore.GetRepoRecords(); var newRepoRecords = new Dictionary <Uri, RepoRecord>(); foreach (var repositoryListItem in RepoList) { var url = repositoryListItem.Url; var channel = repositoryListItem.Channel; newRepoRecords[url] = new RepoRecord { Channel = channel == "" ? null : channel, }; } foreach (var key in newRepoRecords.Keys) { if (newRepoRecords[key] != repoRecords[key]) { var value = newRepoRecords[key]; // Work around protobuf null hatred value.Channel ??= ""; await app.PackageStore.SetRepo(key, newRepoRecords[key]); } } }); }
public Task <Dictionary <Uri, RepoRecord> > SetRepo(Uri url, RepoRecord record) { return(Task.Run(() => { throw new NotImplementedException(); return new Dictionary <Uri, RepoRecord>(); })); }
public async Task <Dictionary <Uri, RepoRecord> > SetRepo(Uri url, RepoRecord record) { var response = await innerClient.SetRepoAsync(new SetRepoRequest { Settings = new Grpc.RepoRecord { Channel = record.Channel, }, Url = url.AbsoluteUri, }); return(response.Records.Map(pair => { return (new Uri(pair.Key), new RepoRecord { Channel = pair.Value.Channel }); }).ToDict()); }