From a7ca7f0fa205dbbd26e3daae054fc625a337224c Mon Sep 17 00:00:00 2001 From: David Sinclair Date: Tue, 29 Aug 2023 16:33:12 -0600 Subject: [PATCH] #1720 (Grid view) - Improved glitches with iPad grid view. - Fixed stories being marked as read while scrolling from a long story to a short story. --- clients/ios/Classes/FeedDetailStoryView.swift | 2 +- clients/ios/Classes/FeedDetailViewController.swift | 12 ++++++++++++ clients/ios/Classes/StoryDetailObjCViewController.m | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/clients/ios/Classes/FeedDetailStoryView.swift b/clients/ios/Classes/FeedDetailStoryView.swift index 8f62fdc04..72ef633a8 100644 --- a/clients/ios/Classes/FeedDetailStoryView.swift +++ b/clients/ios/Classes/FeedDetailStoryView.swift @@ -98,7 +98,7 @@ struct StoryPagesView: UIViewControllerRepresentable { let size = storyPagesViewController.currentPage.webView.scrollView.contentSize - storyPagesViewController.preferredContentSize = CGSize(width: size.width, height: 200) + storyPagesViewController.preferredContentSize = CGSize(width: size.width, height: 1000) storyPagesViewController.currentPage.webView.evaluateJavaScript( "document.body.lastChild.getBoundingClientRect().bottom + window.scrollY" diff --git a/clients/ios/Classes/FeedDetailViewController.swift b/clients/ios/Classes/FeedDetailViewController.swift index 5f1d6ed61..ab5c5656e 100644 --- a/clients/ios/Classes/FeedDetailViewController.swift +++ b/clients/ios/Classes/FeedDetailViewController.swift @@ -136,6 +136,8 @@ class FeedDetailViewController: FeedDetailObjCViewController { var pendingStories = [Story.ID : Story]() + var suppressMarkAsRead = false + func deferredReload(story: Story? = nil) { reloadWorkItem?.cancel() @@ -241,7 +243,13 @@ extension FeedDetailViewController: FeedDetailInteraction { let indexPath = IndexPath(row: story.index, section: 0) + suppressMarkAsRead = true + didSelectItem(at: indexPath) + + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + self.suppressMarkAsRead = false + } } func reading(story: Story) { @@ -249,6 +257,10 @@ extension FeedDetailViewController: FeedDetailInteraction { } func read(story: Story) { + if suppressMarkAsRead { + return + } + let dict = story.dictionary if isSwiftUI, storiesCollection.isStoryUnread(dict) { diff --git a/clients/ios/Classes/StoryDetailObjCViewController.m b/clients/ios/Classes/StoryDetailObjCViewController.m index e8377f482..865369fff 100644 --- a/clients/ios/Classes/StoryDetailObjCViewController.m +++ b/clients/ios/Classes/StoryDetailObjCViewController.m @@ -1553,7 +1553,7 @@ NSInteger position = floor(self->scrollPct * strongSelf.webView.scrollView.contentSize.height); NSInteger maxPosition = (NSInteger)(floor(strongSelf.webView.scrollView.contentSize.height - strongSelf.webView.frame.size.height)); if (position > maxPosition) { - NSLog(@"Position too far, scaling back to max position: %ld > %ld", (long)position, (long)maxPosition); + NSLog(@"Position too far, scaling back to max position: %@ > %@", @(position), @(maxPosition)); position = maxPosition; } if (position > 0) {