private void RealtimeClientBroadcastChanged(object sender, InstagramApiSharp.API.RealTime.Handlers.InstaBroadcastEventArgs e) { try { if (Helper.DontUseTimersAndOtherStuff) { return; } var type = (InstaBroadcastStatusType)Enum.Parse(typeof(InstaBroadcastStatusType), e.BroadcastStatus?.Replace("_", ""), true); if (type == InstaBroadcastStatusType.Active) { if (!StoriesX.Any(x => x.Type == StoryType.Broadcast && x.Broadcast?.Id == e.BroadcastId)) { var broadcast = new StoryWithLiveSupportModel { Broadcast = new InstaBroadcast { Id = e.BroadcastId, BroadcastOwner = e.User.ToUserShortFriendshipFull(), }, Type = StoryType.Broadcast }; StoriesX.Insert(0, broadcast); //await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => //{ // var getInfo = await InstaApi.LiveProcessor.GetInfoAsync(e.BroadcastId); // if (getInfo.Succeeded) // { // broadcast.Broadcast.DashManifest = getInfo.Value.DashManifest; // broadcast.Broadcast.DashPlaybackUrl = getInfo.Value.DashPlaybackUrl; // } //}); } } else if (type == InstaBroadcastStatusType.Stopped || type == InstaBroadcastStatusType.HardStop) { var first = StoriesX.FirstOrDefault(x => x.Type == StoryType.Broadcast && x.Broadcast?.Id == e.BroadcastId); if (first != null) { StoriesX.Remove(first); } } if (Helpers.NavigationService.Frame.Content is Views.Broadcast.LiveBroadcastView view && view != null) { view.LiveVM?.DetermineLiveStatus(e.BroadcastId, type); } else if (Helpers.NavigationService.Frame.Content is Views.Infos.UserDetailsView userDetails && e.User?.Pk == userDetails?.UserDetailsVM?.User?.Pk) { userDetails.SetBroadcast(type == InstaBroadcastStatusType.Active ? new InstaBroadcast { Id = e.BroadcastId } : null); }
public async void RefreshStories(bool refresh = false) { try { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { var stories = await InstaApi.StoryProcessor.GetStoryFeedWithPostMethodAsync(refresh); if (stories.Succeeded) { Stories.Clear(); StoriesX.Clear(); var listX = new List <StoryWithLiveSupportModel>(); if (stories.Value.Broadcasts?.Count > 0) { for (int i = 0; i < stories.Value.Broadcasts.Count; i++) { var item = stories.Value.Broadcasts[i]; listX.Add(new StoryWithLiveSupportModel { Broadcast = item, Type = StoryType.Broadcast }); } } if (stories.Value.Items?.Count > 0) { var list = new List <StoryModel>(); string id = null; for (int i = 0; i < stories.Value.Items.Count; i++) { var item = stories.Value.Items[i]; var m = item.ToStoryModel(); if (string.IsNullOrEmpty(id) || !string.IsNullOrEmpty(id) && id != item.Id) { list.Add(m); listX.Add(new StoryWithLiveSupportModel { Story = item.ToStoryModel(), Type = StoryType.Story }); } id = item.Id; } id = null; Stories.AddRange(list); if (stories.Value.Items?.Count > 0) { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { var users = new List <string>(); foreach (var item in stories.Value.Items.Take(5))// 5ta ro migirim! //if (item.IsHashtag) // users.Add(item.Owner.Pk.ToString()); //else //users.Add(item.User.Pk.ToString()); { users.Add(item.Id); } var storiesAfterResult = await InstaApi.StoryProcessor.GetUsersStoriesAsHighlightsAsync(users.ToArray()); if (storiesAfterResult.Succeeded) { var storiesAfter = storiesAfterResult.Value.Items; for (int i = 0; i < Stories.Count; i++) { var item = Stories[i]; //var single = storiesAfter.SingleOrDefault(ss => ss.User.Pk.ToString() == item.User.Pk.ToString()); var single = storiesAfter.SingleOrDefault(ss => ss.Id == item.Id); if (single != null) { item.Items.Clear(); item.Items.AddRange(single.Items); } } } StoreisVisibility = Visibility.Visible; }); } } if (stories.Value.PostLives?.Count > 0) { for (int i = 0; i < stories.Value.PostLives.Count; i++) { var item = stories.Value.PostLives[i]; listX.Add(new StoryWithLiveSupportModel { PostLives = item, Type = StoryType.PostLive }); } } StoriesX.AddRange(listX); } else { if (stories.Info.ResponseType == ResponseType.LoginRequired) { MainPage.Current.LoggedOut(); } if (Stories.Count == 0) { StoreisVisibility = Visibility.Collapsed; } if (stories.Info.ResponseType == ResponseType.ConsentRequired) { ShowNotify("Consent is required!\r\nLet Minista fix it for you ;-)\r\nTrying.... Give me 30 seconds maximum...", 3500); await Task.Delay(TimeSpan.FromSeconds(8)); var acceptConsent = await InstaApi.AcceptConsentAsync(); await Task.Delay(TimeSpan.FromSeconds(15)); ShowNotify("Consent is fixed (I think) let me try to refresh feeds and other stuffs for u.", 2500); MainView.Current?.TryToRefresh(true); } } }); } catch (Exception ex) { ex.PrintException("MainViewModel.RefreshStories"); } refresh = false; }