diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 20814d2cb..d7c58f0fd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -99,6 +99,11 @@ android { buildConfigField("boolean", "INCLUDE_UPDATER", "true") dimension = "default" } + create("foss") { + buildConfigField("boolean", "INCLUDE_UPDATER", "true") + dimension = "default" + applicationIdSuffix = "t-foss" + } create("dev") { // Include pseudolocales: https://developer.android.com/guide/topics/resources/pseudolocales resourceConfigurations.addAll(listOf("en", "en_XA", "ar_XB", "xxhdpi")) @@ -291,9 +296,12 @@ androidComponents { ) } } + // Only excluding in standard and foss flavors because this breaks + // Layout Inspector's Compose tree onVariants(selector().withFlavor("default" to "standard")) { - // Only excluding in standard flavor because this breaks - // Layout Inspector's Compose tree + it.packaging.resources.excludes.add("META-INF/*.version") + } + onVariants(selector().withFlavor("default" to "foss")) { it.packaging.resources.excludes.add("META-INF/*.version") } } diff --git a/app/src/foss/java/mihon/core/firebase/FirebaseConfig.kt b/app/src/foss/java/mihon/core/firebase/FirebaseConfig.kt new file mode 100644 index 000000000..820543bd0 --- /dev/null +++ b/app/src/foss/java/mihon/core/firebase/FirebaseConfig.kt @@ -0,0 +1,11 @@ +package mihon.core.firebase + +import android.content.Context + +object FirebaseConfig { + fun init(context: Context) = Unit + + fun setAnalyticsEnabled(enabled: Boolean) = Unit + + fun setCrashlyticsEnabled(enabled: Boolean) = Unit +} diff --git a/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt b/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt index 6ad493b7e..259d2cea2 100644 --- a/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt +++ b/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt @@ -37,6 +37,7 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.compose.LocalLifecycleOwner import eu.kanade.presentation.util.rememberRequestPackageInstallsPermissionState import eu.kanade.tachiyomi.core.security.PrivacyPreferences +import eu.kanade.tachiyomi.util.system.isFossFlavor import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource @@ -117,6 +118,8 @@ internal class PermissionStep : OnboardingStep { }, ) + if (isFossFlavor) return@Column + HorizontalDivider( modifier = Modifier.padding(vertical = 8.dp, horizontal = 16.dp), color = MaterialTheme.colorScheme.onPrimaryContainer, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt index 315cc41fb..3126366a0 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt @@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.core.security.PrivacyPreferences import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported +import eu.kanade.tachiyomi.util.system.isFossFlavor import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableMap import tachiyomi.core.common.i18n.stringResource @@ -31,10 +32,12 @@ object SettingsSecurityScreen : SearchableSettings { override fun getPreferences(): List { val securityPreferences = remember { Injekt.get() } val privacyPreferences = remember { Injekt.get() } - return listOf( - getSecurityGroup(securityPreferences), - getFirebaseGroup(privacyPreferences), - ) + return buildList { + add(getSecurityGroup(securityPreferences)) + if (!isFossFlavor) { + add(getFirebaseGroup(privacyPreferences)) + } + } } @Composable 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 e91a0576c..ebdbe90c9 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 @@ -35,6 +35,7 @@ import eu.kanade.tachiyomi.ui.more.NewUpdateScreen import eu.kanade.tachiyomi.util.CrashLogUtil import eu.kanade.tachiyomi.util.lang.toDateTimestampString import eu.kanade.tachiyomi.util.system.copyToClipboard +import eu.kanade.tachiyomi.util.system.isFossFlavor import eu.kanade.tachiyomi.util.system.toast import kotlinx.coroutines.launch import logcat.LogPriority @@ -121,7 +122,7 @@ object AboutScreen : Screen() { versionName = result.release.version, changelogInfo = result.release.info, releaseLink = result.release.releaseLink, - downloadLink = result.release.getDownloadLink(), + downloadLink = result.release.getDownloadLink(isFossFlavor), ) navigator.push(updateScreen) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 0f15cf095..76f00fe4e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -44,6 +44,7 @@ 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.isFossFlavor import eu.kanade.tachiyomi.util.system.notify import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.launchIn 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 d3632767c..c5308b2cf 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 @@ -45,6 +45,8 @@ class AppUpdateChecker { val GITHUB_REPO: String by lazy { if (BuildConfig.PREVIEW) { "mihonapp/mihon-preview" + } else if (BuildConfig.FLAVOR == "foss") { + "mihonapp/mihon-foss" } else { "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 35147790f..c21399ae6 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 @@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.notification.NotificationHandler import eu.kanade.tachiyomi.data.notification.NotificationReceiver import eu.kanade.tachiyomi.data.notification.Notifications +import eu.kanade.tachiyomi.util.system.isFossFlavor import eu.kanade.tachiyomi.util.system.notificationBuilder import eu.kanade.tachiyomi.util.system.notify import tachiyomi.core.common.i18n.stringResource @@ -38,7 +39,7 @@ internal class AppUpdateNotifier(private val context: Context) { fun promptUpdate(release: Release) { val updateIntent = NotificationReceiver.downloadAppUpdatePendingBroadcast( context, - release.getDownloadLink(), + release.getDownloadLink(isFossFlavor), release.version, ) 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 aefe0fe77..2fcfb0c8f 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 @@ -78,6 +78,7 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.ui.more.NewUpdateScreen import eu.kanade.tachiyomi.ui.more.OnboardingScreen import eu.kanade.tachiyomi.util.system.dpToPx +import eu.kanade.tachiyomi.util.system.isFossFlavor import eu.kanade.tachiyomi.util.system.isNavigationBarNeedsScrim import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.util.view.setComposeContent @@ -303,7 +304,7 @@ class MainActivity : BaseActivity() { versionName = result.release.version, changelogInfo = result.release.info, releaseLink = result.release.releaseLink, - downloadLink = result.release.getDownloadLink(), + downloadLink = result.release.getDownloadLink(isFossFlavor), ) navigator.push(updateScreen) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt index 933f44d90..881b4f82d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt @@ -5,6 +5,9 @@ import eu.kanade.tachiyomi.BuildConfig val isDevFlavor: Boolean get() = BuildConfig.FLAVOR == "dev" +val isFossFlavor: Boolean + get() = BuildConfig.FLAVOR == "foss" + val isPreviewBuildType: Boolean get() = BuildConfig.BUILD_TYPE == "preview" diff --git a/domain/src/main/java/tachiyomi/domain/release/model/Release.kt b/domain/src/main/java/tachiyomi/domain/release/model/Release.kt index 311d2f34f..30f3e8d4d 100644 --- a/domain/src/main/java/tachiyomi/domain/release/model/Release.kt +++ b/domain/src/main/java/tachiyomi/domain/release/model/Release.kt @@ -16,7 +16,13 @@ data class Release( * Get download link of latest release from the assets. * @return download link of latest release. */ - fun getDownloadLink(): String { + fun getDownloadLink(isFossFlavor: Boolean): String { + val fossFlavor = if (isFossFlavor) { + "-foss" + } else { + "" + } + val apkVariant = when (Build.SUPPORTED_ABIS[0]) { "arm64-v8a" -> "-arm64-v8a" "armeabi-v7a" -> "-armeabi-v7a" @@ -25,7 +31,7 @@ data class Release( else -> "" } - return assets.find { it.contains("mihon$apkVariant-") } ?: assets[0] + return assets.find { it.contains("mihon$fossFlavor$apkVariant-") } ?: assets[0] } /**