arkon
824713036a
Unify layout for new update and crash screens
...
(cherry picked from commit 01ec26842d552c8915df379fe7d9ce1d71be373d)
2022-12-31 17:19:30 -05:00
AntsyLich
414049033a
Properly fix #8720 ( #8797 )
...
* Partially revert "Move library page EmptyScreens into list/grids"
This partially reverts commit 376bbeb724ca6cb7de53213c478d1750d99c8d2a.
* Properly fix issue 8720
(cherry picked from commit 3251fb36c8f3b12c7ae06ec18fd591eced9e17f6)
2022-12-24 16:35:11 -05:00
stevenyomi
5586cbeb16
Fix browse search query display and keyboard focus ( #8781 )
...
(cherry picked from commit a8230ad574fb5c5dfa22a571862890e414649215)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
2022-12-24 16:34:22 -05:00
Ivan Iskandar
8bab648b44
Pager: Bring back previous snapping behavior ( #8776 )
...
New default LazyList snap behavior is optimized for non-pager use.
(cherry picked from commit 8e1b5b4803b0da76f0ed5091d3fb1b6c3b2359f5)
2022-12-20 15:44:43 -05:00
stevenyomi
f02d41051e
Pass listing query to BrowseSourceScreen ( #8763 )
...
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
2022-12-17 23:32:35 -05:00
Ivan Iskandar
c081efba4b
AdaptiveSheet: Don't blindly consume back event ( #8760 )
...
(cherry picked from commit 9d2d78ae5b659b257f2d565b7e20465eaf011200)
2022-12-17 23:17:20 -05:00
arkon
01993baa90
Move library page EmptyScreens into list/grids
...
It does look awkward due to the lack of filled height within those list/grids though.
Fixes #8720
Fixes #8721
(cherry picked from commit 376bbeb724ca6cb7de53213c478d1750d99c8d2a)
2022-12-17 23:13:55 -05:00
Ivan Iskandar
4243d389f8
App state banner tweaks ( #8746 )
...
* Move download indexing notification to this banner group
* Animate state changes
(cherry picked from commit e20c66b15671db75ed190c2967cdcc78c74db478)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
2022-12-17 22:33:57 -05:00
arkon
dd367f2f70
Better handle status bar light/dark icons based on banner background color
...
(cherry picked from commit 4992f87cb185cfac90aa86f4c4aeb2d0a0385c18)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
2022-12-16 00:50:15 -05:00
Ivan Iskandar
277a0b38bb
Adjust insets handling in tablet UI ( #8711 )
...
* Adds startBar slot in Scaffold to handle nav rail
* Consumes unneeded insets in settings
(cherry picked from commit ca500da4d899815112eadaa6a5f79c9b5e5766af)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt
2022-12-16 00:32:14 -05:00
arkon
623f0e2612
Pull out settings sheet items as reusable composables
...
(cherry picked from commit 7cbe18d325274de22b2bef30869d2cc658b72cc1)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt
2022-12-16 00:23:07 -05:00
Ivan Iskandar
8da293ad91
Move app state banner to the very top ( #8706 )
...
This moves the banners to the root composable and so eliminates the need to
track the app states in every screen.
(cherry picked from commit d97eab03283ea8b686ffa007bfc69224348b24f1)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
2022-12-15 22:36:08 -05:00
arkon
7d871ccfd3
Abstract ChapterSettingsDialog for reuse elsewhere
...
(cherry picked from commit a61e2799dbfd60039b577d7fffc8b6494ba74aba)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt
2022-12-15 22:19:09 -05:00
arkon
68b1012c65
Reuse basic theme preview annotation
...
(cherry picked from commit 1009e15aa61f3a717d0fec8a6d7c2d57aacdd4e1)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/widget/TextPreferenceWidget.kt
2022-12-15 22:06:31 -05:00
stevenyomi
c94505d289
Migrate Accompanist SwipeRefresh to Compose PullRefresh ( #8106 )
...
(cherry picked from commit 2c4ddca38eef8ea3bc7aad290223ebe0e93dbca2)
2022-12-15 21:21:29 -05:00
Ivan Iskandar
270690e513
Track sheet fixes ( #8673 )
...
* Fix Track sheet not being disposed properly
* Change insets handling
(cherry picked from commit 47f079891fe666e2a2c7d91fe1f7fc49981a78f9)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/util/Navigator.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
2022-12-04 15:45:58 -05:00
Ivan Iskandar
726626f2c5
Merge Voyager screens ( #8656 )
...
* Merge Voyager screens
* cleanups
(cherry picked from commit 3d66eaea8373b6ab5d8e8423be227e0452cb0743)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/components/MangaBottomActionMenu.kt
# app/src/main/java/eu/kanade/presentation/more/settings/screen/AboutScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesFilterController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/WhatsNewDialogController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt
# app/src/main/res/layout/main_activity.xml
2022-12-03 13:25:41 -05:00
arkon
9b46395fd8
Minor cleanup
...
(cherry picked from commit 3480b45098dba20377975d5f0368f47cc7df75ab)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
2022-11-28 22:27:31 -05:00
Ivan Iskandar
9384d45282
Use Voyager on Library tab ( #8620 )
...
(cherry picked from commit e14909fff40360bec99acfb80ac7c1100c62ceb9)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt
# app/src/main/java/eu/kanade/presentation/library/LibraryState.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt
2022-11-28 16:03:21 -05:00
Ivan Iskandar
bf9b2ca2ff
Use Voyager on Browse tab ( #8605 )
...
(cherry picked from commit f4ac754d02242f33e78a15f98959d6e59bd967c9)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/SourcesState.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowsePresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt
2022-11-24 18:13:10 -05:00
Ivan Iskandar
aee45b1264
Use Voyager on Updates tab ( #8603 )
...
* Use Voyager on Updates tab
* Fix back press
* Fix selection
(cherry picked from commit acc2312384c6f7e1062e4194ed71bd85d844083a)
2022-11-24 16:41:59 -05:00
arkon
36b1b4ed5f
Avoid concurrency issues when reordering categories
...
Maybe fixes #8372
(cherry picked from commit e2179a66698fe7be4f158b8a63ac1f96bc4e5b28)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreenModel.kt
2022-11-24 16:25:33 -05:00
arkon
37ea7a7d52
Add back track icon onClick and title onLongClick actions
...
Closes #8565
Closes #8536
(cherry picked from commit be5802e47335cded38af67979e45f060e3779595)
2022-11-24 15:47:37 -05:00
arkon
22c828da76
Minor cleanup
...
Mostly just addressing comments from #8452
(cherry picked from commit b1ccebf329e9a9d77894b9d4ff06aeb9d7317acf)
2022-11-16 13:52:29 -05:00
Andreas
0fc9cf6779
Make padding names neutral ( #8531 )
...
(cherry picked from commit 3407eb84c5d4bbb7e5cf71e43fca58d1f297ac53)
2022-11-16 13:33:27 -05:00
arkon
7246671362
Change long press on downloaded chapter icon to open menu
...
Seems like silently deleting things is confusing to some people.
(cherry picked from commit 4f00af3173b9f114c8eb3d4356f50b0bef1bf874)
2022-11-16 13:33:08 -05:00
Ivan Iskandar
33f57f6df7
SearchToolbar: Better physical keyboard support ( #8529 )
...
Make enter keys behave like search key of on-screen keyboard
(cherry picked from commit acd43005dff055564dd6526eaa3f32347408be5c)
2022-11-16 13:25:21 -05:00
arkon
fd527afe5f
Tweak library continue reading button
...
(cherry picked from commit c76d5dd30cbbaa5dafdd03a05e4ec7014e84484d)
2022-11-11 14:19:57 -05:00
Ivan Iskandar
7b1bc790b3
Full Compose MangaController ( #8452 )
...
* Full Compose MangaController
* unique key
* Use StateScreenModel
* dismiss
* rebase fix
* toShareIntent
(cherry picked from commit 18ccde082d5529766ad1297f9850752508805156)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackAdapter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackHolder.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchAdapter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchDialog.kt
# app/src/main/res/layout/track_chapters_dialog.xml
# app/src/main/res/layout/track_controller.xml
# app/src/main/res/layout/track_item.xml
# app/src/main/res/layout/track_score_dialog.xml
# app/src/main/res/layout/track_search_dialog.xml
# app/src/main/res/layout/track_search_item.xml
2022-11-11 13:55:01 -05:00
Ivan Iskandar
5b88385ccc
Voyager on History tab ( #8481 )
...
(cherry picked from commit bc3bb82651e85a8b0584a645e0fa07ab97ab1767)
2022-11-11 11:07:53 -05:00
d-najd
1903453ce7
Add "Play" button on manga in library ( #8218 )
...
* resume manga button in libarary
* work on resume button
* Backup
* work on opening the last read chapter
* backup
* renaming
* fab instead of image
* done with logic
* cleanup
* cleanup
* import cleanup
* cleanup...
* refactoring
* fixing logic
* fixing scopes
* Reworking design
* adding ability to turn on/off the feature
* cleanup
* refactoring, fixing logic, adding filter logic (partial)
* backup
* backup
* logic done
* backup before merge fix
* merge conflict....
* merge conflict...
* reworking ui logic
* removing unnecessary file
* refactoring
* refactoring
* review changes + minor parameter position movement
* commiting suggestion
Co-authored-by: arkon <arkon@users.noreply.github.com>
* fixing minor mistake
* moving ChapterFilter.kt
Co-authored-by: arkon <arkon@users.noreply.github.com>
(cherry picked from commit ba00d9e5d2c00b9cf415932bb2821bf9914fe248)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/components/CommonMangaItem.kt
# app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryPager.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt
2022-11-11 11:07:42 -05:00
zbue
41f99fe3ec
Perform haptic feedback where appropriate ( #8378 )
...
(cherry picked from commit 38c6702b8f88c4e9b0920804df769b86aafd336f)
2022-11-01 13:37:35 -04:00
AntsyLich
762f383fb6
Set softWrap to true again for Pill text ( #8391 )
...
(cherry picked from commit 8b0affe9bd15d05b0aad7033d0069d17fb478852)
2022-11-01 13:37:09 -04:00
zbue
ffa45ffea1
Disable ChapterHeader & ChapterDownloadIndicator click when in selection mode ( #8350 )
...
* Disable `ChapterHeader` click when in selection mode
* Disable `ChapterDownloadIndicator` click when in selection mode
* Review changes
* Merge remote-tracking branch 'origin/master' into patch-7
* Merge remote-tracking branch 'origin/master' into patch-7
* Revert back to old implementation
(cherry picked from commit 8dce7b3e9eee1ea3d4a279e2d2e4ea9d600279a8)
2022-11-01 13:36:28 -04:00
arkon
b2565c7f8b
Clean up library download chapters logic
...
We can probably clean up the same logic in the manga controller at some point too, but that stuff's messy.
Also fixes the spacing issue that the new icon introduced.
(cherry picked from commit 33e90d64497f920be825b803e1342a2e6c937111)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
2022-11-01 13:36:11 -04:00
Swords
dd08da26e8
Add different download options within the Library ( #8267 )
...
* feat: add download options to library
* feat: use max instead of min
* feat: remove download all option
* feat: applied requested changes + rename some functions
* feat: merge downloadAllUnreadChapters and downloadUnreadChapters into one function
* Apply suggestions from code review
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* feat: apply lint suggestions + fix code
feat: apply lint suggestions + fix code
* feat: revert onClickDownload back to onDownloadClicked
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 50b17d5d3416e5c44a4a98f93e9710769e74aa51)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
2022-11-01 12:46:33 -04:00
arkon
f9b49aa7f6
Add warning about F-Droid build support in More screen
...
(cherry picked from commit 725fcbba0e45488c8553f2a5a88fbdfb2a63982c)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt
2022-11-01 12:24:45 -04:00
stevenyomi
e8e7ff55c0
Refactor search toolbar and fix browse source ( #8360 )
...
(cherry picked from commit a078f1ab1bd288d604edd8b8a21dcf2e88f47065)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt
2022-11-01 12:17:26 -04:00
arkon
ad444ac761
Use Compose fast* functions in more places
...
(cherry picked from commit 86c3d8c06469245d061ddaaa86da5793f48e8787)
2022-11-01 12:07:09 -04:00
Ivan Iskandar
c505f31ad3
Tabs: Don't explicitly set text color in the text ( #8365 )
...
The container already provides color option for both states
(cherry picked from commit 156191af4454d756e51e331f67cba7e19efbbb38)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/components/Tabs.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt
2022-11-01 12:06:58 -04:00
arkon
3be06eacaa
Remove redundant preference composables
...
(cherry picked from commit dd1923fe88bbb1e7f838d560806598a4ba2174f8)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/components/Preferences.kt
2022-11-01 12:00:14 -04:00
arkon
81d9ac81ce
Refactor overflow menus into a composable
...
(cherry picked from commit df773ee15c814e03267fdfcd81d4e12d38a3508b)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt
# app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt
2022-11-01 11:43:19 -04:00
Ivan Iskandar
1256646e91
Rebase Scaffold fork ( #8353 )
...
This adds content window insets supports that will be passed to
all components used except top and bottom bar.
(cherry picked from commit 16f9fb2f40e0569c5c22de4a062cd890b4b64d4e)
2022-11-01 11:23:54 -04:00
arkon
b941c34c3f
Use remember var delegates in more places
...
(cherry picked from commit 0849111247d28fa5a74abe6759c992097bfa7109)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt
# app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt
2022-11-01 11:20:34 -04:00
Ivan Iskandar
257d45c598
New Pager implementation ( #8323 )
...
Minimal implementation using new Compose SnapFlingBehavior
(cherry picked from commit f9c25b350ed1eb5cb418e804a829f40ecfb0af2e)
2022-11-01 11:19:07 -04:00
stevenyomi
b2c4fc0ec5
Clean up strings and icons ( #8326 )
...
* Clean up strings and icons
* fix incorrect usages of label_more
* restore strings and reduce usage of android.R
* removing icon desc of FABs anyway as app's not for visual impaired users
(cherry picked from commit 4b60138d41ea33e5e4c3defb0dc626b599216f3f)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt
# app/src/main/java/eu/kanade/presentation/components/MangaBottomActionMenu.kt
# app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
2022-10-29 18:57:56 -04:00
arkon
5e3c9fcf50
Make Compose DropdownMenu overlap the trigger
...
Closes #8329
(cherry picked from commit 69635ee66a9e7f230860bd72f1b4f85836258463)
2022-10-29 18:45:59 -04:00
arkon
e1f841e78a
Use MaterialTheme.shapes in more places
...
(cherry picked from commit 401134fa8ed0e0134e166e2c5f78de09d744a553)
2022-10-29 18:24:09 -04:00
Ivan Iskandar
ab7d9006b2
Touch up manga grid/list items ( #8307 )
...
* Touch up library item touch indicator
Now the touch indicator has the same coverage as the selection indicator.
Experimental Modifier.Node API is used to draw the selection indicator
* Unify library and browse source list item layouts
(cherry picked from commit 87391832bafff1e9f90fdfe064725fe8d1ec0184)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryCoverOnlyGrid.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryGridCover.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryPager.kt
2022-10-29 18:24:01 -04:00
AntsyLich
d0d689b1df
Center the Text inside Pill ( #8304 )
...
(cherry picked from commit 37c55abc2ac464675c278bb9bc7abeced189b834)
2022-10-29 17:26:53 -04:00