/// <summary> /// Stößt den Abonnementvorgang an. Der lokale Nutzer abonniert den Kanal, der aktuell /// in der Detailansicht angezeigt wird. /// </summary> private async Task executeSubscribeChannel() { try { displayIndeterminateProgressIndicator(); await channelController.SubscribeChannelAsync(Channel.Id); //Setze Kanal als abonniert. ChannelSubscribedStatus = true; if (ChannelSubscribedStatus && !Channel.Deleted) { CanUnsubscribeChannel = true; } else { CanUnsubscribeChannel = false; } // Lade Moderatoren-Info. await LoadModeratorsOfChannelAsync(); // Bleibe auf der Seite, aber lade die Nachrichten nach. List<Announcement> announcements = await Task.Run(() => channelController.GetAllAnnouncementsOfChannel(Channel.Id)); // Setze PageSize auf 0, d.h. lade keine Elemente nach. Announcements = new IncrementalLoadingCollection<IncrementalAnnouncementLoaderController, Announcement>(Channel.Id, 0); await Announcements.LoadExistingCollectionAsync(announcements); } catch(ClientException ex) { // Markiere Kanal in lokaler Liste als gelöscht, wenn er nicht auf dem Server gefunden wurde. if(ex.ErrorCode == ErrorCodes.ChannelNotFound) { // Passe View an. Channel.Deleted = true; checkCommandExecution(); } displayError(ex.ErrorCode); } finally { hideIndeterminateProgressIndicator(); } }