shared/src/jvmMain/kotlin/org/jetbrains/kotlinconf/main.kt (42 lines of code) (raw):
package org.jetbrains.kotlinconf
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import androidx.compose.ui.window.rememberWindowState
import com.mmk.kmpnotifier.notification.configuration.NotificationPlatformConfiguration
import com.russhwolf.settings.ObservableSettings
import org.jetbrains.compose.resources.stringResource
import org.jetbrains.kotlinconf.generated.resources.Res
import org.jetbrains.kotlinconf.generated.resources.app_name
import org.jetbrains.kotlinconf.storage.createSettings
import org.jetbrains.kotlinconf.utils.Logger
import org.koin.dsl.module
private val platformModule = module {
single<ObservableSettings> { createSettings() }
single<LocalNotificationService> { EmptyLocalNotificationService() }
single<NotificationPlatformConfiguration> {
NotificationPlatformConfiguration.Desktop(
showPushNotification = false,
notificationIconPath = null,
)
}
}
class JvmLogger : Logger {
override fun log(tag: String, lazyMessage: () -> String) {
println("[$tag] ${lazyMessage()}")
}
}
fun main() {
initApp(JvmLogger(), platformModule, Flags(supportsNotifications = false))
System.setProperty("apple.awt.application.appearance", "system")
application {
Window(
onCloseRequest = ::exitApplication,
title = stringResource(Res.string.app_name),
alwaysOnTop = true,
state = rememberWindowState(width = 600.dp, height = 800.dp),
) {
App()
}
}
}