217 Commits

Author SHA1 Message Date
4f48514d1a Actually only restore existing statuses 2022-12-08 20:15:12 -05:00
57668886b2 Fix crash when scrolling through Local/Federated timeline with VoiceOver
It seems that the accessibility scroll mechanism does something like:
1. Find the next IndexPath to focus
2. Scroll to make it visible
3. Focus that cell

But because the timeline description cell is removed during the scroll,
the IndexPath that the accessibility system wants to focus becomes
invalid between steps 2 and 3, causing a crash when trying to focus it.

As a workaround, only remove the timeline description _item_ rather than
the header section so that section indices aren't affected.

Closes #290
2022-12-06 21:46:32 -05:00
40ff8d0a2a VoiceOver: improve description of gap cell, add actions to specify direction 2022-12-05 18:43:32 -05:00
0dcb7e71c4 Also perform jump to present check when the timeline VC reappears onscreen 2022-12-05 18:27:23 -05:00
3ea7e1057b Add preference to disable timeline state restoration 2022-12-05 17:24:01 -05:00
fc8fcb76fd Fix crash when TimelineViewController tries to apply snapshot while not visible 2022-12-05 17:17:34 -05:00
eac2a9b19f Move VoiceOver Jump to Present action to timeline pages segmented control 2022-12-05 17:13:45 -05:00
0ce57d1308 More fiddling with how Jump to Present works
Now, when loading present items, they're inserted into the data source
immediately along with a gap. If the user taps Jump to Present, then a
new snapshot _with only the present items_ will be applied (which allows
infinite scrolling to work properly when they scroll back down) and the
view scrolled-to-top. Tapping Go Back, then, applies the original
snapshot (i.e., the current one from when Jump to Present was tapped)
and restores the scroll position.
2022-12-05 17:09:11 -05:00
b64c748b73 Add Jump to Present VoiceOver action
Closes #288
2022-12-04 22:06:04 -05:00
5f3d9da9f8 Only try to restore statuses that exist in the cache
This could result in discontinuities in the restored timeline, but I'm
not sure there's anything better we could do.
2022-12-04 17:34:28 -05:00
f1b1732e5c Fix filter HTML to attributed string conversion optimization not being applied 🤦‍♂️ 2022-12-04 15:36:26 -05:00
e3e55de55b Fix hide filter action not working on profiles 2022-12-04 12:11:52 -05:00
54857a3bf3 Avoid converting HTML to attributed string twice when displaying a status cell for the first time
Now, when Filterer performs the conversion, the status cell can reuse
the attributed string.
2022-12-04 12:08:22 -05:00
6501343f24 Reapply filters on when they change 2022-12-04 10:54:02 -05:00
fabe339215 VoiceOver: Indicate filtered posts, make double tapping expand them 2022-12-03 23:20:19 -05:00
e1886509d3 Filter statuses on profiles 2022-12-03 23:11:09 -05:00
75e9c9f986 Fix home/list filters not applying to lists 2022-12-03 23:11:09 -05:00
a17afe247c Better filter cell and animation for showing filtered post 2022-12-03 23:11:09 -05:00
81abcfcf7b Timeline filtering! 2022-12-03 22:16:43 -05:00
cde3109203 Rename StatusState to CollapseState 2022-12-03 18:21:49 -05:00
fcf95ba8c1 Filters view UI tweaks 2022-12-03 15:22:10 -05:00
16a1e4008b V2 filters API, CoreData, and editing UI 2022-12-03 12:29:11 -05:00
518a8eba0a Start doing filters UI 2022-12-02 22:03:28 -05:00
f1a39c2faa Add follow/unfollow hashtag actions 2022-11-29 23:14:36 -05:00
c6da754875 Indicate when a followed hashtag caused a post to appear in the home timeline 2022-11-29 23:14:36 -05:00
80f9800fd6 Completely replace all items when jumping to present 2022-11-29 20:53:00 -05:00
811aac35d7 Fix timeline statuses not getting deselected when entering split nav
Closes #275
2022-11-29 10:29:40 -05:00
ea6698a2d8 State restoration for non-home timeline pages 2022-11-28 16:33:19 -05:00
c256fb4cbd When refreshing timeline, hide activity indicator as soon as loadNewer completes 2022-11-26 17:33:58 -05:00
21299c8eb8 Fix error when refreshing timeline with no items 2022-11-26 17:33:07 -05:00
23f9e200dc Fix potential crash when trying to save timeline state 2022-11-24 12:14:19 -05:00
366834e2e4 Tweak timeline state restoration to maintain scroll position of center item 2022-11-24 11:05:56 -05:00
40800f964d Fix jump to present not scrolling all the way to the top 2022-11-23 11:58:52 -05:00
c2cb0a0c5a Timeline state restoration 2022-11-23 11:35:25 -05:00
47b838a386 Change timeline gap-filling to do a proper job of maintaining the bottom-relative scroll position 2022-11-21 22:47:44 -05:00
11e81acbc1 Fix toasts not adjusting font for Dynamic Type 2022-11-20 14:15:21 -05:00
c8319d8af2 Remove old and debug code 2022-11-19 13:11:29 -05:00
9ff1452c68 Show jump to present toast if necessary when scene re-appears 2022-11-19 13:09:37 -05:00
ce534c4a05 Actual gap cell implementation 2022-11-19 11:15:14 -05:00
0fddf94292 Timeline jump to present 2022-11-18 20:49:15 -05:00
8276e99d27 Timeline gaps and gap filling 2022-11-18 17:29:55 -05:00
319b5458fc Fix refreshing not loading initial when previous attempt failed
Closes #214
2022-11-09 19:15:08 -05:00
ba032412eb Fix timeline reloading every time VC appears
Caused by changes to TimelineLikeController required to let list
timelines reload from scratch
2022-11-02 22:06:07 -04:00
5de0c034f4 Remove old TimelineTableViewController 2022-11-01 21:11:13 -04:00
b1d83f2746 Switch hashtag/instance/list timelines to use new collection view impl 2022-11-01 21:10:41 -04:00
658c08010d Re-add undo scroll-to-top to timelines/profiles 2022-11-01 20:49:07 -04:00
b755607895 Fix crash when TimelineStatusTableViewCell outlives its containing VC 2022-10-31 17:33:33 -04:00
6bb1f3b7dc Finish converting profiles to collection views 2022-10-28 21:31:18 -04:00
5f410213e2 Start converting profile statuses to collection view 2022-10-28 19:17:33 -04:00
868df25417 Disable pruning offscreen rows in new timelines
I don't think this is actually necessary, the system should kill us
often enough that the amount of items in the data source doesn't become
unmanageable.

