mirror of
https://github.com/mihonapp/mihon.git
synced 2026-10-22 16:39:45 -07:00
* Add support for MangaBaka Note: missing a client ID which should be added by the project owner. * Fix typo causing token refresh to fail The field is called `refresh_token` not `refreshToken`, so all token refreshes would fail with a 401. * Use user-preferred score type Currently, this only set once on login. When selecting a different score type on MangaBaka, users (currently) will have to log out and log in again in order for Mihon to refetch the score setting. This appears to be what Mihon's AniList implementation does as well, so I followed that. * Fix score preference Didn't get caught during the rebase. * Fix finish_date * Fix dates appearing offset Timezone shenanigans meant Mihon was sending an ISO 8601 string for the UTC timezone which lead to issues in non-UTC timezones. For example: 1. User in UTC+1 selects 2026-03-22 2. Date picker returns 2026-03-22T00:00:00+01:00 3. MangaBakaApi converts that to an instant, converting it to UTC: 2026-03-21T23:00:00Z 4. MangaBaka receives that and sets all time components to 0 5. Mihon (when opening the track sheet next) receives: 2026-03-21T00:00:00Z 6. Mihon renders that as 2026-03-21 I figured out that MangaBaka accepts date-only strings as well, so we just send those now. * Remove fetching of total_chapters from MangaBaka Currently, this information is not what Mihon needs for automatic marking as COMPLETED since MangaBaka considers this an ongoing tally of volume-published chapters rather than the final chapter number of a title. If anyone other than me used this code: Probably will have to unlink & relink MB entries to get rid of the total_chapters data, not sure. MangaBaka is currently considering a request from me to potentially change this, but currently it's not what we need. * Fix start date being reset on each read chapter Admittedly a silly oversight. The other date-supporting trackers (AL, MAL, Kitsu) use this check as opposed to `>= 0.0`. * Add id: prefix search for MangaBaka * Use new /v1/my/profile endpoint Kindly added by the developers after my request <3. * Change tracker ID to 11 * Remove unused import * Identify Mihon in UA on all requests * Use new `published.start_date` field for search * Change Mihon's User Agent string for MangaBaka - use MR.strings.app_name to avoid manual work for forks - include app ID & commit sha for further distinction * Add Changelog entry * Add Mihon client ID * Add OAuth state query param This is?/will be? required by MangaBaka's auth provider and caused linking issues for anyone who tried to link with MB in the past two weeks or so. * Update MangaBaka API URL Changed as per MB announcement from 2026-05-27 * Use `titles` instead of old `title` * Make title selection a method on MangaBakaItem * Include ID in fallback title for easier reporting Makes it a lot more intuitive for users. Also reworded the message to more clearly direct users to the Mangabaka Discord server instead of sounding like an instruction to contact some "mangabaka" user in the Mihon Discord. * `titles` is nullable At least I noticed this before it was merged... * Fix MangaBaka brand name Co-authored-by: BrutuZ <7104931+BrutuZ@users.noreply.github.com> * Remove Hikka comment * Put MangaBaka at the top of the tracker list AntsyLich decreed it to be like this. Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> * Add display name support from #3533 * Fix changelog * Rename MB icon to brand_mangabaka.webp --------- Co-authored-by: BrutuZ <7104931+BrutuZ@users.noreply.github.com> Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
254 lines
10 KiB
XML
254 lines
10 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools">
|
|
|
|
<!-- Internet -->
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
|
|
<!-- Storage -->
|
|
<uses-permission
|
|
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
|
tools:ignore="ScopedStorage" />
|
|
|
|
<!-- For background jobs -->
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
|
|
|
<!-- For managing extensions -->
|
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
|
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
|
|
<uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" />
|
|
<!-- To view extension packages in API 30+ -->
|
|
<uses-permission
|
|
android:name="android.permission.QUERY_ALL_PACKAGES"
|
|
tools:ignore="QueryAllPackagesPermission" />
|
|
|
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
<uses-permission
|
|
android:name="android.permission.READ_APP_SPECIFIC_LOCALES"
|
|
tools:ignore="ProtectedPermissions" />
|
|
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
|
|
|
<application
|
|
android:name=".App"
|
|
android:allowBackup="false"
|
|
android:enableOnBackInvokedCallback="true"
|
|
android:hardwareAccelerated="true"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:label="@string/app_name"
|
|
android:largeHeap="true"
|
|
android:localeConfig="@xml/locales_config"
|
|
android:networkSecurityConfig="@xml/network_security_config"
|
|
android:preserveLegacyExternalStorage="true"
|
|
android:requestLegacyExternalStorage="true"
|
|
android:roundIcon="@mipmap/ic_launcher"
|
|
android:supportsRtl="true"
|
|
android:theme="@style/Theme.Tachiyomi">
|
|
|
|
<activity
|
|
android:name=".ui.main.MainActivity"
|
|
android:exported="true"
|
|
android:launchMode="singleTop"
|
|
android:theme="@style/Theme.Tachiyomi.SplashScreen">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
|
|
<!-- Legacy deeplink to add extension store -->
|
|
<intent-filter android:label="@string/action_addExtensionStore">
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<data android:scheme="tachiyomi" />
|
|
<data android:host="add-repo" />
|
|
</intent-filter>
|
|
|
|
<!-- Deeplink to add extension store -->
|
|
<intent-filter android:label="@string/action_addExtensionStore">
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<data android:scheme="mihon" />
|
|
<data android:host="extension-store" />
|
|
</intent-filter>
|
|
|
|
<!-- Open backup files -->
|
|
<intent-filter android:label="@string/pref_restore_backup">
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<data android:scheme="file" />
|
|
<data android:scheme="content" />
|
|
<data android:host="*" />
|
|
<data android:mimeType="*/*" />
|
|
<!--
|
|
Work around Android's ugly primitive PatternMatcher
|
|
implementation that can't cope with finding a . early in
|
|
the path unless it's explicitly matched.
|
|
|
|
See https://stackoverflow.com/a/31028507
|
|
-->
|
|
<data android:pathPattern=".*\\.tachibk" />
|
|
<data android:pathPattern=".*\\..*\\.tachibk" />
|
|
<data android:pathPattern=".*\\..*\\..*\\.tachibk" />
|
|
<data android:pathPattern=".*\\..*\\..*\\..*\\.tachibk" />
|
|
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.tachibk" />
|
|
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.tachibk" />
|
|
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.tachibk" />
|
|
</intent-filter>
|
|
|
|
<!--suppress AndroidDomInspection -->
|
|
<meta-data
|
|
android:name="android.app.shortcuts"
|
|
android:resource="@xml/shortcuts" />
|
|
</activity>
|
|
|
|
<activity
|
|
android:name=".crash.CrashActivity"
|
|
android:exported="false"
|
|
android:process=":error_handler" />
|
|
|
|
<activity
|
|
android:name=".ui.deeplink.DeepLinkActivity"
|
|
android:exported="true"
|
|
android:label="@string/action_search"
|
|
android:launchMode="singleTask"
|
|
android:theme="@android:style/Theme.NoDisplay">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEARCH" />
|
|
<action android:name="com.google.android.gms.actions.SEARCH_ACTION" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="eu.kanade.tachiyomi.SEARCH" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:mimeType="text/plain" />
|
|
</intent-filter>
|
|
<intent-filter android:label="@string/app_settings">
|
|
<action android:name="android.intent.action.APPLICATION_PREFERENCES" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
|
|
<meta-data
|
|
android:name="android.app.searchable"
|
|
android:resource="@xml/searchable" />
|
|
</activity>
|
|
|
|
<activity
|
|
android:name=".ui.reader.ReaderActivity"
|
|
android:exported="false"
|
|
android:launchMode="singleTask">
|
|
<intent-filter>
|
|
<action android:name="com.samsung.android.support.REMOTE_ACTION" />
|
|
</intent-filter>
|
|
|
|
<meta-data
|
|
android:name="com.samsung.android.support.REMOTE_ACTION"
|
|
android:resource="@xml/s_pen_actions" />
|
|
</activity>
|
|
|
|
<activity
|
|
android:name=".ui.security.UnlockActivity"
|
|
android:exported="false"
|
|
android:theme="@style/Theme.Tachiyomi" />
|
|
|
|
<activity
|
|
android:name=".ui.webview.WebViewActivity"
|
|
android:configChanges="uiMode|orientation|screenSize"
|
|
android:exported="false" />
|
|
|
|
<activity
|
|
android:name=".extension.util.ExtensionInstallActivity"
|
|
android:exported="false"
|
|
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
|
|
|
<activity
|
|
android:name=".ui.setting.track.TrackLoginActivity"
|
|
android:exported="true"
|
|
android:label="@string/track_activity_name">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<data android:scheme="mihon" />
|
|
|
|
<data android:host="anilist-auth" />
|
|
<data android:host="bangumi-auth" />
|
|
<data android:host="mangabaka-auth" />
|
|
<data android:host="myanimelist-auth" />
|
|
<data android:host="shikimori-auth" />
|
|
<data android:host="hikka-auth" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<receiver
|
|
android:name=".data.notification.NotificationReceiver"
|
|
android:exported="false" />
|
|
|
|
<service
|
|
android:name=".extension.util.ExtensionInstallService"
|
|
android:exported="false"
|
|
android:foregroundServiceType="shortService" />
|
|
|
|
<service
|
|
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
|
|
android:enabled="false"
|
|
android:exported="false">
|
|
<meta-data
|
|
android:name="autoStoreLocales"
|
|
android:value="true" />
|
|
</service>
|
|
|
|
<service
|
|
android:name="androidx.work.impl.foreground.SystemForegroundService"
|
|
android:foregroundServiceType="dataSync"
|
|
tools:node="merge" />
|
|
|
|
<provider
|
|
android:name="androidx.core.content.FileProvider"
|
|
android:authorities="${applicationId}.provider"
|
|
android:exported="false"
|
|
android:grantUriPermissions="true">
|
|
<meta-data
|
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
|
android:resource="@xml/provider_paths" />
|
|
</provider>
|
|
|
|
<provider
|
|
android:name="rikka.shizuku.ShizukuProvider"
|
|
android:authorities="${applicationId}.shizuku"
|
|
android:enabled="true"
|
|
android:exported="true"
|
|
android:multiprocess="false"
|
|
android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />
|
|
|
|
<meta-data
|
|
android:name="android.webkit.WebView.EnableSafeBrowsing"
|
|
android:value="false" />
|
|
<meta-data
|
|
android:name="android.webkit.WebView.MetricsOptOut"
|
|
android:value="true" />
|
|
|
|
</application>
|
|
|
|
</manifest>
|