Skip to content

Commit

Permalink
spent like 2 hours moving this thing to kotlin 2, now working on test…
Browse files Browse the repository at this point in the history
…ing QR code auth.
  • Loading branch information
aenriii committed May 23, 2024
1 parent 401a740 commit 3305449
Show file tree
Hide file tree
Showing 123 changed files with 2,038 additions and 3,346 deletions.
2 changes: 2 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/artifacts/app_desktop_0_0_1_1705247358741_ginseng.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/artifacts/client_desktop_0_0_1.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/artifacts/genesisApi_desktop_0_0_1.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
{
"java.project.sourcePaths": [""]
"java.project.sourcePaths": [""],
"java.project.referencedLibraries": [
"/home/aenri/.gradle/caches/**/*.jar"
]
}
3 changes: 2 additions & 1 deletion appAndroid/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
plugins {
kotlin("multiplatform")
id("com.android.application")
id("org.jetbrains.compose")
alias(libs.plugins.kotlin.compose.compiler)
// alias(libs.plugins.kotlin.compose.plugin)
}

kotlin {
Expand Down
29 changes: 27 additions & 2 deletions appDesktop/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat

plugins {
kotlin("multiplatform")
id("org.jetbrains.compose")
alias(libs.plugins.kotlin.compose.compiler)
alias(libs.plugins.kotlin.compose.plugin)
}

kotlin {
Expand All @@ -11,7 +12,14 @@ kotlin {
sourceSets {
val jvmMain by getting {
dependencies {
implementation(compose.desktop.currentOs)
implementation(when (getCurrentTarget()) {
"windows-x64" -> libs.compose.desktop.jvm.windows.x64
"macos-x64" -> libs.compose.desktop.jvm.macos.x64
"linux-x64" -> libs.compose.desktop.jvm.linux.x64
"linux-arm64" -> libs.compose.desktop.jvm.linux.arm64
"macos-arm64" -> libs.compose.desktop.jvm.macos.arm64
else -> throw Exception("Unsupported target")
})
implementation(project(":genesis:app"))
}
}
Expand Down Expand Up @@ -46,3 +54,20 @@ compose.desktop {
}
}
}

fun getCurrentTarget(): String {
val osSys = System.getProperty("os.name")
val OS = when {
osSys.contains("win", ignoreCase = true) -> "windows"
osSys.contains("mac", ignoreCase = true) -> "macos"
osSys.contains("nix") || osSys.contains("nux") || osSys.contains("aix") -> "linux"
else -> throw Exception("Unsupported OS")
}
val archSys = System.getProperty("os.arch")
val arch = when (archSys) {
"x86_64", "amd64" -> "x64"
"aarch64" -> "arm64"
else -> throw Exception("Unsupported arch")
}
return "$OS-$arch"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ package uninit.genesis

import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.window.ApplicationScope
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import uninit.genesis.app.MainView
import uninit.genesis.app.state.LocalContextMutableWindowTitle


class Application {
Expand All @@ -21,7 +24,14 @@ class Application {
@Composable
@Preview
fun ApplicationScope.content() {
Window(onCloseRequest = ::exitApplication) {
MainView()
CompositionLocalProvider(
LocalContextMutableWindowTitle provides mutableStateOf("Genesis"),
) {
Window(
onCloseRequest = ::exitApplication,
title = LocalContextMutableWindowTitle.current.component1(),
) {
MainView()
}
}
}
3 changes: 2 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.kotlin.compose.compiler) apply false
// alias(libs.plugins.kotlin.compose.plugin) apply false
alias(libs.plugins.kotlinx.serialization) apply false
}

Expand Down
30 changes: 17 additions & 13 deletions genesis/app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
plugins {
kotlin("multiplatform")
id("com.android.library")
id("org.jetbrains.compose")
alias(libs.plugins.kotlin.compose.compiler)
// alias(libs.plugins.kotlin.compose.plugin)
// id("dev.icerock.mobile.multiplatform-resources")
alias(libs.plugins.kotlinx.serialization)
}
Expand All @@ -21,15 +22,14 @@ kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.material)
@OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
implementation(compose.components.resources)
implementation(libs.compose.runtime)
implementation(libs.compose.foundation)
implementation(libs.compose.material3)
implementation(libs.compose.material)
implementation(libs.compose.components.resources)

api(libs.moko.resources.common)
api(libs.moko.resources.compose)
// api(libs.moko.resources.common)
// api(libs.moko.resources.compose)

implementation(libs.serialization.json)

Expand All @@ -49,11 +49,11 @@ kotlin {

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")

implementation(libs.kamel)
// implementation(libs.kamel)


implementation(libs.uninit.common)
implementation(libs.uninit.common.compose)
implementation(project(":uninit:common"))
implementation(project(":uninit:common-compose"))
implementation(project(":genesis:discord:api"))
implementation(project(":genesis:discord:client"))
implementation(project(":genesis:genesisApi"))
Expand All @@ -67,12 +67,16 @@ kotlin {
api("androidx.appcompat:appcompat:1.6.1")
api("androidx.core:core-ktx:1.12.0")
implementation(libs.ktor.client.okhttp)

dependsOn(commonMain)
}
}
val desktopMain by getting {
dependencies {
implementation(compose.desktop.common)
implementation(libs.compose.desktop.common)
implementation(libs.ktor.client.okhttp)

dependsOn(commonMain)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package uninit.genesis.app.di
package uninit.genesis.app

import androidx.compose.runtime.Composable
import org.koin.core.module.Module
Expand All @@ -7,14 +7,15 @@ import uninit.common.compose.preferences.PreferencesManager
import uninit.genesis.app.platform.android.LocalApplicationContext

@Composable
actual fun preferencesModule(): Module {
actual fun platformNativeModuleImpl(): Module {
val context = LocalApplicationContext.current
return module {
single<PreferencesManager> {
single {
context?.let {
return@single PreferencesManager(it.getSharedPreferences("genesis", 0))
return@single PreferenceManager(it.getSharedPreferences("genesis", Context.MODE_PRIVATE))
}
throw IllegalStateException("Application context is not initialized")
throw IllegalStateException("Application Context is not initialized.")
}
}

}

This file was deleted.

This file was deleted.

32 changes: 32 additions & 0 deletions genesis/app/src/commonMain/kotlin/uninit/genesis/app/App.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package uninit.genesis.app

import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.compositionLocalOf
import cafe.adriel.voyager.navigator.Navigator
import io.github.aakira.napier.Antilog
import io.github.aakira.napier.Napier
import org.koin.core.context.startKoin
import org.koin.dsl.koinApplication
import uninit.genesis.app.ui.screens.LaunchScreen
import uninit.genesis.app.ui.theme.Theme
import uninit.genesis.app.ui.theme.catppuccin.mocha.CTPMochaPink

val LocalCompositionTheme = compositionLocalOf<Theme> { CTPMochaPink }
@Composable
fun App() {
Napier.base(getAntiLog())
Napier.d("App started on ${getPlatformName()}")
val nativeModule = KoinModules.platformNativeModule()
startKoin {
modules(nativeModule)
}
CompositionLocalProvider( LocalCompositionTheme provides CTPMochaPink ) {
Navigator(LaunchScreen())
}
}

expect fun getPlatformName(): String

expect fun getAntiLog(): Antilog
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package uninit.genesis.app

import androidx.compose.runtime.Composable

object KoinModules {
@Composable
fun platformNativeModule() = platformNativeModuleImpl()
}

/** PlatformNativeModule is a koin module that provides the following
platform-specific dependencies:
- preferencesManager: `PreferencesManager`
- platformHttpEngineFactory: `HttpClientEngineFactory<*>`
The implementation of this is required to be composable due to the
nature of retrieving the preferencesManager for the Android platform.
*/
@Composable
expect fun platformNativeModuleImpl(): org.koin.core.module.Module
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package uninit.genesis.app.state

import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.staticCompositionLocalOf

val LocalContextMutableWindowTitle = staticCompositionLocalOf { mutableStateOf("Genesis") }
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package uninit.genesis.app.ui.screens

import androidx.compose.runtime.Composable
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import org.koin.compose.getKoin
import uninit.common.compose.preferences.PreferencesManager
import uninit.genesis.app.ui.screens.onboarding.OnboardingScreen

class LaunchScreen : Screen {

@Composable
override fun Content() {
val firstLaunch by getKoin().get<PreferencesManager>().preference("completedOnboarding", false)

if (!firstLaunch) {
LocalNavigator.currentOrThrow.push(OnboardingScreen())
} else {
// Navigate to main screen
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package uninit.genesis.app.ui.screens.onboarding

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import cafe.adriel.voyager.core.screen.Screen
import uninit.genesis.app.LocalCompositionTheme

class OnboardingScreen : Screen {
@Composable
override fun Content() {
val theme = LocalCompositionTheme.current
// val windowSize = currentWindowAdaptiveInfo().windowSizeClass
Box(
modifier = Modifier
.fillMaxSize()
.background(theme.base)
) {
Text(modifier = Modifier.align(Alignment.Center), text = "Onboarding", color = theme.text)
}
}
}
Loading

0 comments on commit 3305449

Please sign in to comment.