diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index 705055c2d..000000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1 +0,0 @@
-ko_fi: inorichi
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 6aa162fc0..01cf0e1d0 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -3,9 +3,9 @@
I acknowledge that:
- I have updated:
- - To the latest version of the app (stable is v0.15.2)
+ - To the latest version of the app (stable is v0.15.3)
- All extensions
-- I have gone through the FAQ (https://tachiyomi.org/docs/faq/general) and troubleshooting guide (https://tachiyomi.org/docs/guides/troubleshooting/)
+- I have gone through the FAQ (https://mihon.app/docs/faq/general) and troubleshooting guide (https://mihon.app/docs/guides/troubleshooting/)
- If this is an issue with an official extension, that I should be opening an issue in https://github.com/tachiyomiorg/extensions
- I have searched the existing issues and this is new ticket **NOT** a duplicate or related to another open or closed issue
- I will fill out the title and the information in this template
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 30d50347e..76f836b82 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -3,9 +3,9 @@ contact_links:
- name: ⚠️ Extension/source issue
url: https://github.com/tachiyomiorg/extensions/issues/new/choose
about: Issues and requests for official extensions and sources should be opened in the extensions repository instead
- - name: 📦 Tachiyomi extensions
- url: https://tachiyomi.org/extensions/
+ - name: 📦 Mihon extensions
+ url: https://mihon.app/extensions/
about: List of all available extensions with download links
- - name: 🖥️ Tachiyomi website
- url: https://tachiyomi.org/
+ - name: 🖥️ Mihon website
+ url: https://mihon.app/
about: Guides, troubleshooting, and answers to common questions
diff --git a/.github/ISSUE_TEMPLATE/report_issue.yml b/.github/ISSUE_TEMPLATE/report_issue.yml
index 6a2515a5b..d4683f90d 100644
--- a/.github/ISSUE_TEMPLATE/report_issue.yml
+++ b/.github/ISSUE_TEMPLATE/report_issue.yml
@@ -1,5 +1,5 @@
name: 🐞 Issue report
-description: Report an issue in Tachiyomi
+description: Report an issue in Mihon
labels: [Bug]
body:
@@ -48,12 +48,12 @@ body:
You can paste the crash logs in plain text or upload it as an attachment.
- type: input
- id: tachiyomi-version
+ id: mihon-version
attributes:
- label: Tachiyomi version
- description: You can find your Tachiyomi version in **More → About**.
+ label: Mihon version
+ description: You can find your Mihon version in **More → About**.
placeholder: |
- Example: "0.15.2"
+ Example: "0.15.3"
validations:
required: true
@@ -96,9 +96,9 @@ body:
required: true
- label: If this is an issue with an official extension, I should be opening an issue in the [extensions repository](https://github.com/tachiyomiorg/extensions/issues/new/choose).
required: true
- - label: I have gone through the [FAQ](https://tachiyomi.org/docs/faq/general) and [troubleshooting guide](https://tachiyomi.org/docs/guides/troubleshooting/).
+ - label: I have gone through the [FAQ](https://mihon.app/docs/faq/general) and [troubleshooting guide](https://mihon.app/docs/guides/troubleshooting/).
required: true
- - label: I have updated the app to version **[0.15.2](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
+ - label: I have updated the app to version **[0.15.3](https://github.com/mihonapp/mihon/releases/latest)**.
required: true
- label: I have updated all installed extensions.
required: true
diff --git a/.github/ISSUE_TEMPLATE/request_feature.yml b/.github/ISSUE_TEMPLATE/request_feature.yml
index 794525c8c..e976bde24 100644
--- a/.github/ISSUE_TEMPLATE/request_feature.yml
+++ b/.github/ISSUE_TEMPLATE/request_feature.yml
@@ -1,5 +1,5 @@
name: ⭐ Feature request
-description: Suggest a feature to improve Tachiyomi
+description: Suggest a feature to improve Mihon
labels: [Feature request]
body:
@@ -7,7 +7,7 @@ body:
id: feature-description
attributes:
label: Describe your suggested feature
- description: How can Tachiyomi be improved?
+ description: How can Mihon be improved?
placeholder: |
Example:
"It should work like this..."
@@ -33,7 +33,7 @@ body:
required: true
- label: If this is an issue with an official extension, I should be opening an issue in the [extensions repository](https://github.com/tachiyomiorg/extensions/issues/new/choose).
required: true
- - label: I have updated the app to version **[0.15.2](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
+ - label: I have updated the app to version **[0.15.3](https://github.com/mihonapp/mihon/releases/latest)**.
required: true
- label: I will fill out all of the requested information in this form.
required: true
diff --git a/.github/readme-images/app-icon.png b/.github/readme-images/app-icon.png
index 78804a17b..237bec5e8 100644
Binary files a/.github/readme-images/app-icon.png and b/.github/readme-images/app-icon.png differ
diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml
index 6127d3f30..73106a0ef 100644
--- a/.github/workflows/build_push.yml
+++ b/.github/workflows/build_push.yml
@@ -2,7 +2,7 @@ name: CI
on:
push:
branches:
- - master
+ - main
tags:
- v*
@@ -22,6 +22,10 @@ jobs:
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
+ - name: Setup Android SDK
+ run: |
+ ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3"
+
- name: Set up JDK
uses: actions/setup-java@v4
with:
@@ -36,13 +40,13 @@ jobs:
# Sign APK and create release for tags
- name: Get tag name
- if: startsWith(github.ref, 'refs/tags/') && github.repository == 'tachiyomiorg/tachiyomi'
+ if: startsWith(github.ref, 'refs/tags/') && github.repository == 'mihonapp/mihon'
run: |
set -x
echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Sign APK
- if: startsWith(github.ref, 'refs/tags/') && github.repository == 'tachiyomiorg/tachiyomi'
+ if: startsWith(github.ref, 'refs/tags/') && github.repository == 'mihonapp/mihon'
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/build/outputs/apk/standard/release
@@ -52,36 +56,36 @@ jobs:
keyPassword: ${{ secrets.KEY_PASSWORD }}
- name: Clean up build artifacts
- if: startsWith(github.ref, 'refs/tags/') && github.repository == 'tachiyomiorg/tachiyomi'
+ if: startsWith(github.ref, 'refs/tags/') && github.repository == 'mihonapp/mihon'
run: |
set -e
- mv app/build/outputs/apk/standard/release/app-standard-universal-release-unsigned-signed.apk tachiyomi-${{ env.VERSION_TAG }}.apk
- sha=`sha256sum tachiyomi-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
+ mv app/build/outputs/apk/standard/release/app-standard-universal-release-unsigned-signed.apk mihon-${{ env.VERSION_TAG }}.apk
+ sha=`sha256sum mihon-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_ENV
- cp app/build/outputs/apk/standard/release/app-standard-arm64-v8a-release-unsigned-signed.apk tachiyomi-arm64-v8a-${{ env.VERSION_TAG }}.apk
- sha=`sha256sum tachiyomi-arm64-v8a-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
+ cp app/build/outputs/apk/standard/release/app-standard-arm64-v8a-release-unsigned-signed.apk mihon-arm64-v8a-${{ env.VERSION_TAG }}.apk
+ sha=`sha256sum mihon-arm64-v8a-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_ENV
- cp app/build/outputs/apk/standard/release/app-standard-armeabi-v7a-release-unsigned-signed.apk tachiyomi-armeabi-v7a-${{ env.VERSION_TAG }}.apk
- sha=`sha256sum tachiyomi-armeabi-v7a-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
+ cp app/build/outputs/apk/standard/release/app-standard-armeabi-v7a-release-unsigned-signed.apk mihon-armeabi-v7a-${{ env.VERSION_TAG }}.apk
+ sha=`sha256sum mihon-armeabi-v7a-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_ENV
- cp app/build/outputs/apk/standard/release/app-standard-x86-release-unsigned-signed.apk tachiyomi-x86-${{ env.VERSION_TAG }}.apk
- sha=`sha256sum tachiyomi-x86-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
+ cp app/build/outputs/apk/standard/release/app-standard-x86-release-unsigned-signed.apk mihon-x86-${{ env.VERSION_TAG }}.apk
+ sha=`sha256sum mihon-x86-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
echo "APK_X86_SHA=$sha" >> $GITHUB_ENV
- cp app/build/outputs/apk/standard/release/app-standard-x86_64-release-unsigned-signed.apk tachiyomi-x86_64-${{ env.VERSION_TAG }}.apk
- sha=`sha256sum tachiyomi-x86_64-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
+ cp app/build/outputs/apk/standard/release/app-standard-x86_64-release-unsigned-signed.apk mihon-x86_64-${{ env.VERSION_TAG }}.apk
+ sha=`sha256sum mihon-x86_64-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
echo "APK_X86_64_SHA=$sha" >> $GITHUB_ENV
- name: Create Release
- if: startsWith(github.ref, 'refs/tags/') && github.repository == 'tachiyomiorg/tachiyomi'
+ if: startsWith(github.ref, 'refs/tags/') && github.repository == 'mihonapp/mihon'
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.VERSION_TAG }}
- name: Tachiyomi ${{ env.VERSION_TAG }}
+ name: Mihon ${{ env.VERSION_TAG }}
body: |
---
@@ -94,23 +98,15 @@ jobs:
| armeabi-v7a | ${{ env.APK_ARMEABI_V7A_SHA }}
| x86 | ${{ env.APK_X86_SHA }} |
| x86_64 | ${{ env.APK_X86_64_SHA }} |
+
+ If you are unsure which version to choose then go with mihon-${{ env.VERSION_TAG }}.apk
files: |
- tachiyomi-${{ env.VERSION_TAG }}.apk
- tachiyomi-arm64-v8a-${{ env.VERSION_TAG }}.apk
- tachiyomi-armeabi-v7a-${{ env.VERSION_TAG }}.apk
- tachiyomi-x86-${{ env.VERSION_TAG }}.apk
- tachiyomi-x86_64-${{ env.VERSION_TAG }}.apk
+ mihon-${{ env.VERSION_TAG }}.apk
+ mihon-arm64-v8a-${{ env.VERSION_TAG }}.apk
+ mihon-armeabi-v7a-${{ env.VERSION_TAG }}.apk
+ mihon-x86-${{ env.VERSION_TAG }}.apk
+ mihon-x86_64-${{ env.VERSION_TAG }}.apk
draft: true
prerelease: false
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- update-website:
- needs: [build]
- runs-on: ubuntu-latest
- if: startsWith(github.ref, 'refs/tags/') && github.repository == 'tachiyomiorg/tachiyomi'
- steps:
- - name: Trigger Netlify build hook
- run: curl -s -X POST -d {} "https://api.netlify.com/build_hooks/${TOKEN}"
- env:
- TOKEN: ${{ secrets.NETLIFY_HOOK_RELEASE }}
+ GITHUB_TOKEN: ${{ secrets.PAT }}
diff --git a/.github/workflows/issue_moderator.yml b/.github/workflows/issue_moderator.yml
index 8e937956c..6a069e5c4 100644
--- a/.github/workflows/issue_moderator.yml
+++ b/.github/workflows/issue_moderator.yml
@@ -39,7 +39,7 @@ jobs:
"regex": ".*(?:fail(?:ed|ure|s)?|can\\s*(?:no|')?t|(?:not|un).*able|(?Issues
-1. **Before reporting a new issue, take a look at the [FAQ](https://tachiyomi.org/docs/faq/general), the [changelog](https://tachiyomi.org/changelogs/) and the already opened [issues](https://github.com/tachiyomiorg/tachiyomi/issues).**
-2. If you are unsure, ask here: [![Discord](https://img.shields.io/discord/349436576037732353.svg)](https://discord.gg/tachiyomi)
+1. **Before reporting a new issue, take a look at the [FAQ](https://mihon.app/docs/faq/general), the [changelog](https://mihon.app/changelogs/) and the already opened [issues](https://github.com/mihonapp/mihon/issues).**
+2. If you are unsure, ask here: [![Discord](https://img.shields.io/discord/1195734228319617024.svg)](https://discord.gg/mihon)
@@ -43,10 +43,6 @@ Please make sure to read the full guidelines. Your issue may be closed without w
* If it could be device-dependent, try reproducing on another device (if possible)
* Don't group unrelated requests into one issue
-DO: https://github.com/tachiyomiorg/tachiyomi/issues/24 https://github.com/tachiyomiorg/tachiyomi/issues/71
-
-DON'T: https://github.com/tachiyomiorg/tachiyomi/issues/75
-
Feature Requests
@@ -69,8 +65,8 @@ See [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
## FAQ
-[See our website.](https://tachiyomi.org/)
-You can also reach out to us on [Discord](https://discord.gg/tachiyomi).
+[See our website.](https://mihon.app/)
+You can also reach out to us on [Discord](https://discord.gg/mihon).
## License
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 83360b5cb..d6036944b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -20,10 +20,10 @@ android {
namespace = "eu.kanade.tachiyomi"
defaultConfig {
- applicationId = "eu.kanade.tachiyomi"
+ applicationId = "app.mihon"
- versionCode = 118
- versionName = "0.15.2"
+ versionCode = 1
+ versionName = "0.16.0"
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")
buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"")
@@ -31,9 +31,6 @@ android {
buildConfigField("boolean", "INCLUDE_UPDATER", "false")
buildConfigField("boolean", "PREVIEW", "false")
- // Please disable ACRA or use your own instance in forked versions of the project
- buildConfigField("String", "ACRA_URI", "\"https://tachiyomi.kanade.eu/crash_report\"")
-
ndk {
abiFilters += SUPPORTED_ABIS
}
@@ -246,7 +243,6 @@ dependencies {
implementation(libs.logcat)
// Crash reports/analytics
- implementation(libs.bundles.acra)
"standardImplementation"(libs.firebase.analytics)
// Shizuku
diff --git a/app/src/debug/res/drawable/ic_launcher_background.xml b/app/src/debug/res/drawable/ic_launcher_background.xml
new file mode 100644
index 000000000..54f998b1c
--- /dev/null
+++ b/app/src/debug/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/app/src/debug/res/drawable/ic_launcher_foreground.xml b/app/src/debug/res/drawable/ic_launcher_foreground.xml
index ff51d0085..b293ee17e 100644
--- a/app/src/debug/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/debug/res/drawable/ic_launcher_foreground.xml
@@ -1,27 +1,14 @@
+ android:viewportWidth="432"
+ android:viewportHeight="432">
+
-
-
-
-
-
-
+ android:pathData="M162.3,173.59L161.22,148.63C164.47,149.25 168.35,149.41 177.18,149.41C187.87,149.41 201.98,148.79 209.26,147.86C212.36,147.55 213.6,147.09 215.61,146L232.35,160.26C230.8,162.43 230.34,163.36 228.63,167.7C227.24,171.11 220.88,190.79 218.4,199.16C229.87,201.48 236.22,203.18 244.9,206.75C245.99,199.16 246.14,195.13 246.14,181.33C246.14,177.77 245.99,175.76 245.52,172.5L272.49,173.43C271.71,177.15 271.56,178.7 271.4,184.74C270.78,199.31 270.16,206.29 268.61,216.82C279.31,222.25 279.31,222.25 284.73,225.19C287.52,226.74 288.14,227.05 290,227.67L281.01,256.65C276.67,252.78 270.63,248.59 261.8,243.63C254.05,262.08 241.18,275.56 221.66,286.25C215.15,277.57 210.19,272.3 202.29,266.11C213.75,260.68 219.02,257.27 225.07,251.54C230.96,245.8 234.83,240.22 238.55,231.85C228.63,227.36 222.28,225.35 211.27,223.02C204.92,241.93 199.8,254.02 195.31,261.3C189.27,271.06 181.05,276.18 171.6,276.18C164.32,276.18 156.88,272.92 151.45,267.35C145.25,260.99 142,252.16 142,241.93C142,226.74 149.28,213.57 161.99,205.35C170.21,200.09 178.88,197.76 192.68,196.99C195.47,187.84 197.79,179.94 199.96,171.11C193.14,171.73 184.62,172.19 174.24,172.65C168.66,172.81 166.8,172.96 162.3,173.59ZM185.86,220.7C178.57,221.94 174.24,224.26 170.36,229.22C167.42,232.63 166.02,236.66 166.02,241C166.02,245.8 168.35,249.37 171.29,249.37C174.85,249.37 178.88,241.31 185.86,220.7Z"
+ android:fillColor="#031019"/>
+
diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index 1ad255903..000000000
--- a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher.png b/app/src/debug/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 85b8efd98..000000000
Binary files a/app/src/debug/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 40dbb9c34..000000000
Binary files a/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher.png b/app/src/debug/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index bbd7cb265..000000000
Binary files a/app/src/debug/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index ab81a8b5a..000000000
Binary files a/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index a17cf188d..000000000
Binary files a/app/src/debug/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index e4414a507..000000000
Binary files a/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 112552082..000000000
Binary files a/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index a14c8a3ae..000000000
Binary files a/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index c3c1617f4..000000000
Binary files a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index 8c172e3c9..000000000
Binary files a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1fc53d0b7..619a83fac 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -50,7 +50,7 @@
android:networkSecurityConfig="@xml/network_security_config"
android:preserveLegacyExternalStorage="true"
android:requestLegacyExternalStorage="true"
- android:roundIcon="@mipmap/ic_launcher_round"
+ android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/Theme.Tachiyomi">
@@ -179,7 +179,7 @@
-
+
diff --git a/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt b/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt
index 24ad9a1b7..d52a3899c 100644
--- a/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt
@@ -2,8 +2,6 @@ package eu.kanade.domain.base
import android.content.Context
import dev.icerock.moko.resources.StringResource
-import eu.kanade.tachiyomi.util.system.isPreviewBuildType
-import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import tachiyomi.core.preference.Preference
import tachiyomi.core.preference.PreferenceStore
import tachiyomi.i18n.MR
@@ -22,8 +20,6 @@ class BasePreferences(
fun extensionInstaller() = ExtensionInstallerPreference(context, preferenceStore)
- fun acraEnabled() = preferenceStore.getBoolean("acra.enable", isPreviewBuildType || isReleaseBuildType)
-
fun shownOnboardingFlow() = preferenceStore.getBoolean(Preference.appStateKey("onboarding_complete"), false)
enum class ExtensionInstaller(val titleRes: StringResource, val requiresSystemPermission: Boolean) {
diff --git a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
index 294812bdc..efb27fa02 100644
--- a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
@@ -1,6 +1,5 @@
package eu.kanade.domain.ui
-import android.os.Build
import eu.kanade.domain.ui.model.AppTheme
import eu.kanade.domain.ui.model.TabletUiMode
import eu.kanade.domain.ui.model.ThemeMode
@@ -16,10 +15,7 @@ class UiPreferences(
private val preferenceStore: PreferenceStore,
) {
- fun themeMode() = preferenceStore.getEnum(
- "pref_theme_mode_key",
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { ThemeMode.SYSTEM } else { ThemeMode.LIGHT },
- )
+ fun themeMode() = preferenceStore.getEnum("pref_theme_mode_key", ThemeMode.SYSTEM)
fun appTheme() = preferenceStore.getEnum(
"pref_app_theme",
diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt
index b3c06a979..a71d08674 100644
--- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt
+++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt
@@ -2,7 +2,6 @@ package eu.kanade.presentation.manga.components
import android.graphics.Bitmap
import android.graphics.drawable.BitmapDrawable
-import android.os.Build
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
@@ -173,14 +172,9 @@ fun MangaCoverDialog(
// Copy bitmap in case it came from memory cache
// Because SSIV needs to thoroughly read the image
val copy = (drawable as? BitmapDrawable)?.let {
- val config = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- Bitmap.Config.HARDWARE
- } else {
- Bitmap.Config.ARGB_8888
- }
BitmapDrawable(
view.context.resources,
- it.bitmap.copy(config, false),
+ it.bitmap.copy(Bitmap.Config.HARDWARE, false),
)
} ?: drawable
view.setImage(copy, ReaderPageImageView.Config(zoomDuration = 500))
diff --git a/app/src/main/java/eu/kanade/presentation/more/LogoHeader.kt b/app/src/main/java/eu/kanade/presentation/more/LogoHeader.kt
index bd7aa1ee4..881d96b64 100644
--- a/app/src/main/java/eu/kanade/presentation/more/LogoHeader.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/LogoHeader.kt
@@ -21,7 +21,7 @@ fun LogoHeader() {
horizontalAlignment = Alignment.CenterHorizontally,
) {
Icon(
- painter = painterResource(R.drawable.ic_tachi),
+ painter = painterResource(R.drawable.ic_mihon),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface,
modifier = Modifier
diff --git a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt
index 8a3b1f9fe..974804db1 100644
--- a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt
@@ -1,6 +1,5 @@
package eu.kanade.presentation.more
-import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
@@ -23,7 +22,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.vectorResource
-import eu.kanade.presentation.components.WarningBanner
import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.tachiyomi.R
@@ -60,14 +58,7 @@ fun MoreScreen(
),
) {
if (isFDroid) {
- WarningBanner(
- textRes = MR.strings.fdroid_warning,
- modifier = Modifier.clickable {
- uriHandler.openUri(
- "https://tachiyomi.org/docs/faq/general#how-do-i-update-from-the-f-droid-builds",
- )
- },
- )
+ // Don't really care about slow updaters now
}
}
},
diff --git a/app/src/main/java/eu/kanade/presentation/more/onboarding/GuidesStep.kt b/app/src/main/java/eu/kanade/presentation/more/onboarding/GuidesStep.kt
index 5a095b0ef..0af77922a 100644
--- a/app/src/main/java/eu/kanade/presentation/more/onboarding/GuidesStep.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/onboarding/GuidesStep.kt
@@ -56,7 +56,7 @@ internal class GuidesStep(
}
}
-const val GETTING_STARTED_URL = "https://tachiyomi.org/docs/guides/getting-started"
+const val GETTING_STARTED_URL = "https://mihon.app/docs/guides/getting-started"
@PreviewLightDark
@Composable
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
index 833a4a1a2..de537d572 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
@@ -3,7 +3,6 @@ package eu.kanade.presentation.more.settings.screen
import android.annotation.SuppressLint
import android.content.ActivityNotFoundException
import android.content.Intent
-import android.os.Build
import android.provider.Settings
import android.webkit.WebStorage
import android.webkit.WebView
@@ -48,7 +47,6 @@ import eu.kanade.tachiyomi.ui.more.OnboardingScreen
import eu.kanade.tachiyomi.util.CrashLogUtil
import eu.kanade.tachiyomi.util.system.isDevFlavor
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
-import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import eu.kanade.tachiyomi.util.system.isShizukuInstalled
import eu.kanade.tachiyomi.util.system.powerManager
import eu.kanade.tachiyomi.util.system.setDefaultSettings
@@ -86,67 +84,49 @@ object SettingsAdvancedScreen : SearchableSettings {
val basePreferences = remember { Injekt.get() }
val networkPreferences = remember { Injekt.get() }
- return buildList {
- addAll(
- listOf(
- Preference.PreferenceItem.SwitchPreference(
- pref = basePreferences.acraEnabled(),
- title = stringResource(MR.strings.pref_enable_acra),
- subtitle = stringResource(MR.strings.pref_acra_summary),
- enabled = isPreviewBuildType || isReleaseBuildType,
- ),
- Preference.PreferenceItem.TextPreference(
- title = stringResource(MR.strings.pref_dump_crash_logs),
- subtitle = stringResource(MR.strings.pref_dump_crash_logs_summary),
- onClick = {
- scope.launch {
- CrashLogUtil(context).dumpLogs()
- }
- },
- ),
- Preference.PreferenceItem.SwitchPreference(
- pref = networkPreferences.verboseLogging(),
- title = stringResource(MR.strings.pref_verbose_logging),
- subtitle = stringResource(MR.strings.pref_verbose_logging_summary),
- onValueChanged = {
- context.toast(MR.strings.requires_app_restart)
- true
- },
- ),
- Preference.PreferenceItem.TextPreference(
- title = stringResource(MR.strings.pref_debug_info),
- onClick = { navigator.push(DebugInfoScreen()) },
- ),
- Preference.PreferenceItem.TextPreference(
- title = stringResource(MR.strings.pref_onboarding_guide),
- onClick = { navigator.push(OnboardingScreen()) },
- ),
- ),
- )
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- add(
- Preference.PreferenceItem.TextPreference(
- title = stringResource(MR.strings.pref_manage_notifications),
- onClick = {
- val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
- putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName)
- }
- context.startActivity(intent)
- },
- ),
- )
- }
- addAll(
- listOf(
+ return listOf(
+ Preference.PreferenceItem.TextPreference(
+ title = stringResource(MR.strings.pref_dump_crash_logs),
+ subtitle = stringResource(MR.strings.pref_dump_crash_logs_summary),
+ onClick = {
+ scope.launch {
+ CrashLogUtil(context).dumpLogs()
+ }
+ },
+ ),
+ Preference.PreferenceItem.SwitchPreference(
+ pref = networkPreferences.verboseLogging(),
+ title = stringResource(MR.strings.pref_verbose_logging),
+ subtitle = stringResource(MR.strings.pref_verbose_logging_summary),
+ onValueChanged = {
+ context.toast(MR.strings.requires_app_restart)
+ true
+ },
+ ),
+ Preference.PreferenceItem.TextPreference(
+ title = stringResource(MR.strings.pref_debug_info),
+ onClick = { navigator.push(DebugInfoScreen()) },
+ ),
+ Preference.PreferenceItem.TextPreference(
+ title = stringResource(MR.strings.pref_onboarding_guide),
+ onClick = { navigator.push(OnboardingScreen()) },
+ ),
+ Preference.PreferenceItem.TextPreference(
+ title = stringResource(MR.strings.pref_manage_notifications),
+ onClick = {
+ val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
+ putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName)
+ }
+ context.startActivity(intent)
+ },
+ ),
getBackgroundActivityGroup(),
getDataGroup(),
getNetworkGroup(networkPreferences = networkPreferences),
getLibraryGroup(),
getExtensionsGroup(basePreferences = basePreferences),
getSyncGroup(),
- ),
- )
- }
+ )
}
@Composable
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt
index 0b4354136..acbcb50c3 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt
@@ -75,7 +75,7 @@ import uy.kohesive.injekt.api.get
object SettingsDataScreen : SearchableSettings {
val restorePreferenceKeyString = MR.strings.label_backup
- const val HELP_URL = "https://tachiyomi.org/docs/faq/storage"
+ const val HELP_URL = "https://mihon.app/docs/faq/storage"
@ReadOnlyComposable
@Composable
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
index c28b12d48..bc60037e9 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
@@ -60,7 +60,6 @@ object SettingsReaderScreen : SearchableSettings {
pref = readerPref.trueColor(),
title = stringResource(MR.strings.pref_true_color),
subtitle = stringResource(MR.strings.pref_true_color_summary),
- enabled = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O,
),
Preference.PreferenceItem.SwitchPreference(
pref = readerPref.pageTransitions(),
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
index d0ba0dd0c..8d508746c 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
@@ -71,7 +71,7 @@ object SettingsTrackingScreen : SearchableSettings {
@Composable
override fun RowScope.AppBarAction() {
val uriHandler = LocalUriHandler.current
- IconButton(onClick = { uriHandler.openUri("https://tachiyomi.org/docs/guides/tracking") }) {
+ IconButton(onClick = { uriHandler.openUri("https://mihon.app/docs/guides/tracking") }) {
Icon(
imageVector = Icons.AutoMirrored.Outlined.HelpOutline,
contentDescription = stringResource(MR.strings.tracking_guide),
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
index 9bb5ae523..2f740aa1a 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
@@ -146,13 +146,6 @@ object AboutScreen : Screen() {
}
}
- item {
- TextPreferenceWidget(
- title = stringResource(MR.strings.help_translate),
- onPreferenceClick = { uriHandler.openUri("https://tachiyomi.org/docs/contribute#translation") },
- )
- }
-
item {
TextPreferenceWidget(
title = stringResource(MR.strings.licenses),
@@ -163,7 +156,7 @@ object AboutScreen : Screen() {
item {
TextPreferenceWidget(
title = stringResource(MR.strings.privacy_policy),
- onPreferenceClick = { uriHandler.openUri("https://tachiyomi.org/privacy/") },
+ onPreferenceClick = { uriHandler.openUri("https://mihon.app/privacy/") },
)
}
@@ -177,32 +170,32 @@ object AboutScreen : Screen() {
LinkIcon(
label = stringResource(MR.strings.website),
icon = Icons.Outlined.Public,
- url = "https://tachiyomi.org",
+ url = "https://mihon.app",
)
LinkIcon(
label = "Discord",
icon = CustomIcons.Discord,
- url = "https://discord.gg/tachiyomi",
+ url = "https://discord.gg/mihon",
)
LinkIcon(
label = "X",
icon = CustomIcons.X,
- url = "https://x.com/tachiyomiorg",
+ url = "https://x.com/mihonapp",
)
LinkIcon(
label = "Facebook",
icon = CustomIcons.Facebook,
- url = "https://facebook.com/tachiyomiorg",
+ url = "https://facebook.com/mihonapp",
)
LinkIcon(
label = "Reddit",
icon = CustomIcons.Reddit,
- url = "https://www.reddit.com/r/Tachiyomi",
+ url = "https://www.reddit.com/r/mihonapp",
)
LinkIcon(
label = "GitHub",
icon = CustomIcons.Github,
- url = "https://github.com/tachiyomiorg",
+ url = "https://github.com/mihonapp",
)
}
}
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/widget/AppThemeModePreferenceWidget.kt b/app/src/main/java/eu/kanade/presentation/more/settings/widget/AppThemeModePreferenceWidget.kt
index d1901745b..6ba423e32 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/widget/AppThemeModePreferenceWidget.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/widget/AppThemeModePreferenceWidget.kt
@@ -1,6 +1,5 @@
package eu.kanade.presentation.more.settings.widget
-import android.os.Build
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MultiChoiceSegmentedButtonRow
@@ -13,18 +12,11 @@ import eu.kanade.domain.ui.model.ThemeMode
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
-private val options = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- mapOf(
- ThemeMode.SYSTEM to MR.strings.theme_system,
- ThemeMode.LIGHT to MR.strings.theme_light,
- ThemeMode.DARK to MR.strings.theme_dark,
- )
-} else {
- mapOf(
- ThemeMode.LIGHT to MR.strings.theme_light,
- ThemeMode.DARK to MR.strings.theme_dark,
- )
-}
+private val options = mapOf(
+ ThemeMode.SYSTEM to MR.strings.theme_system,
+ ThemeMode.LIGHT to MR.strings.theme_light,
+ ThemeMode.DARK to MR.strings.theme_dark,
+)
@Composable
internal fun AppThemeModePreferenceWidget(
diff --git a/app/src/main/java/eu/kanade/presentation/util/Permissions.kt b/app/src/main/java/eu/kanade/presentation/util/Permissions.kt
index b4f4f4bd3..6bee9203e 100644
--- a/app/src/main/java/eu/kanade/presentation/util/Permissions.kt
+++ b/app/src/main/java/eu/kanade/presentation/util/Permissions.kt
@@ -1,7 +1,5 @@
package eu.kanade.presentation.util
-import android.os.Build
-import android.provider.Settings
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.getValue
@@ -23,12 +21,7 @@ fun rememberRequestPackageInstallsPermissionState(initialValue: Boolean = false)
DisposableEffect(lifecycleOwner.lifecycle) {
val observer = object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
- installGranted = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- context.packageManager.canRequestPackageInstalls()
- } else {
- @Suppress("DEPRECATION")
- Settings.Secure.getInt(context.contentResolver, Settings.Secure.INSTALL_NON_MARKET_APPS) != 0
- }
+ installGranted = context.packageManager.canRequestPackageInstalls()
}
}
lifecycleOwner.lifecycle.addObserver(observer)
diff --git a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt
index dcfb83534..f1779da58 100644
--- a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt
+++ b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt
@@ -175,7 +175,7 @@ fun WebViewScreenContent(
.clip(MaterialTheme.shapes.small)
.clickable {
uriHandler.openUri(
- "https://tachiyomi.org/docs/guides/troubleshooting/#cloudflare",
+ "https://mihon.app/docs/guides/troubleshooting/#cloudflare",
)
},
)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt
index 8580de1b0..e6da79884 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/App.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt
@@ -3,7 +3,6 @@ package eu.kanade.tachiyomi
import android.annotation.SuppressLint
import android.app.Application
import android.app.PendingIntent
-import android.app.job.JobInfo
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
@@ -43,8 +42,6 @@ import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.WebViewUtil
import eu.kanade.tachiyomi.util.system.animatorDurationScale
import eu.kanade.tachiyomi.util.system.cancelNotification
-import eu.kanade.tachiyomi.util.system.isPreviewBuildType
-import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import eu.kanade.tachiyomi.util.system.notify
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.launchIn
@@ -52,13 +49,8 @@ import kotlinx.coroutines.flow.onEach
import logcat.AndroidLogcatLogger
import logcat.LogPriority
import logcat.LogcatLogger
-import org.acra.config.httpSender
-import org.acra.config.scheduler
-import org.acra.ktx.initAcra
-import org.acra.sender.HttpSender
import org.conscrypt.Conscrypt
import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.preference.Preference
import tachiyomi.core.util.system.logcat
import tachiyomi.domain.sync.SyncPreferences
import tachiyomi.i18n.MR
@@ -96,7 +88,6 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
Injekt.importModule(AppModule(this))
Injekt.importModule(DomainModule())
- setupAcra()
setupNotificationChannels()
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
@@ -192,48 +183,23 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
}
override fun getPackageName(): String {
- // This causes freezes in Android 6/7 for some reason
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- try {
- // Override the value passed as X-Requested-With in WebView requests
- val stackTrace = Looper.getMainLooper().thread.stackTrace
- val chromiumElement = stackTrace.find {
- it.className.equals(
- "org.chromium.base.BuildInfo",
- ignoreCase = true,
- )
- }
- if (chromiumElement?.methodName.equals("getAll", ignoreCase = true)) {
- return WebViewUtil.SPOOF_PACKAGE_NAME
- }
- } catch (_: Exception) {
+ try {
+ // Override the value passed as X-Requested-With in WebView requests
+ val stackTrace = Looper.getMainLooper().thread.stackTrace
+ val chromiumElement = stackTrace.find {
+ it.className.equals(
+ "org.chromium.base.BuildInfo",
+ ignoreCase = true,
+ )
}
+ if (chromiumElement?.methodName.equals("getAll", ignoreCase = true)) {
+ return WebViewUtil.SPOOF_PACKAGE_NAME
+ }
+ } catch (_: Exception) {
}
return super.getPackageName()
}
- private fun setupAcra() {
- if (isPreviewBuildType || isReleaseBuildType) {
- initAcra {
- buildConfigClass = BuildConfig::class.java
- excludeMatchingSharedPreferencesKeys = listOf(
- Preference.privateKey(".*"), ".*username.*", ".*password.*", ".*token.*",
- )
-
- httpSender {
- uri = BuildConfig.ACRA_URI
- httpMethod = HttpSender.Method.PUT
- }
-
- scheduler {
- requiresBatteryNotLow = true
- requiresDeviceIdle = true
- requiresNetworkType = JobInfo.NETWORK_TYPE_UNMETERED
- }
- }
- }
- }
-
private fun setupNotificationChannels() {
try {
Notifications.createChannels(this)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
index 9947f98ec..119adf72d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
@@ -1,34 +1,10 @@
package eu.kanade.tachiyomi
import android.content.Context
-import androidx.core.content.edit
-import androidx.preference.PreferenceManager
-import eu.kanade.domain.base.BasePreferences
-import eu.kanade.domain.source.service.SourcePreferences
-import eu.kanade.domain.ui.UiPreferences
-import eu.kanade.tachiyomi.core.security.SecurityPreferences
import eu.kanade.tachiyomi.data.backup.create.BackupCreateJob
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
-import eu.kanade.tachiyomi.data.track.TrackerManager
-import eu.kanade.tachiyomi.network.NetworkPreferences
-import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
-import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation
-import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
-import eu.kanade.tachiyomi.util.system.DeviceUtil
-import eu.kanade.tachiyomi.util.system.toast
-import eu.kanade.tachiyomi.util.system.workManager
import tachiyomi.core.preference.Preference
import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.preference.TriState
-import tachiyomi.core.preference.getAndSet
-import tachiyomi.core.preference.getEnum
-import tachiyomi.core.preference.minusAssign
-import tachiyomi.core.preference.plusAssign
-import tachiyomi.domain.backup.service.BackupPreferences
-import tachiyomi.domain.library.service.LibraryPreferences
-import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_NON_COMPLETED
-import tachiyomi.i18n.MR
-import java.io.File
object Migrations {
@@ -37,18 +13,10 @@ object Migrations {
*
* @return true if a migration is performed, false otherwise.
*/
+ @Suppress("SameReturnValue")
fun upgrade(
context: Context,
preferenceStore: PreferenceStore,
- basePreferences: BasePreferences,
- uiPreferences: UiPreferences,
- networkPreferences: NetworkPreferences,
- sourcePreferences: SourcePreferences,
- securityPreferences: SecurityPreferences,
- libraryPreferences: LibraryPreferences,
- readerPreferences: ReaderPreferences,
- backupPreferences: BackupPreferences,
- trackerManager: TrackerManager,
): Boolean {
val lastVersionCode = preferenceStore.getInt(Preference.appStateKey("last_version_code"), 0)
val oldVersion = lastVersionCode.get()
@@ -63,399 +31,8 @@ object Migrations {
if (oldVersion == 0) {
return false
}
-
- val prefs = PreferenceManager.getDefaultSharedPreferences(context)
-
- if (oldVersion < 15) {
- // Delete internal chapter cache dir.
- File(context.cacheDir, "chapter_disk_cache").deleteRecursively()
- }
- if (oldVersion < 19) {
- // Move covers to external files dir.
- val oldDir = File(context.externalCacheDir, "cover_disk_cache")
- if (oldDir.exists()) {
- val destDir = context.getExternalFilesDir("covers")
- if (destDir != null) {
- oldDir.listFiles()?.forEach {
- it.renameTo(File(destDir, it.name))
- }
- }
- }
- }
- if (oldVersion < 26) {
- // Delete external chapter cache dir.
- val extCache = context.externalCacheDir
- if (extCache != null) {
- val chapterCache = File(extCache, "chapter_disk_cache")
- if (chapterCache.exists()) {
- chapterCache.deleteRecursively()
- }
- }
- }
- if (oldVersion < 44) {
- // Reset sorting preference if using removed sort by source
- val oldSortingMode = prefs.getInt(libraryPreferences.sortingMode().key(), 0)
-
- if (oldSortingMode == 5) { // SOURCE = 5
- prefs.edit {
- putInt(libraryPreferences.sortingMode().key(), 0) // ALPHABETICAL = 0
- }
- }
- }
- if (oldVersion < 52) {
- // Migrate library filters to tri-state versions
- fun convertBooleanPrefToTriState(key: String): Int {
- val oldPrefValue = prefs.getBoolean(key, false)
- return if (oldPrefValue) {
- 1
- } else {
- 0
- }
- }
- prefs.edit {
- putInt(
- libraryPreferences.filterDownloaded().key(),
- convertBooleanPrefToTriState("pref_filter_downloaded_key"),
- )
- remove("pref_filter_downloaded_key")
-
- putInt(
- libraryPreferences.filterUnread().key(),
- convertBooleanPrefToTriState("pref_filter_unread_key"),
- )
- remove("pref_filter_unread_key")
-
- putInt(
- libraryPreferences.filterCompleted().key(),
- convertBooleanPrefToTriState("pref_filter_completed_key"),
- )
- remove("pref_filter_completed_key")
- }
- }
- if (oldVersion < 54) {
- // Force MAL log out due to login flow change
- // v52: switched from scraping to WebView
- // v53: switched from WebView to OAuth
- if (trackerManager.myAnimeList.isLoggedIn) {
- trackerManager.myAnimeList.logout()
- context.toast(MR.strings.myanimelist_relogin)
- }
- }
- if (oldVersion < 57) {
- // Migrate DNS over HTTPS setting
- val wasDohEnabled = prefs.getBoolean("enable_doh", false)
- if (wasDohEnabled) {
- prefs.edit {
- putInt(networkPreferences.dohProvider().key(), PREF_DOH_CLOUDFLARE)
- remove("enable_doh")
- }
- }
- }
- if (oldVersion < 59) {
- // Reset rotation to Free after replacing Lock
- if (prefs.contains("pref_rotation_type_key")) {
- prefs.edit {
- putInt("pref_rotation_type_key", 1)
- }
- }
- }
- if (oldVersion < 60) {
- // Migrate Rotation and Viewer values to default values for viewer_flags
- val newOrientation = when (prefs.getInt("pref_rotation_type_key", 1)) {
- 1 -> ReaderOrientation.FREE.flagValue
- 2 -> ReaderOrientation.PORTRAIT.flagValue
- 3 -> ReaderOrientation.LANDSCAPE.flagValue
- 4 -> ReaderOrientation.LOCKED_PORTRAIT.flagValue
- 5 -> ReaderOrientation.LOCKED_LANDSCAPE.flagValue
- else -> ReaderOrientation.FREE.flagValue
- }
-
- // Reading mode flag and prefValue is the same value
- val newReadingMode = prefs.getInt("pref_default_viewer_key", 1)
-
- prefs.edit {
- putInt("pref_default_orientation_type_key", newOrientation)
- remove("pref_rotation_type_key")
- putInt("pref_default_reading_mode_key", newReadingMode)
- remove("pref_default_viewer_key")
- }
- }
- if (oldVersion < 61) {
- // Handle removed every 1 or 2 hour library updates
- val updateInterval = libraryPreferences.autoUpdateInterval().get()
- if (updateInterval == 1 || updateInterval == 2) {
- libraryPreferences.autoUpdateInterval().set(3)
- LibraryUpdateJob.setupTask(context, 3)
- }
- }
- if (oldVersion < 64) {
- val oldSortingMode = prefs.getInt(libraryPreferences.sortingMode().key(), 0)
- val oldSortingDirection = prefs.getBoolean("library_sorting_ascending", true)
-
- val newSortingMode = when (oldSortingMode) {
- 0 -> "ALPHABETICAL"
- 1 -> "LAST_READ"
- 2 -> "LAST_CHECKED"
- 3 -> "UNREAD"
- 4 -> "TOTAL_CHAPTERS"
- 6 -> "LATEST_CHAPTER"
- 8 -> "DATE_FETCHED"
- 7 -> "DATE_ADDED"
- else -> "ALPHABETICAL"
- }
-
- val newSortingDirection = when (oldSortingDirection) {
- true -> "ASCENDING"
- else -> "DESCENDING"
- }
-
- prefs.edit(commit = true) {
- remove(libraryPreferences.sortingMode().key())
- remove("library_sorting_ascending")
- }
-
- prefs.edit {
- putString(libraryPreferences.sortingMode().key(), newSortingMode)
- putString("library_sorting_ascending", newSortingDirection)
- }
- }
- if (oldVersion < 70) {
- if (sourcePreferences.enabledLanguages().isSet()) {
- sourcePreferences.enabledLanguages() += "all"
- }
- }
- if (oldVersion < 71) {
- // Handle removed every 3, 4, 6, and 8 hour library updates
- val updateInterval = libraryPreferences.autoUpdateInterval().get()
- if (updateInterval in listOf(3, 4, 6, 8)) {
- libraryPreferences.autoUpdateInterval().set(12)
- LibraryUpdateJob.setupTask(context, 12)
- }
- }
- if (oldVersion < 72) {
- val oldUpdateOngoingOnly = prefs.getBoolean("pref_update_only_non_completed_key", true)
- if (!oldUpdateOngoingOnly) {
- libraryPreferences.autoUpdateMangaRestrictions() -= MANGA_NON_COMPLETED
- }
- }
- if (oldVersion < 75) {
- val oldSecureScreen = prefs.getBoolean("secure_screen", false)
- if (oldSecureScreen) {
- securityPreferences.secureScreen().set(SecurityPreferences.SecureScreenMode.ALWAYS)
- }
- if (
- DeviceUtil.isMiui &&
- basePreferences.extensionInstaller().get() == BasePreferences.ExtensionInstaller.PACKAGEINSTALLER
- ) {
- basePreferences.extensionInstaller().set(BasePreferences.ExtensionInstaller.LEGACY)
- }
- }
- if (oldVersion < 77) {
- val oldReaderTap = prefs.getBoolean("reader_tap", false)
- if (!oldReaderTap) {
- readerPreferences.navigationModePager().set(5)
- readerPreferences.navigationModeWebtoon().set(5)
- }
- }
- if (oldVersion < 81) {
- // Handle renamed enum values
- prefs.edit {
- val newSortingMode = when (
- val oldSortingMode = prefs.getString(
- libraryPreferences.sortingMode().key(),
- "ALPHABETICAL",
- )
- ) {
- "LAST_CHECKED" -> "LAST_MANGA_UPDATE"
- "UNREAD" -> "UNREAD_COUNT"
- "DATE_FETCHED" -> "CHAPTER_FETCH_DATE"
- else -> oldSortingMode
- }
- putString(libraryPreferences.sortingMode().key(), newSortingMode)
- }
- }
- if (oldVersion < 82) {
- prefs.edit {
- val sort = prefs.getString(libraryPreferences.sortingMode().key(), null) ?: return@edit
- val direction = prefs.getString("library_sorting_ascending", "ASCENDING")!!
- putString(libraryPreferences.sortingMode().key(), "$sort,$direction")
- remove("library_sorting_ascending")
- }
- }
- if (oldVersion < 84) {
- if (backupPreferences.backupInterval().get() == 0) {
- backupPreferences.backupInterval().set(12)
- BackupCreateJob.setupTask(context)
- }
- }
- if (oldVersion < 85) {
- val preferences = listOf(
- libraryPreferences.filterChapterByRead(),
- libraryPreferences.filterChapterByDownloaded(),
- libraryPreferences.filterChapterByBookmarked(),
- libraryPreferences.sortChapterBySourceOrNumber(),
- libraryPreferences.displayChapterByNameOrNumber(),
- libraryPreferences.sortChapterByAscendingOrDescending(),
- )
-
- prefs.edit {
- preferences.forEach { preference ->
- val key = preference.key()
- val value = prefs.getInt(key, Int.MIN_VALUE)
- if (value == Int.MIN_VALUE) return@forEach
- remove(key)
- putLong(key, value.toLong())
- }
- }
- }
- if (oldVersion < 86) {
- if (uiPreferences.themeMode().isSet()) {
- prefs.edit {
- val themeMode = prefs.getString(uiPreferences.themeMode().key(), null) ?: return@edit
- putString(uiPreferences.themeMode().key(), themeMode.uppercase())
- }
- }
- }
- if (oldVersion < 92) {
- val trackingQueuePref = context.getSharedPreferences("tracking_queue", Context.MODE_PRIVATE)
- trackingQueuePref.all.forEach {
- val (_, lastChapterRead) = it.value.toString().split(":")
- trackingQueuePref.edit {
- remove(it.key)
- putFloat(it.key, lastChapterRead.toFloat())
- }
- }
- }
- if (oldVersion < 96) {
- LibraryUpdateJob.cancelAllWorks(context)
- LibraryUpdateJob.setupTask(context)
- }
- if (oldVersion < 97) {
- // Removed background jobs
- context.workManager.cancelAllWorkByTag("UpdateChecker")
- context.workManager.cancelAllWorkByTag("ExtensionUpdate")
- prefs.edit {
- remove("automatic_ext_updates")
- }
- }
- if (oldVersion < 99) {
- val prefKeys = listOf(
- "pref_filter_library_downloaded",
- "pref_filter_library_unread",
- "pref_filter_library_started",
- "pref_filter_library_bookmarked",
- "pref_filter_library_completed",
- ) + trackerManager.trackers.map { "pref_filter_library_tracked_${it.id}" }
-
- prefKeys.forEach { key ->
- val pref = preferenceStore.getInt(key, 0)
- prefs.edit {
- remove(key)
-
- val newValue = when (pref.get()) {
- 1 -> TriState.ENABLED_IS
- 2 -> TriState.ENABLED_NOT
- else -> TriState.DISABLED
- }
-
- preferenceStore.getEnum("${key}_v2", TriState.DISABLED).set(newValue)
- }
- }
- }
- if (oldVersion < 105) {
- val pref = libraryPreferences.autoUpdateDeviceRestrictions()
- if (pref.isSet() && "battery_not_low" in pref.get()) {
- pref.getAndSet { it - "battery_not_low" }
- }
- }
- if (oldVersion < 106) {
- val pref = preferenceStore.getInt("relative_time", 7)
- if (pref.get() == 0) {
- uiPreferences.relativeTime().set(false)
- }
- }
- if (oldVersion < 113) {
- val prefsToReplace = listOf(
- "pref_download_only",
- "incognito_mode",
- "last_catalogue_source",
- "trusted_signatures",
- "last_app_closed",
- "library_update_last_timestamp",
- "library_unseen_updates_count",
- "last_used_category",
- "last_app_check",
- "last_ext_check",
- "last_version_code",
- "storage_dir",
- )
- replacePreferences(
- preferenceStore = preferenceStore,
- filterPredicate = { it.key in prefsToReplace },
- newKey = { Preference.appStateKey(it) },
- )
-
- // Deleting old download cache index files, but might as well clear it all out
- context.cacheDir.deleteRecursively()
- }
- if (oldVersion < 114) {
- sourcePreferences.extensionRepos().getAndSet {
- it.map { repo -> "https://raw.githubusercontent.com/$repo/repo" }.toSet()
- }
- }
- if (oldVersion < 116) {
- replacePreferences(
- preferenceStore = preferenceStore,
- filterPredicate = { it.key.startsWith("pref_mangasync_") || it.key.startsWith("track_token_") },
- newKey = { Preference.privateKey(it) },
- )
- }
- if (oldVersion < 117) {
- prefs.edit {
- remove(Preference.appStateKey("trusted_signatures"))
- }
- }
- return true
}
return false
}
}
-
-@Suppress("UNCHECKED_CAST")
-private fun replacePreferences(
- preferenceStore: PreferenceStore,
- filterPredicate: (Map.Entry) -> Boolean,
- newKey: (String) -> String,
-) {
- preferenceStore.getAll()
- .filter(filterPredicate)
- .forEach { (key, value) ->
- when (value) {
- is Int -> {
- preferenceStore.getInt(newKey(key)).set(value)
- preferenceStore.getInt(key).delete()
- }
- is Long -> {
- preferenceStore.getLong(newKey(key)).set(value)
- preferenceStore.getLong(key).delete()
- }
- is Float -> {
- preferenceStore.getFloat(newKey(key)).set(value)
- preferenceStore.getFloat(key).delete()
- }
- is String -> {
- preferenceStore.getString(newKey(key)).set(value)
- preferenceStore.getString(key).delete()
- }
- is Boolean -> {
- preferenceStore.getBoolean(newKey(key)).set(value)
- preferenceStore.getBoolean(key).delete()
- }
- is Set<*> -> (value as? Set)?.let {
- preferenceStore.getStringSet(newKey(key)).set(value)
- preferenceStore.getStringSet(key).delete()
- }
- }
- }
-}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt
index 817f8a222..4ef212999 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt
@@ -28,7 +28,7 @@ class BackupNotifier(private val context: Context) {
Notifications.CHANNEL_BACKUP_RESTORE_PROGRESS,
) {
setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher))
- setSmallIcon(R.drawable.ic_tachi)
+ setSmallIcon(R.drawable.ic_mihon)
setAutoCancel(false)
setOngoing(true)
setOnlyAlertOnce(true)
@@ -38,7 +38,7 @@ class BackupNotifier(private val context: Context) {
Notifications.CHANNEL_BACKUP_RESTORE_COMPLETE,
) {
setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher))
- setSmallIcon(R.drawable.ic_tachi)
+ setSmallIcon(R.drawable.ic_mihon)
setAutoCancel(false)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt b/app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt
index e0a5ffe8e..fb1278614 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt
@@ -1,6 +1,5 @@
package eu.kanade.tachiyomi.data.coil
-import android.os.Build
import androidx.core.graphics.drawable.toDrawable
import coil.ImageLoader
import coil.decode.DecodeResult
@@ -48,8 +47,7 @@ class TachiyomiImageDecoder(private val resources: ImageSource, private val opti
ImageUtil.findImageType(it)
}
return when (type) {
- ImageUtil.ImageType.AVIF, ImageUtil.ImageType.JXL -> true
- ImageUtil.ImageType.HEIF -> Build.VERSION.SDK_INT < Build.VERSION_CODES.O
+ ImageUtil.ImageType.AVIF, ImageUtil.ImageType.JXL, ImageUtil.ImageType.HEIF -> true
else -> false
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
index e78f7d1ec..617054566 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
@@ -416,7 +416,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
private const val WORK_NAME_AUTO = "LibraryUpdate-auto"
private const val WORK_NAME_MANUAL = "LibraryUpdate-manual"
- private const val ERROR_LOG_HELP_URL = "https://tachiyomi.org/docs/guides/troubleshooting/"
+ private const val ERROR_LOG_HELP_URL = "https://mihon.app/docs/guides/troubleshooting/"
private const val MANGA_PER_SOURCE_QUEUE_WARNING_THRESHOLD = 60
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
index 74e6c77e5..c21dd7d32 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
@@ -153,7 +153,7 @@ class LibraryUpdateNotifier(
) {
setContentTitle(context.stringResource(MR.strings.notification_update_error, failed))
setContentText(context.stringResource(MR.strings.action_show_errors))
- setSmallIcon(R.drawable.ic_tachi)
+ setSmallIcon(R.drawable.ic_mihon)
setContentIntent(NotificationReceiver.openErrorLogPendingActivity(context, uri))
}
@@ -193,7 +193,7 @@ class LibraryUpdateNotifier(
}
}
- setSmallIcon(R.drawable.ic_tachi)
+ setSmallIcon(R.drawable.ic_mihon)
setLargeIcon(notificationBitmap)
setGroup(Notifications.GROUP_NEW_CHAPTERS)
@@ -229,7 +229,7 @@ class LibraryUpdateNotifier(
setContentText(description)
setStyle(NotificationCompat.BigTextStyle().bigText(description))
- setSmallIcon(R.drawable.ic_tachi)
+ setSmallIcon(R.drawable.ic_mihon)
if (icon != null) {
setLargeIcon(icon)
@@ -377,7 +377,7 @@ class LibraryUpdateNotifier(
companion object {
const val HELP_WARNING_URL =
- "https://tachiyomi.org/docs/faq/library#why-am-i-warned-about-large-bulk-updates-and-downloads"
+ "https://mihon.app/docs/faq/library#why-am-i-warned-about-large-bulk-updates-and-downloads"
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
index fddd669d5..3983912cc 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
@@ -5,7 +5,6 @@ import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.net.Uri
-import android.os.Build
import androidx.core.net.toUri
import eu.kanade.tachiyomi.data.backup.restore.BackupRestoreJob
import eu.kanade.tachiyomi.data.download.DownloadManager
@@ -368,20 +367,18 @@ class NotificationReceiver : BroadcastReceiver() {
When programmatically dismissing this notification, the group notification is not automatically dismissed.
*/
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- val groupKey = context.notificationManager.activeNotifications.find {
- it.id == notificationId
- }?.groupKey
+ val groupKey = context.notificationManager.activeNotifications.find {
+ it.id == notificationId
+ }?.groupKey
- if (groupId != null && groupId != 0 && !groupKey.isNullOrEmpty()) {
- val notifications = context.notificationManager.activeNotifications.filter {
- it.groupKey == groupKey
- }
+ if (groupId != null && groupId != 0 && !groupKey.isNullOrEmpty()) {
+ val notifications = context.notificationManager.activeNotifications.filter {
+ it.groupKey == groupKey
+ }
- if (notifications.size == 2) {
- context.cancelNotification(groupId)
- return
- }
+ if (notifications.size == 2) {
+ context.cancelNotification(groupId)
+ return
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
index de6ef2f8e..3037220fe 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
@@ -363,7 +363,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
}
companion object {
- private const val clientId = "385"
+ private const val clientId = "16329"
private const val apiUrl = "https://graphql.anilist.co/"
private const val baseUrl = "https://anilist.co/api/v2/"
private const val baseMangaUrl = "https://anilist.co/manga/"
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
index 8dbde5324..9d2073707 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
@@ -189,7 +189,7 @@ class BangumiApi(
private const val oauthUrl = "https://bgm.tv/oauth/access_token"
private const val loginUrl = "https://bgm.tv/oauth/authorize"
- private const val redirectUrl = "tachiyomi://bangumi-auth"
+ private const val redirectUrl = "mihon://bangumi-auth"
fun authUrl(): Uri =
loginUrl.toUri().buildUpon()
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt
index c67cc2a2a..518b872b4 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt
@@ -278,7 +278,7 @@ class MyAnimeListApi(
companion object {
// Registered under arkon's MAL account
- private const val clientId = "8fd3313bc138e8b890551aa1de1a2589"
+ private const val clientId = "f46004a9c16483b6d87b5bf10de56d97"
private const val baseOAuthUrl = "https://myanimelist.net/v1/oauth2"
private const val baseApiUrl = "https://api.myanimelist.net/v2"
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
index dca1c290d..d84b01330 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
@@ -200,7 +200,7 @@ class ShikimoriApi(
private const val oauthUrl = "$baseUrl/oauth/token"
private const val loginUrl = "$baseUrl/oauth/authorize"
- private const val redirectUrl = "tachiyomi://shikimori-auth"
+ private const val redirectUrl = "mihon://shikimori-auth"
fun authUrl(): Uri = loginUrl.toUri().buildUpon()
.appendQueryParameter("client_id", clientId)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
index c50524766..2197dd992 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
@@ -44,9 +44,9 @@ class AppUpdateChecker {
val GITHUB_REPO: String by lazy {
if (BuildConfig.PREVIEW) {
- "tachiyomiorg/tachiyomi-preview"
+ "mihonapp/mihon-preview"
} else {
- "tachiyomiorg/tachiyomi"
+ "mihonapp/mihon"
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateNotifier.kt
index dd7b8a68b..6c20bea64 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateNotifier.kt
@@ -149,11 +149,11 @@ internal class AppUpdateNotifier(private val context: Context) {
with(notificationBuilder) {
setContentTitle(context.stringResource(MR.strings.update_check_notification_update_available))
setContentText(context.stringResource(MR.strings.update_check_fdroid_migration_info))
- setSmallIcon(R.drawable.ic_tachi)
+ setSmallIcon(R.drawable.ic_mihon)
setContentIntent(
NotificationHandler.openUrl(
context,
- "https://tachiyomi.org/docs/faq/general#how-do-i-update-from-the-f-droid-builds",
+ "https://mihon.app/docs/faq/general#how-do-i-update-from-the-f-droid-builds",
),
)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt
index 68eacd9d6..33ff287c7 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt
@@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.extension.installer
import android.app.Service
import android.content.pm.PackageManager
-import android.os.Build
import eu.kanade.tachiyomi.extension.model.InstallStep
import eu.kanade.tachiyomi.util.system.getUriSize
import eu.kanade.tachiyomi.util.system.toast
@@ -50,11 +49,7 @@ class ShizukuInstaller(private val service: Service) : Installer(service) {
try {
val size = service.getUriSize(entry.uri) ?: throw IllegalStateException()
service.contentResolver.openInputStream(entry.uri)!!.use {
- val createCommand = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- "pm install-create --user current -r -i ${service.packageName} -S $size"
- } else {
- "pm install-create -r -i ${service.packageName} -S $size"
- }
+ val createCommand = "pm install-create --user current -r -i ${service.packageName} -S $size"
val createResult = exec(createCommand)
sessionId = SESSION_ID_REGEX.find(createResult.out)?.value
?: throw RuntimeException("Failed to create install session")
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallService.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallService.kt
index 826db44cd..3ffe9f783 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallService.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallService.kt
@@ -25,7 +25,7 @@ class ExtensionInstallService : Service() {
override fun onCreate() {
val notification = notificationBuilder(Notifications.CHANNEL_EXTENSIONS_UPDATE) {
- setSmallIcon(R.drawable.ic_tachi)
+ setSmallIcon(R.drawable.ic_mihon)
setAutoCancel(false)
setOngoing(true)
setShowWhen(false)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt
index aaf47a3af..a3ebea28f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt
@@ -32,7 +32,7 @@ fun Screen.migrateSourceTab(): TabContent {
title = stringResource(MR.strings.migration_help_guide),
icon = Icons.AutoMirrored.Outlined.HelpOutline,
onClick = {
- uriHandler.openUri("https://tachiyomi.org/docs/guides/source-migration")
+ uriHandler.openUri("https://mihon.app/docs/guides/source-migration")
},
),
),
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
index 3b5fe77d9..c0125bbd8 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
@@ -133,16 +133,7 @@ class MainActivity : BaseActivity() {
val didMigration = if (isLaunch) {
Migrations.upgrade(
context = applicationContext,
- basePreferences = preferences,
- uiPreferences = uiPreferences,
preferenceStore = Injekt.get(),
- networkPreferences = Injekt.get(),
- sourcePreferences = sourcePreferences,
- securityPreferences = Injekt.get(),
- libraryPreferences = libraryPreferences,
- readerPreferences = Injekt.get(),
- backupPreferences = Injekt.get(),
- trackerManager = Injekt.get(),
)
} else {
false
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
index e04fe78e6..e4fd1c6e5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
@@ -1,6 +1,5 @@
package eu.kanade.tachiyomi.ui.reader.loader
-import android.os.Build
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
@@ -14,11 +13,7 @@ import java.util.zip.ZipFile
*/
internal class ZipPageLoader(file: File) : PageLoader() {
- private val zip = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- ZipFile(file, StandardCharsets.ISO_8859_1)
- } else {
- ZipFile(file)
- }
+ private val zip = ZipFile(file, StandardCharsets.ISO_8859_1)
override var isLocal: Boolean = true
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt
index 3c0fab2ab..c0575c0d5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt
@@ -2,9 +2,7 @@ package eu.kanade.tachiyomi.util.storage
import android.content.Context
import android.net.Uri
-import android.os.Build
import androidx.core.content.FileProvider
-import androidx.core.net.toUri
import eu.kanade.tachiyomi.BuildConfig
import java.io.File
@@ -17,11 +15,7 @@ val Context.cacheImageDir: File
* @param context context of application
*/
fun File.getUriCompat(context: Context): Uri {
- return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", this)
- } else {
- this.toUri()
- }
+ return FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", this)
}
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt
index 96560e59a..92b5f3843 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt
@@ -170,12 +170,8 @@ fun Context.isInstalledFromFDroid(): Boolean {
}
fun Context.launchRequestPackageInstallsPermission() {
- val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).apply {
- data = Uri.parse("package:$packageName")
- }
- } else {
- Intent(Settings.ACTION_SECURITY_SETTINGS)
+ Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).apply {
+ data = Uri.parse("package:$packageName")
+ startActivity(this)
}
- startActivity(intent)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/NetworkExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/NetworkExtensions.kt
index 8d72a9c86..18e16baac 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/NetworkExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/NetworkExtensions.kt
@@ -18,8 +18,7 @@ fun Context.isOnline(): Boolean {
val networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork) ?: return false
val maxTransport = when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1 -> NetworkCapabilities.TRANSPORT_LOWPAN
- Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> NetworkCapabilities.TRANSPORT_WIFI_AWARE
- else -> NetworkCapabilities.TRANSPORT_VPN
+ else -> NetworkCapabilities.TRANSPORT_WIFI_AWARE
}
return (NetworkCapabilities.TRANSPORT_CELLULAR..maxTransport).any(networkCapabilities::hasTransport)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/NetworkStateTracker.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/NetworkStateTracker.kt
index a4a686541..0c309ae55 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/NetworkStateTracker.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/NetworkStateTracker.kt
@@ -1,14 +1,9 @@
package eu.kanade.tachiyomi.util.system
-import android.content.BroadcastReceiver
import android.content.Context
-import android.content.Intent
-import android.content.IntentFilter
-import android.net.ConnectivityManager
import android.net.ConnectivityManager.NetworkCallback
import android.net.Network
import android.net.NetworkCapabilities
-import android.os.Build
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.callbackFlow
@@ -17,11 +12,7 @@ data class NetworkState(
val isValidated: Boolean,
val isWifi: Boolean,
) {
- val isOnline = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- isConnected && isValidated
- } else {
- isConnected
- }
+ val isOnline = isConnected && isValidated
}
@Suppress("DEPRECATION")
@@ -34,34 +25,18 @@ fun Context.activeNetworkState(): NetworkState {
)
}
-@Suppress("DEPRECATION")
fun Context.networkStateFlow() = callbackFlow {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- val networkCallback = object : NetworkCallback() {
- override fun onCapabilitiesChanged(network: Network, networkCapabilities: NetworkCapabilities) {
- trySend(activeNetworkState())
- }
- override fun onLost(network: Network) {
- trySend(activeNetworkState())
- }
+ val networkCallback = object : NetworkCallback() {
+ override fun onCapabilitiesChanged(network: Network, networkCapabilities: NetworkCapabilities) {
+ trySend(activeNetworkState())
}
-
- connectivityManager.registerDefaultNetworkCallback(networkCallback)
- awaitClose {
- connectivityManager.unregisterNetworkCallback(networkCallback)
- }
- } else {
- val receiver = object : BroadcastReceiver() {
- override fun onReceive(context: Context, intent: Intent) {
- if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) {
- trySend(activeNetworkState())
- }
- }
- }
-
- registerReceiver(receiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
- awaitClose {
- unregisterReceiver(receiver)
+ override fun onLost(network: Network) {
+ trySend(activeNetworkState())
}
}
+
+ connectivityManager.registerDefaultNetworkCallback(networkCallback)
+ awaitClose {
+ connectivityManager.unregisterNetworkCallback(networkCallback)
+ }
}
diff --git a/app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml b/app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml
deleted file mode 100644
index fd2784fbb..000000000
--- a/app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable-v26/sc_explore_48dp.xml b/app/src/main/res/drawable-v26/sc_explore_48dp.xml
deleted file mode 100644
index 9737e6031..000000000
--- a/app/src/main/res/drawable-v26/sc_explore_48dp.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable-v26/sc_history_48dp.xml b/app/src/main/res/drawable-v26/sc_history_48dp.xml
deleted file mode 100644
index f8b0ff94a..000000000
--- a/app/src/main/res/drawable-v26/sc_history_48dp.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable-v26/sc_new_releases_48dp.xml b/app/src/main/res/drawable-v26/sc_new_releases_48dp.xml
deleted file mode 100644
index 256f5ff8f..000000000
--- a/app/src/main/res/drawable-v26/sc_new_releases_48dp.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 000000000..04ac2248a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
index c83d7d907..b293ee17e 100644
--- a/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -1,27 +1,14 @@
+ android:viewportWidth="432"
+ android:viewportHeight="432">
+
-
-
-
-
-
-
+ android:pathData="M162.3,173.59L161.22,148.63C164.47,149.25 168.35,149.41 177.18,149.41C187.87,149.41 201.98,148.79 209.26,147.86C212.36,147.55 213.6,147.09 215.61,146L232.35,160.26C230.8,162.43 230.34,163.36 228.63,167.7C227.24,171.11 220.88,190.79 218.4,199.16C229.87,201.48 236.22,203.18 244.9,206.75C245.99,199.16 246.14,195.13 246.14,181.33C246.14,177.77 245.99,175.76 245.52,172.5L272.49,173.43C271.71,177.15 271.56,178.7 271.4,184.74C270.78,199.31 270.16,206.29 268.61,216.82C279.31,222.25 279.31,222.25 284.73,225.19C287.52,226.74 288.14,227.05 290,227.67L281.01,256.65C276.67,252.78 270.63,248.59 261.8,243.63C254.05,262.08 241.18,275.56 221.66,286.25C215.15,277.57 210.19,272.3 202.29,266.11C213.75,260.68 219.02,257.27 225.07,251.54C230.96,245.8 234.83,240.22 238.55,231.85C228.63,227.36 222.28,225.35 211.27,223.02C204.92,241.93 199.8,254.02 195.31,261.3C189.27,271.06 181.05,276.18 171.6,276.18C164.32,276.18 156.88,272.92 151.45,267.35C145.25,260.99 142,252.16 142,241.93C142,226.74 149.28,213.57 161.99,205.35C170.21,200.09 178.88,197.76 192.68,196.99C195.47,187.84 197.79,179.94 199.96,171.11C193.14,171.73 184.62,172.19 174.24,172.65C168.66,172.81 166.8,172.96 162.3,173.59ZM185.86,220.7C178.57,221.94 174.24,224.26 170.36,229.22C167.42,232.63 166.02,236.66 166.02,241C166.02,245.8 168.35,249.37 171.29,249.37C174.85,249.37 178.88,241.31 185.86,220.7Z"
+ android:fillColor="#031019"/>
+
diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml
new file mode 100644
index 000000000..0f67d4a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_monochrome.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_mihon.xml b/app/src/main/res/drawable/ic_mihon.xml
new file mode 100644
index 000000000..20f0ee7a3
--- /dev/null
+++ b/app/src/main/res/drawable/ic_mihon.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_tachi_splash.xml b/app/src/main/res/drawable/ic_mihon_splash.xml
similarity index 83%
rename from app/src/main/res/drawable/ic_tachi_splash.xml
rename to app/src/main/res/drawable/ic_mihon_splash.xml
index 3fdf1b6f5..fa126b0ae 100644
--- a/app/src/main/res/drawable/ic_tachi_splash.xml
+++ b/app/src/main/res/drawable/ic_mihon_splash.xml
@@ -3,6 +3,6 @@
diff --git a/app/src/main/res/drawable/ic_tachi.xml b/app/src/main/res/drawable/ic_tachi.xml
deleted file mode 100644
index 0c988fbf1..000000000
--- a/app/src/main/res/drawable/ic_tachi.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_tachi_monochrome_launcher.xml b/app/src/main/res/drawable/ic_tachi_monochrome_launcher.xml
deleted file mode 100644
index 276da9df2..000000000
--- a/app/src/main/res/drawable/ic_tachi_monochrome_launcher.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/sc_collections_bookmark_48dp.xml b/app/src/main/res/drawable/sc_collections_bookmark_48dp.xml
index d45e333f7..fd2784fbb 100644
--- a/app/src/main/res/drawable/sc_collections_bookmark_48dp.xml
+++ b/app/src/main/res/drawable/sc_collections_bookmark_48dp.xml
@@ -1,24 +1,24 @@
-
-
-
-
-
-
-
-
-
+ tools:keep="@drawable/sc_collections_bookmark_48dp">
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/sc_explore_48dp.xml b/app/src/main/res/drawable/sc_explore_48dp.xml
index bc97eb259..9737e6031 100644
--- a/app/src/main/res/drawable/sc_explore_48dp.xml
+++ b/app/src/main/res/drawable/sc_explore_48dp.xml
@@ -1,21 +1,21 @@
-
-
-
-
-
-
-
-
+ tools:keep="@drawable/sc_explore_48dp">
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/sc_history_48dp.xml b/app/src/main/res/drawable/sc_history_48dp.xml
index 3ee54e497..f8b0ff94a 100644
--- a/app/src/main/res/drawable/sc_history_48dp.xml
+++ b/app/src/main/res/drawable/sc_history_48dp.xml
@@ -1,21 +1,21 @@
-
-
-
-
-
-
-
-
+ tools:keep="@drawable/sc_history_48dp">
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/sc_new_releases_48dp.xml b/app/src/main/res/drawable/sc_new_releases_48dp.xml
index 20d04862c..256f5ff8f 100644
--- a/app/src/main/res/drawable/sc_new_releases_48dp.xml
+++ b/app/src/main/res/drawable/sc_new_releases_48dp.xml
@@ -1,21 +1,21 @@
-
-
-
-
-
-
-
-
+ tools:keep="@drawable/sc_new_releases_48dp">
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index 1ad255903..000000000
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index 1ad255903..000000000
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 8a33a1626..000000000
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index ec3538f9b..000000000
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index f84e248d0..000000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index 35ee51185..000000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 959085a1d..000000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index e48e3f437..000000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index db5aeba41..000000000
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index d6f9884f6..000000000
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 89f53f50a..000000000
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index ead7c3241..000000000
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap/ic_launcher.xml
similarity index 58%
rename from app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
rename to app/src/main/res/mipmap/ic_launcher.xml
index 1ad255903..04091bd10 100644
--- a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/main/res/mipmap/ic_launcher.xml
@@ -1,6 +1,6 @@
-
+
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index f6597c58b..2e6458eca 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -373,7 +373,7 @@