Making modifications to the data source in viewDidDisappear was causing
the collection view's contentOffset to change to be scrolled to top
(roughly) when the view became visible again.

Disabling it also fixes several issues caused by updating the data
source even when there were no changes.

Closes #193
Closes #192
Closes #187
Closes #186
2022-10-28 19:05:07 -04:00
8cf217d2ba Fix crash when trying to prune rows before statuses have loaded 2022-10-10 16:21:08 -04:00
c15a5fc90f Fix reblog statuses being selected in timeline 2022-10-10 14:23:27 -04:00
a703b7cc0a Prune offscreen rows on new timeline 2022-10-09 20:11:00 -04:00
412e4a4dc5 Fix public timeline descriptions not working
Closes #182
2022-10-09 19:11:34 -04:00
81e10326d3 Add logging to persistent store 2022-10-09 17:09:55 -04:00
1b186725ce Re-add timeline context menus 2022-10-08 23:47:42 -04:00
bcb3c24027 Fix context menu presentation animation getting clipped in new status cells 2022-10-08 16:53:48 -04:00
ba1300b1b7 Re-add status cell dragging 2022-10-08 15:01:23 -04:00
817ef0c2cc New timeline key commands 2022-10-08 14:53:21 -04:00
18ee621489 Status cell swipe actions 2022-10-08 14:33:07 -04:00
b688631937 Update status cells on status changes 2022-10-06 22:36:55 -04:00
4d654358d7 Extract a bunch of common stuff to StatusCollectionViewCell protocol 2022-10-05 23:19:30 -04:00
24e90de672 Status cell interaction 2022-10-05 22:28:10 -04:00
780e8b09b7 Status cell UI 2022-10-05 21:39:58 -04:00
7085ac01cb Timeline status collection view cell collapsing 2022-10-04 00:02:41 -04:00
81671d73c7 Start converting timeline status to UICollectionViewCell 2022-10-04 00:01:16 -04:00
a38c89a17f Re-add public timeline descriptions 2022-10-01 15:32:06 -04:00
253fb8d27d Extract more things to TimelineLikeCollectionViewController 2022-10-01 15:08:51 -04:00
a682c8f5cc Extract a bunch of timeline view controller stuff to separate protocol 2022-09-24 11:39:12 -04:00
426b31d46c Initial TimelineLikeController + TimelineViewController implementation 2022-09-24 10:49:06 -04:00
5ac76ef9c4 Revert "Maybe fix timeline discontinuities"
This reverts commit 43b4976ed7a7e2d94e61cd12147888f304f1fc43.

