* Add RPC [Barebone, barely works]
Co-Authored-By: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
* refactor connections
* RPC (#223)
* Add error handling and refactor DiscordRPCService methods
* Add Discord RPC customization options and preferences
* Update Discord RPC button labels and clean up comments
* Refactor DiscordRPCService to improve readability by adding braces for null checks
* Refactor ConnectionsPreferences to improve code clarity and organization
* Refactor ConnectionsPreferences to improve code clarity and organization
(cherry picked from commit df42d196368d28c3c9dcee3692f3f9140da7f2a1)
* Feat: implement Discord account management enhancements and RPC restart functionality (#245)
* fix: correct indentation in CastManager for better readability
* feat: implement Discord account management enhancements and RPC restart functionality
(cherry picked from commit b7c50f1f0184dd717c5cc4dee0310053bfb8d613)
* Notification color & icon for DiscordRPC
Co-Authored-By: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
* Change foss variant application id suffix to '.foss' and more (mihonapp/mihon#1831)
- Remove `BuildConfig.PREVIEW`
- Rename `BuildConfig.INCLUDE_ANALYTICS` -> `BuildConfig.ANALYTICS_INCLUDED`
- Rename `BuildConfig.INCLUDE_UPDATER` -> `BuildConfig.UPDATER_ENABLED`
- Rename build property `with-analytics` -> `include-analytics`
- Rename build property `with-updater` -> `enable-updater`
- Add build property to disable code shrink
- Add build property to include dependency info in apk/app bundle
(cherry picked from commit 0893609ad2c4791dc404d72a5e69a2e0373517ae)
* feat(discord): update App/icon & fully works with all screens
* update Discord Rich Presence application ID and icon URLs
* Fix updateDiscordRPC for all screens (also reuse code)
* integrate Discord Rich Presence for WebViewScreen
* feat: ghibli style images for Discord RPC
* optimize code
* further optimize
* supprest useless warning
* refactor: simplify setScreen calls related to lastUsedScreen
* optimize whole file
* a
Co-Authored-By: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
* fix(discord): update download button URL to point to the official website
* feat(discord): allow stop Discord RPC from notification
also improve error handling
* fix(i18n): Torrent server "stop" multi-lang
* Start DiscordRPCService as foreground service on Android O+
This commit modifies the `DiscordRPCService` to start as a foreground service on Android O (API level 26) and above. This change ensures the service continues to run in the background, especially when the app is not in the foreground.
- Added a conditional check using `Build.VERSION.SDK_INT` to detect if the device is running Android O or later.
- If the device is running Android O or later, `startForegroundService` is called instead of `startService` to ensure it runs as foreground service.
- If the device is running a version prior to Android O, `startService` is called.
(cherry picked from commit 869617d8cac3aa8461158f1f9a34b9e29147e8f0)
* fix(discord): episode/chapter formating
* fix(discord): Fix & improve Discord login/accounts
* New webview with DiscordLoginScreen
* Add appbar
* Using Webview directly instead of AndroidView and add clearCookies, browsing navigation
* Using coroutine instead of thread
* Revert service
* use response block
* save preference in coroutine too
* no web navigator
* address comments for DiscordLoginScreen
* Refactor Settings screen & dialog
* Using serialization to parse JSON to avoid blocking API
* Don't clear all cookies and web storage aggressively
* Extract constant
* Fix login
Co-Authored-By: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
* fix(discord): Fix screen crash & token retrievement
* Update images to my liking
* spotless
* small fixes
* Update strings.xml
* Revert "Update images to my liking"
This reverts commit 4ad3b9f84fdada45ee480ae7dc242b6e1b4bc18a.
* small fixes
* hopeful fix + chapter progress
* Update ReaderActivity.kt
* Update ReaderActivity.kt
* remove timestamps
* Remove isNSFW check
because 95% of tachi extensions are rated as +18, even when there is sfw content
* Clean up
* Fix ReaderActivity
* Cleanup Settings
* Fix login
* Fix lag when getting categories
* Fix jump to pages
* Remove old SDK check
* Fix status when back from reading
* Remove pages progress
* Only set necessary action in ReaderActivity
* Using IO coroutine instead
* Add back timestamps
* Fix strings & settings
* Fix crash
* ActivityType
* Adjust description
* refactor Discord settings menu
* Using its own scope
* Optimize the connection waiting
* remove source.isNSFW
* Using screenModelScope
* Fix state access
* add modifier
* sharing OkHttpClient instance for better resource management
* Restart RPC directly via service intent instead of toggling
* remove lint suppression
* add back showProgress
* Fix set Discord status
* Fix Discord login no avatar
* Handle API rate limits and errors in getDiscordUri
* Token-based isLogged checking
* Make Discord token sensitive data and not in backup
* Minor fix
* remove debug message
---------
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
Co-authored-by: Cuong-Tran <cuongtran.tm@gmail.com>
Co-authored-by: Dark25 <nadiecaca2000@gmail.com>
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Co-authored-by: Jery <jery99961@gmail.com>
* Add indicator for source incognito mode
Adds an indicator to the manga info header to show if a source is running in incognito mode.
Also moves the source incognito check logic to `SourceExtensions`.
(cherry picked from commit 5e547efda51cdeaa7bc71198b932c8ac9aecc312)
* Replaced incognito icon with animated glasses_with_hat icon.
This commit introduces an animated vector drawable for the incognito mode icon and updates the related icons in the app.
- Adds `anim_incognito.xml`, a new animated vector drawable for incognito mode.
- Adds `ic_glasses_with_hat_24dp.xml`, a new icon for incognito mode.
- Updates the incognito mode icon in the following places:
- MoreScreen
- ExtensionDetailsScreen
- App notification
- Manga info header
- Updates `SwitchPreferenceWidget` and `TextPreferenceWidget` to accept any type of icons.
(cherry picked from commit 2a28673e078ff15fe0a7c2a030ffc6ce6cbe6b31)
* move incognito icon
* issue: Use stringResource for contentDescription to support localization
* Wrap the ImageVector.vectorResource call in remember to avoid inflating the drawable on every recomposition.
---------
Co-authored-by: Cuong-Tran <cuongtran.tm@gmail.com>
* add color to notification
* add app icon to extension update notification
* add app icon to download error notification
* add large app icon to all the notification
* set large image for chapter update & save image notification
- A dedicated screen in Settings for error list when updating library
- Allow to jump to Error screen if click on notification
- Allow to migrate error entry
- Create error on each entry updated instead of waiting for the whole updating list to finished
- Overwrite entry's error if new error happens after updating
- Clear entry's error if it successfully updated
- Clear un-relevant errors (entry which was removed from Library) on next update
- List of errors can jump to top/bottom or next/previous errors group
- Won't create error file anymore
* Added library update errors screen
(cherry picked from commit 7cf37d52f959ac65f53cf7657563fb4428bd9188)
* Open library update errors screen on clicking library update error notification
(cherry picked from commit d2d22f437a1d61b086f1e19dfbcd2c0a2bc125f4)
* LibraryUpdateErrorScreen's bottom UI with scroll to top/bottom buttons
(cherry picked from commit 859ce54474d456232510e21f4f6795af65489be2)
* migrate to AppBar
* sticky header
* scroll to next/previous group of errors
* insert error entry one by one
* delete error from DB when successfully updated
* clean un-relevant errors from DB on every updates
* fix errors & clean up
* catch exception & fix notification intent
---------
Co-authored-by: ImaginaryDesignation <108343184+ImaginaryDesignation@users.noreply.github.com>
* Add crashlytics to standard builds
(cherry picked from commit 3c611b95fb79e5ac972019b76c7b24f46a3087fd)
* Testing crashlytics
* working
* cleanup
* Revert "Auxiliary commit to revert individual files from 84232c7fe229bf557680a787fa02c055ca18dc66"
This reverts commit 2c9b6277b276f108a25e90e6be9a227440136063.
* Revert "Auxiliary commit to revert individual files from cf3f5fe1586f40fabf5b75a649ab332282608a08"
This reverts commit 708f6b1d3803374b0440d163560a682f0cfc618e.
* Only send crashlytics on Standard & Release/Preview build
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Support Pure dark mode
* Tag using elevated style (non pure-dark-mode) and more vibrant outline color (pure-dark-mode)
* More color for various icons
* Color theme for Metadata screen
* Always animated color change
* Always/Only use dominant color for library/update/upcoming cover's background
* Don't always generate color each time cover loaded (library/browse), only update color when new cover changed on detail page
* Fix the spinner background in Edit Manga Info
* Improve manga's backdrop color
Detail:
* Change Cover's color & ratio preference key to AppState
* using ElevatedSuggestionChip with color
* more icon color
* color theme for MetadataViewScreen
* enable animation by default
* Fix: can't turn off theme cover based
* Won't check pref for theme enabled everytime, instead always generate cover's color to run faster later
* Skip generate cover's vibrant color for browsing mangas if already generated, also won't even trying to read ratio for favorite mangas
* Only generate new seed color when cover loaded in detail page
* only use dominantColor for cover when cover is unable to load
* Don't use elevatedSuggestionChip for darkmode and change border color
* EditMangaInfo: Set Spinner's selected item's background color to transparent
* update chip color
* Colors Palette screen
* Support Amoled Dark Mode by upgrading Material-Kolor to 1.7.0
* improve manga's backdrop color
* only generate color while browsing if option is enabled, aslo fixed the case won't update dominant color if cover changed
* always using theme animation
* update translation
* Using MaterialKolor & Pallete to generate MaterialTheme based on seedColor
* Fix MangaActionRow's color
* Merge ImageRequest methods into one
* add backdrop color
* support dynamic color in EnhancedSource's metadata view
* dynamic color for MetadataViewScreen
* dynamic color for all dialogs
* Remove palette buttons
* add settings preference
* Update MaterialKolor version to 1.6.1 to fix DynamicMaterialTheme & Add PalleteStyle
* split DynamicMaterialTheme content
* Missed text color in Tsumino & Cleanup & revert some unneeded changes
* Change icon color to secondary
* color for EditMangaDialog
* Custom Spinner's Dropdown style
* TextSelectionHandle color
* color for add-tag dialog
* setting for Style & Animate
* Palette does not support Hardware bitmap
* using MaterialTheme instead of DynamicMaterialTheme when no need for color animation
* reduce color on backdrop
* save/load manga's cover color & ratio with Preferences
* Trying to decode bitmap directly from response when coverCache is not available
* Update MangaCover.vibrantCoverColor map with new color
* Hide Style & Animate settings if theme-cover-based is not enable
* Only generate color if theme-cover-based is enabled
* seedColor by vibrantColor from MangaCover: setPaletteColor won't needed (almost), only when failed to load vibrantColor from MangaCover
* seedColor uses remember directly to the hashmap to recompose whenever cover is updated/changed. Drop successState.seedColor
* generate favorite manga's color every time, instead of just update ratio
* Move MangaCoverMetadata to coil
- Preview version now name Beta, use different package & repo
- Drop syDebugVersion, use commitCount
- Fix Firebase analytics for both Release & Preview build
- Create separate variant for Preview build instead of using syDebugVersion
- Preview version showing changelog_debug.xml
- Release version showing changelog_release.xml
* feat: add cross device sync.
* chore: add google api.
* chore: add SY specifics.
* feat: add backupSource, backupPref, and "SY" backupSavedSearches.
I forgot to add the data into the merging logic, So remote always have empty value :(. Better late than never.
* feat(sync): Allow to choose what to sync.
Various improvement and added the option to choose what they want to sync. Added sync library button to LibraryTab as well.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* oops.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* refactor: fix up the sync triggers, and update imports.
* refactor
* chore: review pointers.
* refactor: update imports
* refactor: add more error guard for gdrive.
Also changed it to be app specific, we don't want them to use sync data from SY or other forks as some of the model and backup is different. So if people using other forks they should use the same data and not mismatch.
* fix: conflict and refactor.
* refactor: update imports.
* chore: fix some of detekt error.
* refactor: add breaks and max retries.
I think we were reaching deadlock or infinite loop causing the sync to go forever.
* feat: db changes to accommodate new syncing logic.
Using timestamp to sync is a bit skewed due to system clock etc and therefore there was a lot of issues with it such as removing a manga that shouldn't have been removed. Marking chapters as unread even though it was marked as a read. Hopefully by using versioning system it should eliminate those issues.
* chore: add migrations
* chore: version and is_syncing fields.
* chore: add SY only stuff.
* fix: oops wrong index.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: review pointers.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: remove the option to reset timestamp
We don't need this anymore since we are utilizing versioning system.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* refactor: Forgot to use the new versioning system.
I forgot to cherry pick this from mihon branch.
* chore: remove isSyncing from Chapter/Manga model.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: remove unused import.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: remove isSyncing leftover.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: remove isSyncing.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* refactor: make sure the manga version is bumped.
When there is changes in the chapters table such as reading or updating last read page we should bump the manga version. This way the manga is synced properly as in the History and last_read history is synced properly. This should fix the sorting issue.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
---------
Signed-off-by: KaiserBh <kaiserbh@proton.me>
Co-authored-by: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com>
(cherry picked from commit f72b6e4d7c1f2f93d705402e4d80c94160bef54d)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/App.kt
# app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt
Requires adjusting some file reading to first copy to a temporary file
in cache that we have permissions to read from. This is only applicable for things
like ZIP files where we need an actual File rather than just some Android content
URI shenanigans.
(cherry picked from commit 4fcdde4913df28bbd678ae1be4a2971ed77179d3)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
# source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt