Skip to content

Commit

Permalink
Navigation labels can be hidden,
Browse files Browse the repository at this point in the history
Ask to restart for some experiments,
Tv app flavor,
Generate unique keys for each route,
Crash handler can be disabled,
Move some yomi stuff to the shared module,
Migrate some db parts to kmp,
Move UniqueIdGenerator.kt to the shared module,
Delete SettingsActivity2.kt,
Don't generate maps for AwerySettings,
Fixed crash when trying to deserialize an saved route state,
Don't serialize CatalogVideoFile duplicate fields,
Added missing android classes to jvm so that yomi extensions would work on desktop,
Correctly delete crash logs on the new splash screen,
Made AwerySettings available at the shared module,
Extension icons in the shared module

Signed-off-by: MrBoom <github@mrboomdev.ru>
  • Loading branch information
MrBoomDeveloper committed Jan 29, 2025
1 parent 2e09876 commit 135913a
Show file tree
Hide file tree
Showing 138 changed files with 1,959 additions and 1,456 deletions.
69 changes: 32 additions & 37 deletions androidApp/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import com.android.build.api.dsl.ApplicationProductFlavor
import com.mrboomdev.awery.gradle.ProjectVersion.generateVersionCode
import com.mrboomdev.awery.gradle.ProjectVersion.getGitCommitHash
import com.mrboomdev.awery.gradle.settings.GenerateSettingsTask
import com.mrboomdev.awery.gradle.settings.generatedSettingsKotlinDirectory
import com.mrboomdev.awery.gradle.settings.generatedSettingsResourcesDirectory

