Commit Graph

5518 Commits

Author SHA1 Message Date
arkon
7798186c32 Drop support for extension-lib 1.3 2023-08-04 10:35:57 -04:00
arkon
9dc66c7c8d Combine tracking OAuth login activities 2023-08-04 10:35:47 -04:00
arkon
10b0ef9b6d Dismiss extension update notification if all updates installed 2023-08-02 18:00:06 -04:00
arkon
81cd765543 More refactoring of expected next update logic 2023-07-30 19:13:16 -04:00
arkon
c9a1bd86b5 Refactor some Screens to be classes
Not really much point in keeping these as singletons.
Hopefully allows for these to be GC-ed after closing them.
2023-07-30 19:13:16 -04:00
Alessandro Jean
dfbbbadfac
Show ellipsis in longer OSS library names (#9780)
Show ellipsis in longer OSS library names.
2023-07-30 17:39:37 -04:00
arkon
0f21d16263 Minor cleanup 2023-07-30 10:08:51 -04:00
arkon
5718983f41 Update benchmarking dependencies 2023-07-29 22:48:56 -04:00
arkon
f7b335e4fb Set useDefaultDebugSigningConfigForProfileableBuildtypes flag
Related to #9774
2023-07-29 19:47:54 -04:00
arkon
aa6937baf2 Disable profiling on preview builds
Related to #9774
2023-07-29 18:52:05 -04:00
arkon
cd91ea9b77 Remove need for SQLDelight primitive adapters 2023-07-29 16:14:23 -04:00
arkon
6a558ad119 Upgrade to SQLDelight 2 2023-07-29 15:32:09 -04:00
arkon
90325d48aa Subscribe to download queue state changes in UpdatesScreen 2023-07-29 14:26:36 -04:00
stevenyomi
e2abf283fe
Don't show future timestamps as Recently (#9773) 2023-07-29 14:09:08 -04:00
arkon
db788d519d Avoid badly wrapped buttons in DuplicateMangaDialog
Fixes #9767
2023-07-29 12:14:11 -04:00
arkon
f3e9d5f346 Show feedback message when downloads index manually invalidated
Closes #9768
2023-07-29 12:09:00 -04:00
arkon
fd30c0adcd Avoid showing duplicate entry dialog for same entry
Fixes #9772
2023-07-29 12:07:13 -04:00
arkon
3ad4f1114a Cleanup related to fetch interval display 2023-07-29 10:29:53 -04:00
arkon
fe90546821 Remove relative timestamps setting 2023-07-29 10:03:16 -04:00
arkon
3892c4caac Minor cleanup 2023-07-29 09:51:51 -04:00
Quang Kieu
cb639f4e90 Update Manga in Expected Period (#5734)
* Add Predict Interval Test

* Get mangas next update and interval in library update

* Get next update and interval in backup restore

* Display and set intervals, nextUpdate in Manga Info

* Move logic function to MangeScreen and InfoHeader

Update per suggestion

---------

Co-authored-by: arkon <arkon@users.noreply.github.com>
2023-07-28 23:10:02 -04:00
arkon
6d69caf59e Show help banner when Cloudflare captcha page is shown in WebView 2023-07-28 23:09:52 -04:00
arkon
cdc1c5efa3 Better handle saving animated drawables 2023-07-26 23:26:58 -04:00
arkon
77bfd0c099 Don't attempt to show non-bitmap image in notification when saving
Fixes #9758
2023-07-26 23:09:33 -04:00
arkon
8ff0c9d61a Allow more flexible custom preference composables 2023-07-26 22:57:15 -04:00
arkon
b6620434b3 Bump dependencies 2023-07-26 22:56:49 -04:00
arkon
abae9bf37d Minor cleanup 2023-07-23 20:03:37 -04:00
arkon
2556e9f08c Refactor duplicate chapter number formatters 2023-07-23 18:09:08 -04:00
arkon
ee26d6dffd Remove some uses of color resources 2023-07-22 18:56:45 -04:00
KaiserBh
7b2764e8f7
Refactor backup and restore to support cross device sync. (#9699)
* refactor: backup and restore to support cross device sync.

* chore: Updated string resources

* refactor: change function name.

* refactor: Use URI SyncHolder.kt not needed anymore.
2023-07-22 18:39:56 -04:00
arkon
46e3b9e40d Use previously updated track item when binding start date
Fixes #9743
2023-07-22 09:32:17 -04:00
arkon
cf14831fbe Clean up preference extensions/items a bit 2023-07-19 21:57:22 -04:00
arkon
7a4680603d Avoid triggering new search for same query in global search 2023-07-19 20:31:46 -04:00
Ivan Iskandar
5c73045aa4
Don't require deeplink ext target to be pinned (#9740) 2023-07-19 19:54:06 -04:00
arkon
ac306547a0 Bump dependencies 2023-07-18 19:12:04 -04:00
arkon
3f868c0435 Use correct sources when triggering new global search
Actually fixes #9724
2023-07-18 18:09:31 -04:00
arkon
262ce3473f Increase max lines for title in global search to 3
Closes #9729
2023-07-16 22:24:14 -04:00
arkon
43b9b104f5 Remove fast scrollbar from some unnecessary places 2023-07-16 22:19:50 -04:00
arkon
c7f0a54a37 Trigger new search on source filter change
Fixes #9724
Could be cleaned more though.
2023-07-16 22:19:33 -04:00
arkon
ca789dca0e Dedupe SearchScreenModels 2023-07-16 19:44:32 -04:00
arkon
ef7b285151 Minor refactoring 2023-07-16 19:18:38 -04:00
arkon
dd3ca0c131 Replicate global search filters to migrate screen
Still needs better refactoring to dedupe all of this stuff though...
2023-07-16 17:09:59 -04:00
arkon
8b46e8edad Dedupe Global/MigrateSearchContent composables 2023-07-16 16:43:26 -04:00
arkon
30f845139d Use consistent extension icon URLs
Better caching between versions.
2023-07-16 15:44:36 -04:00
arkon
818471b7e1 Set start date when tracker is bound if any chapters are already read
Closes #6734
2023-07-16 15:01:04 -04:00
arkon
a3a3f44056 Constrain reader sheet to max 75% of height 2023-07-16 09:59:17 -04:00
arkon
22c6dbda3f Replace reader sheet dropdowns with chips 2023-07-16 09:58:52 -04:00
arkon
34f7caa0fc Use Material3 chips 2023-07-16 09:11:57 -04:00
arkon
01553b1ed8 Don't update chapter progress if current page is errored
Closes #5355
2023-07-16 09:11:57 -04:00
AntsyLich
ec08ba05fc
Finish up reader reading mode settings compose migration (#9721) 2023-07-15 15:47:01 -04:00
arkon
30bea8b753 Replace library sheet display modes with FlowRow of Chips 2023-07-15 14:31:13 -04:00
arkon
09e4b5a9cd Replace some reader sheet settings with FlowRow of Chips 2023-07-15 14:27:30 -04:00
arkon
5467104b95 Fix window undimming when reader custom filter settings are open 2023-07-15 13:23:25 -04:00
arkon
1cf7f9be54 Use segmented buttons for reader background setting in sheet 2023-07-15 13:05:06 -04:00
arkon
fb99577836 Implement showing selected per-series reader settings 2023-07-15 12:39:36 -04:00
arkon
28131ac135 Remove legacy settings sheet
The per-series settings aren't quite functional yet, but they're also
accessible outside of the sheet.
2023-07-15 11:14:18 -04:00
arkon
e40b8d537c Move all pager/webtoon reader setting to Compose sheet 2023-07-15 10:47:56 -04:00
arkon
12e7ee9d0c Tweak global search source filtering
Pinned only setting is removed in favor of the UI in the global search screen itself, which defaults to pinned only.
This needs more UX improvements, but I'm not really sure what it should be like right now.
2023-07-15 10:09:46 -04:00
arkon
54733e6ceb Mark some state data classes as immutable 2023-07-15 09:54:29 -04:00
arkon
a629db2884 Address some build warnings 2023-07-14 23:08:45 -04:00
zaghdaneh
cbcec8c4d9
Add filters to Global search (#9691)
* add pinned and available filter chips to global search

* split filter predicate into seperate function

* change the global search available filter to has Results

* reordering of imports
2023-07-14 22:49:14 -04:00
zaghdaneh
0fffde50ff
Fix to multiple chapter download incorrect state (#9707)
add subscription to download manager queue state flow
2023-07-12 23:09:15 -04:00
arkon
8775596a82 Use system APIs to localize percentage numbers 2023-07-11 22:32:20 -04:00
arkon
2f0133986a Move boolean reading mode prefs to Compose sheet
Also allow webtoon side padding to be any amount between 0 - 25%.
2023-07-11 22:24:16 -04:00
AntsyLich
3bd2cad45f
Change the wording to "Retry" when page fails to load. (#9701) 2023-07-11 09:15:38 -04:00
AntsyLich
48f7a2de41
Actually retry when a page fails to load in Browse screen (#9700) 2023-07-11 08:08:25 -04:00
arkon
3aa6e7ae0e Fix swipe action preference labels 2023-07-10 22:23:05 -04:00
arkon
813d7e49cd Remove unused tabbed sheet layouts/classes 2023-07-10 18:55:20 -04:00
arkon
710ebfb7a5 Initial migration of general reader settings to Compose 2023-07-10 18:42:35 -04:00
arkon
87bdee5990 Move SettingsItems composables to presentation-core 2023-07-10 17:25:52 -04:00
arkon
efabe801be Refactor chapter tracking logic
Could probably call this if we ever make it update tracking on manually
marking chapters as read.
2023-07-10 17:13:58 -04:00
arkon
9a817e49be Set proper defaults for new table columns 2023-07-10 16:44:48 -04:00
KaiserBh
a577f5534f
Database changes to support library syncing (#9683)
* feat: added migrations.

* feat: create triggers, account for new installs.

* feat: update mappers to include the new field.

* feat: update backupManga and backupChapter.

Include the new fields to be backed up as well.

* feat: add sql query to fetch all manga with `last_favorited_at` field.

* feat: version bump.

* chore: revert and refactor.

* chore: forgot to lower case the field name.

* chore: added getAllManga query as well renamed `fetchMangaWithLastFavorite` to `getMangasWithFavoriteTimestamp`

* chore: oops that's not meant to be there.

* feat: back fill and set last_modified_at to not null.

* chore: remove redundant triggers.

* fix: build error, accidentally removed insert.

* fix: build error, accidentally removed insert.

* refactor: review pointer, make fields not null.
2023-07-10 15:52:57 -04:00
Ivan Iskandar
0759936226
Remove scrollable animation workaround (#9690)
Reverts ba93060e59
Related https://android-review.googlesource.com/c/platform/frameworks/support/+/2239762
2023-07-09 14:08:58 -04:00
arkon
1e3d9a00f2 Handle chapter read status in correct order
Fixes #9687
2023-07-09 09:54:36 -04:00
arkon
226272f686 Refactor reader progress/history logic 2023-07-08 18:05:00 -04:00
arkon
16cbcecd99 Fix download ahead
Fixes #9669
2023-07-08 17:56:15 -04:00
arkon
b008223661 Minor reorganization 2023-07-08 17:47:10 -04:00
arkon
f8cf3db4a4 Allow download ahead even if entry isn't favorited 2023-07-08 17:46:48 -04:00
arkon
8cc42bce5a Tweak chapter swipe directions and icon color 2023-07-08 15:55:53 -04:00
Ivan Iskandar
8287c9d193
MangaChapterListItem: Replace swipe action method (#9682)
Using swipe (the library) and added haptic feedback
2023-07-08 10:02:20 -04:00
arkon
d32409bd6e Fix up icon direction when RTL 2023-07-07 19:58:53 -04:00
arkon
cf3f2d0380 Adjust manga FAB to only say "Start" if there's no unread chapters in unfiltered list
Closes #9479
2023-07-07 17:57:29 -04:00
arkon
53c6230afe Change auto clear cache to occur on app launch instead
Fixes #9564

Avoids the issue of clearing the cache when the app is backgrounded despite being in the reader.
We could do a job on idle, but we'd still need to be careful around whether the reader is active,
so this is just simpler considering it's a separate activity.
2023-07-07 17:46:39 -04:00
Semen
4882896f4d
Add function to delete downloaded chapters when migrating manga (#9621)
add function to delete downloaded chapters when migrating manga and getFlagsFromPositions fix
2023-07-07 09:57:02 -04:00
arkon
6fe5e6e21b Save reader progress on every page change
Fixes #9668
Could probably refactor this a bit more, but the reader view model stuff is a mess in general anyway.
2023-07-05 18:57:57 -04:00
arkon
8c5496b53f Configure external-files-path for files provider
Maybe fixes #9660. Why do Chinese companies insist on breaking things?
2023-07-05 18:38:32 -04:00
arkon
3125d78706 Remove some dead code 2023-07-01 14:54:35 -04:00
arkon
bb8f3c63f1 Remove usage of savedInstanceState for storing reader menu visibility state 2023-07-01 12:47:20 -04:00
arkon
44cc6f11c7 Fix crash when tapping reader in long strip mode before RecyclerView is created 2023-07-01 10:36:46 -04:00
arkon
bae391c2c1 Replace deprecated ProgressDialog
Fixes #8223
2023-07-01 10:36:20 -04:00
arkon
b79ef5dc79 Address some deprecation warnings 2023-06-30 22:14:17 -04:00
LagradOst
d99f4697e8
Fixed scrolling on the background using long strip (#9654)
Update WebtoonFrame.kt
2023-06-30 21:56:35 -04:00
stevenyomi
bb3fdef40b
Browse Source: clear search query when changing listing (#9652) 2023-06-29 22:39:43 -04:00
Alessandro Jean
2a7cca6ea4
Show a progress indicator while checking for updates in the about screen (#9641)
* Show a progress indicator while checking for updates.

* Remove a unused import.

* Remove the initial toast.
2023-06-27 22:14:31 -04:00
Alessandro Jean
6ed2748846
Show open source library license in a custom screen (#9645)
Show open source library license in a custom screen.
2023-06-26 22:28:14 -04:00
Alessandro Jean
8a5e443ca5
Make source preferences' titles multiline (#9644)
Make source preferences' titles multiline.
2023-06-26 14:05:22 -04:00
arkon
a07e0df815 Use same icons as action bar in swipe actions 2023-06-25 14:50:48 -04:00
arkon
88e9fefa59 Retry LibraryUpdateJob later if Wi-Fi condition not met 2023-06-25 14:31:28 -04:00
arkon
c0fd47b066 Retry DelayedTrackingUpdateJob up to 3 times if all items not updated 2023-06-25 14:31:28 -04:00
Denny Rodrigues do Carmo
ee684cbef5
Fix download ahead while reading functionality (#9640)
Correct condition for downloading next chapter
2023-06-25 14:18:54 -04:00
arkon
7d4af1f8cc Don't affect reader toolbars/sheets when using custom brightness
Closes #8444
You should be able to tap to bring up the menus even if the brightness is too low.
2023-06-24 12:56:45 -04:00
arkon
fe82cdb9c8 Migrate ReaderColorFilterSettings to Compose
It'll eventually be a tab with the other settings again once the other tabs are also
migrated over so it's just a single Compose sheet.
2023-06-24 12:51:10 -04:00
arkon
b354e37cc3 Refactor grid size slider composable for reuse 2023-06-24 11:23:06 -04:00
arkon
f344831d58 Use our own translation for "OK"
I missed this in the PR that it came with, but I guess it'll be useful if we go multiplatform.
2023-06-24 10:38:34 -04:00
Semen
2eca8511cb
Trackers empty scores start starts from middle (#9624)
* Trackers empty scores start starts from middle

* Trackers empty scores start starts from middle

* Trackers empty scores start starts from middle
2023-06-24 10:37:20 -04:00
arkon
f2b0d74b4c Migrate ReaderPageSheet to Compose 2023-06-23 23:17:47 -04:00
arkon
42bc2b07ce Minor cleanup 2023-06-23 22:39:59 -04:00
Shamicen
fcfa62f220
Better handle decimal chapter numbers and add categories in ComicInfo.xml files (#9604)
* Serialize whole chapter numbers without decimal point and add library categories to genre

* added Tachiyomi specific ComicInfo Category field

* lint

* implemented requested changes
2023-06-23 17:56:01 -04:00
Ivan Iskandar
25b0458930
composed Modifier changes (#9631)
Referring at the examples and other internal usages, the
resulting stateful Modifier should be separated from
all the previous Modifier chain.
2023-06-23 17:54:01 -04:00
Ivan Iskandar
6808fbbb21
Use lite compose-ui-tooling module on release builds (#9630)
The size reduction is minuscule but it's there.
2023-06-23 08:26:35 -04:00
zaghdaneh
b36b3bfcab
Remove manga from trackers (#9535)
* Dialog for service tracker removal added, anilist query prepared

* added API delete requests for Mal and Kitsu

* implement and fix tracker delete for anilist, shikimori, mangaupdates

* implement and test mal delete request

* Update to dialog text to reflect current tracker

* finish kitsu api request and block bangumi tracker removal

* Change delete flag into interface, localise strings, clean up logs

* Add shikimori delete compatibility for already existing entries

* update track delete dialog prompt to include checkbox, update strings

* Update i18n/src/main/res/values/strings.xml

Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>

* Update i18n/src/main/res/values/strings.xml

---------

Co-authored-by: unknown <zaghdane@fireflow.de>
Co-authored-by: arkon <arkon@users.noreply.github.com>
Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
2023-06-22 22:06:43 -04:00
Ivan Iskandar
b4393ff741
Update core-splashscreen (#9629) 2023-06-22 21:59:17 -04:00
Ivan Iskandar
740e370465
Bump compile SDK version 34 (#9625) 2023-06-22 14:20:12 -04:00
arkon
0871208023 Avoid crash when trying to open random entry but categories are still loading
Fixes #9610
2023-06-15 22:16:31 -04:00
arkon
ee95c1439f Blur manga info header image
Similar to J2K. This only applies on Android 12+.
2023-06-13 20:36:33 -04:00
arkon
e323f3c25a Don't update last page read/read state of chapter if Incognito Mode is enabled
Actually closes #7228, which I forgot was about history more than trackers.
2023-06-13 19:30:02 -04:00
arkon
9766399539 Don't update trackers after reading a chapter if Incognito Mode is enabled
Closes #7228
2023-06-13 18:51:07 -04:00
Simon
dddba7bb6f
Filter out non-downloaded chapters in reader when Downloaded Only is enabled (#9568)
* FIxed Issue #5463 - DownloadedOnly Bug

* Changes according to Feedback

* Changes according to Feedback

---------

Co-authored-by: AlphiGhost <71730726+AlphiGhost@users.noreply.github.com>
2023-06-10 12:48:15 -04:00
Ivan Iskandar
9ec8d770ea
MangaChapterListItem: Increase swipe action touch slop (#9598) 2023-06-10 12:48:03 -04:00
Two-Ai
cf777d9893
Cleanup MangaScreenModel successState usage (#9582)
* Refactor updateSuccessState

- Convert to inline function
- Use when for type safety if we add other MangaScreenState types

* Replace equivalent expressions with updateSuccessState

* Replace safe cast in MangaScreen
2023-06-09 23:11:02 -04:00
arkon
841f80f935 Add share menu item in reader
Closes #9510
2023-06-09 22:52:49 -04:00
arkon
39a7356ed1 Directly track current WebView URL instead of relying on state
State approach doesn't work well for client-side routed apps like MangaDex.

Fixes #9576
2023-06-09 22:45:13 -04:00
arkon
34b9c82cd0 Remove General settings section 2023-06-04 17:07:29 -04:00
arkon
405a75438a Remove per-category display mode
There seems to be little value in this feature, and juggling flag masks is annoying.
Per-category sorting is still a thing, but could be refactored away from the flag in the feature.
2023-06-04 16:59:21 -04:00
Ivan Iskandar
39e4568460
ReaderProgressIndicator: Convert to Compose (#9574) 2023-06-03 13:11:41 -04:00
arkon
531e1c62bb Hide release period update restriction in non-dev builds until ready 2023-06-02 18:23:31 -04:00
arkon
1a1f16f44a Bump dependencies 2023-05-31 22:48:13 -04:00
arkon
431f8772f8 Address minor build warnings 2023-05-31 22:47:31 -04:00
arkon
8a5382042c Fix misleading release grace period "Default" options 2023-05-31 18:52:36 -04:00
arkon
8f4bc71cf7 Remove confirm exit option
Redundant with predictive back, but also just sort of pointless since it doesn't help
with any sort of app state retention.
2023-05-31 18:51:01 -04:00
Two-Ai
0ac38297f4
Replace RxJava in extension installer (#9556)
* Replace RxJava in extension installer

Replace common downloadsRelay with Map of individual StateFlows

* Drop RxRelay dependency

* Simplify updateAllExtensions

* Simplify addDownloadState/removeDownloadState

Use immutable Map functions instead of converting to MutableMap
2023-05-30 10:25:20 -04:00
arkon
f48f212001 Minor cleanup 2023-05-27 23:27:02 -04:00
Quang Kieu
c90f344910
Add setting and calculate for update interval (#9399)
* Add Grace Period value and settings

* Add functions to calculate nextUpdate

* update per review

* Move more into SetMangaUpdateInterval, keep wrapper
2023-05-27 23:01:36 -04:00
Ivan Iskandar
a458bd9fdb
Update Glance v1.0.0-beta01 (#9551) 2023-05-27 22:59:21 -04:00
arkon
ed5a56be60 Set reader chapter name to marquee if too long
Closes #7159
2023-05-27 19:15:11 -04:00
arkon
899fe57f15 Slightly tweak MangaScreen refresh indicator
Related to #7813. It still starts below the status bar, but it looks a bit less weird.
2023-05-27 19:06:04 -04:00
arkon
bac42edabb Add debug screen to copy backup file schema
Closes #8544
2023-05-27 18:53:11 -04:00
arkon
8735f3566f Fix bookmarked chapters being deleted after manually marked as read
Fixes #9520
2023-05-27 18:30:59 -04:00
arkon
46efd4c134 Fix some crashes 2023-05-27 09:53:01 -04:00
arkon
dfd38db7e3 Use primitive state holders 2023-05-27 09:22:31 -04:00
arkon
929a881943 Simplify chapter item composable a bit
Closes #9442 because I just removed the rounding entirely...
2023-05-26 23:02:16 -04:00
arkon
152fdec855 Minor cleanup and remove unused dependencies 2023-05-26 22:52:00 -04:00
Artemis-CtrlAltDel
9c07451d95
fix: grid size slider (#9542) 2023-05-26 22:41:22 -04:00
arkon
e3b2720924 Remove redundant inset handling in AdaptiveSheet
The Dialog is handling it anyway, so this doesn't really do anything useful.
We might need to add this back if Dialog actually handles edge-to-edge properly.
2023-05-24 18:10:17 -04:00
Two-Ai
3ae1e37c40
Replace RxJava in Downloader (#9256)
* Rename removeFromQueueByPredicate to removeFromQueueIf

Follow-up to PR comment in #9511

* Make Download hashCode stable

Mutating pages would previously change the Download hashCode, which
breaks HashMap lookups.

* Convert Donwloader subscription to coroutine

Replace downloadsRelay with activeDownloadsFlow. Instead of managing
a PublishRelay independent from the queue, derive a Flow of active
downloads directly from the queue StateFlow. (This will allow
updating the queue without pausing the downloader, to be done in a
follow-up PR.)

When a download completes successfully, the downloads is removed from
queueState. This updates activeDownloadsFlow and causes the
downloaderJob start the download job for the next active download.

When a download fails, the download is left in the queue, so
queueState is not modified. To make activeDownloadsFlow update
without a change to queueState, use transformLatest and use the
Download statusFlows to suspend until a download reaches the ERROR
state.

To avoid stopping and starting downloads every time
activeDownloadsFlow emits a new value, maintain a map of current
download Jobs and only start/stop jobs in the difference between
downloadJobs and activeDownloads. To make sure all child download
jobs are cancelled when the top-level downloader job is cancelled,
use supervisorScope.

* Remove obsolete main thread references in Downloader

Thread safety of the queue state used to be guaranteed by running all
queue mutation on the main thread, but this has not been true for
some time. Since the queue state is now backed by a StateFlow,
queueState can be safely updated by any thread.
2023-05-24 18:02:27 -04:00
arkon
5a9889b562 Upgrade Compose
Co-authored-by: ivaniskandar <ivaniskandar@users.noreply.github.com>
2023-05-21 11:21:32 -04:00
arkon
5ca7c39751 Replace Cascade with our own somewhat janky implementation 2023-05-21 11:02:56 -04:00
arkon
44609c494c Use AppBarActions in more places 2023-05-20 22:47:16 -04:00
arkon
a4d86a2e1e Enable predictive back gesture for Android 13 (behind developer option)/14+ 2023-05-20 16:16:19 -04:00