From 206683315a8ba5e5e65490fb36744bc6afa901c6 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 25 Jul 2020 14:02:10 -0500 Subject: [PATCH] Update iOS to work with new TimelineItems struct --- .../Shared/Timeline/TimelineView.swift | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/Multiplatform/Shared/Timeline/TimelineView.swift b/Multiplatform/Shared/Timeline/TimelineView.swift index 6be7b6f4a..b51e7fbe1 100644 --- a/Multiplatform/Shared/Timeline/TimelineView.swift +++ b/Multiplatform/Shared/Timeline/TimelineView.swift @@ -83,18 +83,16 @@ struct TimelineView: View { .navigationTitle(Text(verbatim: timelineModel.nameForDisplay)) #else ScrollViewReader { scrollViewProxy in - List(timelineItems.keys, id: \.self) { timelineItemID in - if let timelineItem = timelineItems[timelineItemID] { - ZStack { - let selected = timelineModel.selectedTimelineItemID == timelineItem.article.articleID - TimelineItemView(selected: selected, width: geometryReaderProxy.size.width, timelineItem: timelineItem) - .background(TimelineItemFramePreferenceView(timelineItem: timelineItem)) - NavigationLink(destination: ArticleContainerView(), - tag: timelineItem.article.articleID, - selection: $timelineModel.selectedTimelineItemID) { - EmptyView() - }.buttonStyle(PlainButtonStyle()) - } + List(timelineItems.items) { timelineItem in + ZStack { + let selected = timelineModel.selectedTimelineItemID == timelineItem.article.articleID + TimelineItemView(selected: selected, width: geometryReaderProxy.size.width, timelineItem: timelineItem) + .background(TimelineItemFramePreferenceView(timelineItem: timelineItem)) + NavigationLink(destination: ArticleContainerView(), + tag: timelineItem.article.articleID, + selection: $timelineModel.selectedTimelineItemID) { + EmptyView() + }.buttonStyle(PlainButtonStyle()) } } .onPreferenceChange(TimelineItemFramePreferenceKey.self) { preferences in @@ -119,6 +117,19 @@ struct TimelineView: View { timelineItems = items // } } + .onReceive(timelineModel.articleStatusChangePublisher!) { articleIDs in + articleIDs.forEach { articleID in + if let position = timelineItems.index[articleID] { + if timelineItems.items[position].isReadOnly { + withAnimation { + timelineItems.items[position].updateStatus() + } + } else { + timelineItems.items[position].updateStatus() + } + } + } + } .navigationBarTitle(Text(verbatim: timelineModel.nameForDisplay), displayMode: .inline) #endif }