That commit reintroduced #166
2022-09-18 22:37:18 -04:00
43b4976ed7 Maybe fix timeline discontinuities
See #174
2022-09-15 20:54:28 -04:00
bbfb3b0a7a Add loading indicator to DiffableTimelineLikeTableViewController 2022-09-12 22:05:19 -04:00
a9e0bffe5f Bump deployment target to iOS 15 2022-06-30 19:04:08 -07:00
10f6a68065 Use new-style self-sizing cells on iOS 16 2022-06-28 17:29:46 -07:00
d3187ce2c4 Move saved instances and hashtags to CoreData 2022-05-10 22:58:30 -04:00
bf8a294676 Split MenuActionProvider from MenuPreviewProvider 2022-05-01 23:05:23 -04:00
d04957ba41 Remove reference counting system
Delete statuses/accounts that haven't been fetched in a week
2022-05-01 21:50:16 -04:00
89a9bfba47 Fix crash when refreshing while logged in to a Pixelfed account
Closes #142
2022-04-06 21:48:04 -04:00
3d0402c1e0 Fix potential deadlock when infinite scrolling is disabled
Fixes crash when used with Pixelfed
2022-04-04 09:59:45 -04:00
1e54235ff5 Hide public timeline description when user begins scrolling rather than
after cell moves offscreen

Fixes description getting dismissed prematurely on iOS 14 and hitching
when the cell moves offscreen
2021-08-15 22:29:14 -04:00
9026f487ec Convert notifications to use DiffableTimelineLikeTableViewController 2021-08-15 19:25:29 -04:00
c0097ba752 Fix potential race condition with DiffableTimelineLikeTableViewController 2021-08-15 18:44:23 -04:00
f109253bba Show toast when there are no new posts 2021-08-15 18:27:30 -04:00
340d13b1fa
Fix crash when reloading list timelines 2021-08-08 10:19:18 -04:00
b781b56efd
Add public timeline descriptions 2021-08-08 10:09:28 -04:00
60c88ded5e Require iOS 15 for Disable Infinite Scrolling 2021-06-27 17:17:39 -04:00
1e7a6af0bf Fix TimelineTableVC item hash including status state
Fixes crash when refreshing on iOS 14
2021-06-27 15:52:22 -04:00
b95819cada Fix crash when switching accounts 2021-06-26 16:42:56 -04:00
dc1ea1bed9 Fix timeline momentum scrolling stopping due to adding footer section 2021-06-26 15:54:10 -04:00
5f9fe505d5 Add pref to disable infinite scrolling on timelines
Closes #125
2021-06-25 23:28:43 -04:00
5b8e97287e Convert TimelineTableViewController to use DiffableTimelineLikeTableViewController 2021-06-20 22:27:38 -04:00
ffe6450b26
Xcode recommendations, use AnyObject instead of class in protocol requirements 2021-05-22 13:44:58 -04:00
edd89450aa Fail gracefully when fetching statuses in timeline controller 2021-04-04 14:43:51 -04:00
2e88b266d9 Prefetch on a background queue to avoid blocking main queue with
CoreData lookups
2021-01-18 14:29:32 -05:00
27b39b79e6 Fix refreshes after no-result refresh not working
Fixes #117
2021-01-13 00:16:33 -05:00
30297c2390 Add multi-window drag and drop to all the things 2020-12-14 18:44:48 -05:00
522c9b2b03 Add multi-window support and auxiliary windows 2020-12-13 22:37:37 -05:00
dfad8740eb
Extract common functionality into TimelineLikeTableViewController 2020-11-15 15:48:49 -05:00
9e15a84006
Add refresh key command 2020-11-14 11:22:47 -05:00