plugins {
alias(libs.plugins.android.app)
Expand Down Expand Up @@ -37,11 +34,6 @@ android {
buildConfigField("long", "BUILD_TIME", "${System.currentTimeMillis()}")
}

sourceSets["main"].apply {
kotlin.srcDir(generatedSettingsKotlinDirectory)
resources.srcDir(generatedSettingsResourcesDirectory)
}

buildTypes {
debug {
isDebuggable = true
Expand Down Expand Up @@ -76,10 +68,10 @@ android {

kotlinOptions {
jvmTarget = "17"
freeCompilerArgs = listOf("-Xcontext-receivers", "-Xmulti-platform", "-opt-in=kotlin.ExperimentalStdlibApi")
freeCompilerArgs = listOf("-Xcontext-receivers", "-Xmulti-platform")
}

flavorDimensions += "channel"
flavorDimensions += listOf("channel", "platform")

productFlavors {
fun ApplicationProductFlavor.createChannelProductFlavor(id: String, title: String) {
Expand Down Expand Up @@ -114,6 +106,15 @@ android {
manifestPlaceholders["appLabel"] = "Awery"
applicationIdSuffix = null
}

register("mobile") {
isDefault = true
dimension = "platform"
}

register("tv") {
dimension = "platform"
}
}
}

Expand All @@ -126,13 +127,16 @@ dependencies {
implementation(libs.androidx.fragment)
implementation(libs.androidx.shortcuts)
implementation(libs.androidx.preference)
implementation(libs.bundles.aniyomi)
implementation(projects.ext)
implementation(projects.resources)

// Yomi
implementation(libs.bundles.yomi)
implementation(libs.bundles.okhttp)

// Database
ksp(libs.androidx.room.compiler)
implementation(libs.androidx.room.runtime)
ksp(libs.room.compiler)
implementation(libs.room.runtime)

// UI
implementation(libs.androidx.splashscreen)
Expand All @@ -152,16 +156,16 @@ dependencies {
implementation(projects.shared)

// Compose
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.activity)
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.material3)
implementation(platform(libs.compose.bom))
implementation(libs.compose.activity)
implementation(libs.compose.ui)
implementation(libs.compose.material3)
implementation(libs.androidx.navigation.compose)
implementation(libs.compose.tv.material)
implementation(libs.compose.tv.foundation)
implementation(libs.androidx.adaptive)
implementation(libs.androidx.adaptive.layout)
implementation(libs.androidx.adaptive.navigation)
implementation(libs.adaptive)
implementation(libs.adaptive.layout)
implementation(libs.adaptive.navigation)
implementation(compose.components.resources)

// Markdown
Expand All @@ -174,12 +178,12 @@ dependencies {
implementation(libs.markwon.linkify)

// Exoplayer
implementation(libs.androidx.media3.exoplayer)
implementation(libs.androidx.media3.exoplayer.hls)
implementation(libs.androidx.media3.exoplayer.dash)
implementation(libs.androidx.media3.datasource.okhttp)
implementation(libs.androidx.media3.session)
implementation(libs.androidx.media3.ui)
implementation(libs.media3.exoplayer)
implementation(libs.media3.exoplayer.hls)
implementation(libs.media3.exoplayer.dash)
implementation(libs.media3.datasource.okhttp)
implementation(libs.media3.session)
implementation(libs.media3.ui)

// Networking
implementation(libs.coil.compose)
Expand All @@ -197,11 +201,10 @@ dependencies {
implementation(libs.moshi.kotlin)
implementation(libs.glide)
implementation(libs.glide.okhttp3)
implementation(libs.bundles.okhttp)
implementation(libs.retrostreams)

// Debugging
implementation(libs.androidx.compose.ui.tooling)
implementation(libs.compose.ui.tooling)
implementation(libs.xcrash)
debugImplementation(libs.leakcanary)
}
Expand All @@ -210,12 +213,4 @@ composeCompiler {
stabilityConfigurationFiles.add(
rootProject.layout.projectDirectory.file(
"compose-stability.txt"))
}

tasks.register<GenerateSettingsTask>("generateSettings") {
className = "AwerySettings"
inputFiles = listOf(
layout.projectDirectory.file("src/main/assets/app_settings.json"),
layout.projectDirectory.file("src/main/assets/system_settings.json")
)
}.let { tasks["preBuild"].dependsOn(it) }
}
5 changes: 0 additions & 5 deletions androidApp/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -232,11 +232,6 @@
android:windowSoftInputMode="adjustPan"
android:exported="false" />

<activity
android:name=".ui.mobile.screens.settings.SettingsActivity2"
android:windowSoftInputMode="adjustPan"
android:exported="false" />

<property
android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED"
android:value="true" />
Expand Down
9 changes: 7 additions & 2 deletions androidApp/src/main/java/com/mrboomdev/awery/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,12 @@ import com.mrboomdev.awery.generated.*
import com.mrboomdev.awery.platform.android.AndroidGlobals.toast
import com.mrboomdev.awery.platform.i18n
import com.mrboomdev.awery.ui.mobile.components.EmptyStateView
import com.mrboomdev.awery.ui.mobile.screens.SPLASH_EXTRA_BOOLEAN_ENABLE_COMPOSE
import com.mrboomdev.awery.ui.mobile.screens.SPLASH_EXTRA_BOOLEAN_REDIRECT_SETTINGS
import com.mrboomdev.awery.ui.mobile.screens.SplashActivity
import com.mrboomdev.awery.ui.mobile.screens.catalog.feeds.FeedsFragment
import com.mrboomdev.awery.ui.mobile.screens.search.MultiSearchActivity
import com.mrboomdev.awery.ui.mobile.screens.settings.SettingsActivity
import com.mrboomdev.awery.ui.mobile.screens.settings.SettingsActivity2
import com.mrboomdev.awery.util.IconStateful
import com.mrboomdev.awery.util.TabsTemplate
import com.mrboomdev.awery.util.extensions.UI_INSETS
Expand Down Expand Up @@ -343,7 +345,10 @@ class MainActivity : AppCompatActivity() {

binding.settingsWrapper.setOnClickListener {
if(AwerySettings.EXPERIMENT_SETTINGS2.value) {
startActivity(SettingsActivity2::class)
startActivity(requireContext().buildIntent(SplashActivity::class) {
putExtra(SPLASH_EXTRA_BOOLEAN_ENABLE_COMPOSE, true)
putExtra(SPLASH_EXTRA_BOOLEAN_REDIRECT_SETTINGS, true)
})
} else {
startActivity(SettingsActivity::class)
}
Expand Down
5 changes: 4 additions & 1 deletion androidApp/src/main/java/com/mrboomdev/awery/app/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,10 @@ class App : Application() {
override fun attachBaseContext(base: Context) {
AndroidGlobals.applicationContext = this
super.attachBaseContext(base)
CrashHandler.setup()

if(AwerySettings.ENABLE_CRASH_HANDLER.value) {
CrashHandler.setup()
}
}

@OptIn(DelicateCoroutinesApi::class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;

import com.mrboomdev.awery.utils.UniqueIdGenerator;
import com.mrboomdev.awery.ui.utils.UniqueIdGenerator;

import org.jetbrains.annotations.Contract;

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,22 @@ package com.mrboomdev.awery.ui.mobile.screens
import android.annotation.SuppressLint
import android.os.Bundle
import android.util.Log
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.CompositionLocalProvider
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.lifecycleScope
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.navigator.LocalNavigatorSaver
import cafe.adriel.voyager.navigator.Navigator
import cafe.adriel.voyager.navigator.NavigatorDisposeBehavior
import cafe.adriel.voyager.navigator.parcelableNavigatorSaver
import cafe.adriel.voyager.transitions.FadeTransition
import com.dokar.sonner.Toaster
import com.dokar.sonner.rememberToasterState
import com.mrboomdev.awery.app.App
import com.mrboomdev.awery.app.App.Companion.database
import com.mrboomdev.awery.app.AweryLifecycle.Companion.runDelayed
import com.mrboomdev.awery.app.CrashHandler
import com.mrboomdev.awery.app.ExtensionsManager
import com.mrboomdev.awery.sources.ExtensionsManager
import com.mrboomdev.awery.app.theme.ThemeManager.applyTheme
import com.mrboomdev.awery.databinding.ScreenSplashBinding
import com.mrboomdev.awery.extensions.ExtensionsFactory
Expand All @@ -30,7 +27,6 @@ import com.mrboomdev.awery.app.theme.LocalAweryTheme
import com.mrboomdev.awery.app.theme.ThemeManager.setThemedContent
import com.mrboomdev.awery.data.settings.PlatformSetting
import com.mrboomdev.awery.ext.data.Setting
import com.mrboomdev.awery.ext.data.getRecursively
import com.mrboomdev.awery.generated.*
import com.mrboomdev.awery.platform.LocalSettingHandler
import com.mrboomdev.awery.platform.PlatformSettingHandler
Expand All @@ -40,23 +36,22 @@ import com.mrboomdev.awery.platform.i18n
import com.mrboomdev.awery.ui.mobile.screens.setup.SetupActivity
import com.mrboomdev.awery.ui.routes.SettingsRoute
import com.mrboomdev.awery.ui.routes.SplashRoute
import com.mrboomdev.awery.ui.screens.SplashScreen
import com.mrboomdev.awery.ui.tv.TvMainActivity
import com.mrboomdev.awery.ui.utils.KSerializerNavigatorSaver
import com.mrboomdev.awery.ui.utils.LocalToaster
import com.mrboomdev.awery.util.async.AsyncFuture
import com.mrboomdev.awery.util.extensions.enableEdgeToEdge
import com.mrboomdev.awery.util.extensions.resolveAttrColor
import com.mrboomdev.awery.util.extensions.startActivity
import com.mrboomdev.awery.utils.buildIntent
import com.mrboomdev.awery.utils.readAssets
import com.mrboomdev.awery.utils.tryOr
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json
import org.jetbrains.compose.resources.ExperimentalResourceApi

private const val TAG = "SplashActivity"
const val SPLASH_EXTRA_BOOLEAN_ENABLE_COMPOSE = "enable_compose"
Expand All @@ -66,7 +61,7 @@ const val SPLASH_EXTRA_BOOLEAN_REDIRECT_SETTINGS = "redirect_settings"
class SplashActivity : AppCompatActivity() {
private lateinit var binding: ScreenSplashBinding

@OptIn(ExperimentalSerializationApi::class)
@OptIn(ExperimentalSerializationApi::class, ExperimentalResourceApi::class)
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()

Expand All @@ -81,13 +76,18 @@ class SplashActivity : AppCompatActivity() {
if(AwerySettings.EXPERIMENT_COMPOSE_UI.value || intent.getBooleanExtra(SPLASH_EXTRA_BOOLEAN_ENABLE_COMPOSE, false)) {
val initialRoute = when {
intent.getBooleanExtra(SPLASH_EXTRA_BOOLEAN_REDIRECT_SETTINGS, false) -> {
val settings = runBlocking {
Res.readBytes("files/app_settings.json").toString(Charsets.UTF_8)
}.let {
@Suppress("JSON_FORMAT_REDUNDANT")
Json {
decodeEnumsCaseInsensitive = true
isLenient = true
}.decodeFromString<PlatformSetting>(it).apply { restoreValues() }
}

@Suppress("JSON_FORMAT_REDUNDANT")
SettingsRoute(Json {
decodeEnumsCaseInsensitive = true
isLenient = true
}.decodeFromString<PlatformSetting>(readAssets("app_settings.json")).apply {
restoreValues()
})
SettingsRoute(settings)
}

else -> SplashRoute()
Expand Down
Loading

0 comments on commit 135913a

Please sign in to comment.