wolfskin/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt
2025-09-21 22:16:42 -04:00

74 lines
2.9 KiB
Kotlin

package com.github.damontecres.dolphin
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.RectangleShape
import androidx.datastore.core.DataStore
import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.Surface
import com.github.damontecres.dolphin.data.ServerRepository
import com.github.damontecres.dolphin.preferences.UserPreferences
import com.github.damontecres.dolphin.ui.ServerLoginPage
import com.github.damontecres.dolphin.ui.main.MainPage
import com.github.damontecres.dolphin.ui.theme.DolphinTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import okhttp3.OkHttpClient
import javax.inject.Inject
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject
lateinit var serverRepository: ServerRepository
@Inject
lateinit var userPreferencesDataStore: DataStore<UserPreferences>
@Inject
lateinit var okHttpClient: OkHttpClient
@OptIn(ExperimentalTvMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val scope = rememberCoroutineScope()
DolphinTheme {
Surface(
modifier = Modifier.fillMaxSize(),
shape = RectangleShape,
) {
CoilConfig(serverRepository, okHttpClient, false)
val preferences by userPreferencesDataStore.data.collectAsState(null)
preferences?.let { preferences ->
if (preferences.currentServerId.isNotBlank() && preferences.currentUserId.isNotBlank()) {
scope.launch {
serverRepository.restoreSession(
preferences.currentServerId,
preferences.currentUserId,
)
}
} else {
ServerLoginPage(modifier = Modifier.fillMaxSize())
}
val server = serverRepository.currentServer
val user = serverRepository.currentUser
if (server != null && user != null) {
// TODO navigation
MainPage(
preferences = preferences,
modifier = Modifier.fillMaxSize(),
)
}
}
}
}
}
}
}