diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/BaseActivity.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/BaseActivity.kt deleted file mode 100644 index f25690c6..00000000 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/BaseActivity.kt +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright © Harsh Shandilya. - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - */ -package dev.msfjarvis.claw.android - -import android.app.assist.AssistContent -import android.graphics.Color -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.SystemBarStyle -import androidx.activity.compose.setContent -import androidx.activity.enableEdgeToEdge -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable -import androidx.compose.ui.platform.LocalUriHandler -import androidx.core.net.toUri -import com.deliveryhero.whetstone.Whetstone -import dev.msfjarvis.claw.android.viewmodel.ClawViewModel -import dev.msfjarvis.claw.common.theme.LobstersTheme -import dev.msfjarvis.claw.common.urllauncher.UrlLauncher -import javax.inject.Inject - -/** A base class that encapsulates all activities used by Claw. */ -@Stable -abstract class BaseActivity : ComponentActivity() { - - @Inject lateinit var urlLauncher: UrlLauncher - @Inject lateinit var viewModel: ClawViewModel - var webUri: String? = null - - /** Entrypoint to show a [Composable] as this [ComponentActivity]'s view. */ - @Composable abstract fun Content() - - /** Overrideable method to call stuff in [onCreate]. */ - open fun preLaunch() {} - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - preLaunch() - Whetstone.inject(this) - enableEdgeToEdge( - statusBarStyle = SystemBarStyle.light(Color.TRANSPARENT, Color.TRANSPARENT), - navigationBarStyle = SystemBarStyle.light(Color.TRANSPARENT, Color.TRANSPARENT), - ) - setContent { - LobstersTheme( - dynamicColor = true, - providedValues = arrayOf(LocalUriHandler provides urlLauncher), - ) { - Content() - } - } - } - - override fun onProvideAssistContent(outContent: AssistContent?) { - super.onProvideAssistContent(outContent) - val uri = webUri - if (outContent != null) { - if (uri != null) { - outContent.webUri = uri.toUri() - } else { - outContent.webUri = null - } - } - } -} diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/MainActivity.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/MainActivity.kt index 609e3a3a..9a2b3f13 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/MainActivity.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/MainActivity.kt @@ -6,32 +6,65 @@ */ package dev.msfjarvis.claw.android +import android.app.assist.AssistContent +import android.graphics.Color +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.SystemBarStyle +import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass -import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalUriHandler +import androidx.core.net.toUri import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen +import com.deliveryhero.whetstone.Whetstone import com.deliveryhero.whetstone.activity.ContributesActivityInjector import dev.msfjarvis.claw.android.ui.screens.Nav3Screen +import dev.msfjarvis.claw.common.theme.LobstersTheme +import dev.msfjarvis.claw.common.urllauncher.UrlLauncher +import javax.inject.Inject +@OptIn(ExperimentalMaterial3WindowSizeClassApi::class) @ContributesActivityInjector -class MainActivity : BaseActivity() { +class MainActivity : ComponentActivity() { - @OptIn(ExperimentalMaterial3WindowSizeClassApi::class) - @Composable - override fun Content() { - val windowSizeClass = calculateWindowSizeClass(this) - Nav3Screen( - urlLauncher = urlLauncher, - windowSizeClass = windowSizeClass, - setWebUri = { url -> webUri = url }, - ) - } + @Inject lateinit var urlLauncher: UrlLauncher + var webUri: String? = null - override fun preLaunch() { - super.preLaunch() - enableEdgeToEdge() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) installSplashScreen() + Whetstone.inject(this) + enableEdgeToEdge( + statusBarStyle = SystemBarStyle.light(Color.TRANSPARENT, Color.TRANSPARENT), + navigationBarStyle = SystemBarStyle.light(Color.TRANSPARENT, Color.TRANSPARENT), + ) + setContent { + LobstersTheme( + dynamicColor = true, + providedValues = arrayOf(LocalUriHandler provides urlLauncher), + ) { + val windowSizeClass = calculateWindowSizeClass(this) + Nav3Screen( + urlLauncher = urlLauncher, + windowSizeClass = windowSizeClass, + setWebUri = { url -> webUri = url }, + ) + } + } + } + + override fun onProvideAssistContent(outContent: AssistContent?) { + super.onProvideAssistContent(outContent) + val uri = webUri + if (outContent != null) { + if (uri != null) { + outContent.webUri = uri.toUri() + } else { + outContent.webUri = null + } + } } companion object {