JS-spezifische Module und Dateien entfernt, Multiplattform-Targets korrigiert

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-18 14:16:22 +02:00
parent 7bbb991e69
commit e91b10daa3
169 changed files with 2128 additions and 824 deletions
@@ -10,13 +10,13 @@ import java.util.*
* Setzt alle Core- und Feature-Module zu einer lauffähigen Desktop-Anwendung zusammen.
*
* Packaging:
* ./gradlew :frontend:shells:meldestelle-desktop:packageDeb → Linux .deb
* ./gradlew :frontend:shells:meldestelle-desktop:packageMsi → Windows .msi
* ./gradlew :frontend:shells:meldestelle-desktop:packageDmg → macOS .dmg
* ./gradlew :frontend:shells:meldestelle-desktop:packageDeb → Linux .deb
* ./gradlew :frontend:shells:meldestelle-desktop:packageMsi → Windows .msi
* ./gradlew :frontend:shells:meldestelle-desktop:packageDmg → macOS .dmg
* ./gradlew :frontend:shells:meldestelle-desktop:packageReleaseDistributables → alle Plattformen
*
* Version: wird automatisch aus version.properties im Root-Projekt gelesen (SemVer).
* Icons: src/jvmMain/resources/icon.png / icon.ico / icon.icns
* Version: Wird automatisch aus version.properties im Root-Projekt gelesen (SemVer).
* Icons: src/jvmMain/resources/icon.png / icon.ico / icon.icns
* → siehe ICONS_PLACEHOLDER.md für Anforderungen
*/
plugins {
@@ -42,15 +42,6 @@ val packageVer = "$vMajor.$vMinor.$vPatch"
kotlin {
jvm()
js(IR) {
binaries.library()
browser {
testTask {
enabled = false
}
}
}
wasmJs {
binaries.library()
browser {
@@ -86,6 +77,7 @@ kotlin {
implementation(projects.frontend.features.vereinFeature)
implementation(projects.frontend.features.turnierFeature)
implementation(projects.frontend.features.billingFeature)
implementation(projects.frontend.features.deviceInitialization)
// Compose Desktop
implementation(compose.desktop.currentOs)
@@ -10,12 +10,12 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import at.mocode.desktop.navigation.DesktopNavigationPort
import at.mocode.desktop.screens.layout.DesktopMainLayout
import at.mocode.desktop.screens.onboarding.SettingsManager
import at.mocode.frontend.core.auth.data.AuthTokenManager
import at.mocode.frontend.core.auth.presentation.LoginScreen
import at.mocode.frontend.core.auth.presentation.LoginViewModel
import at.mocode.frontend.core.designsystem.theme.AppTheme
import at.mocode.frontend.core.navigation.AppScreen
import at.mocode.frontend.features.deviceinitialization.domain.DeviceInitializationSettingsManager
import org.koin.compose.koinInject
import org.koin.compose.viewmodel.koinViewModel
@@ -37,7 +37,7 @@ fun DesktopApp() {
// DeviceInitialization-Check beim Start
LaunchedEffect(Unit) {
if (!SettingsManager.isConfigured()) {
if (!DeviceInitializationSettingsManager.isConfigured()) {
nav.navigateToScreen(AppScreen.DeviceInitialization)
}
}
@@ -12,6 +12,7 @@ import at.mocode.frontend.core.localdb.localDbModule
import at.mocode.frontend.core.network.networkModule
import at.mocode.frontend.core.sync.di.syncModule
import at.mocode.frontend.features.billing.di.billingModule
import at.mocode.frontend.features.deviceinitialization.di.deviceInitializationModule
import at.mocode.frontend.features.nennung.di.nennungFeatureModule
import at.mocode.frontend.features.pferde.di.pferdeModule
import at.mocode.frontend.features.profile.di.profileModule
@@ -43,6 +44,7 @@ fun main() = application {
reiterModule,
vereinFeatureModule,
turnierFeatureModule,
deviceInitializationModule,
desktopModule,
)
}
@@ -24,9 +24,6 @@ import at.mocode.desktop.screens.management.VeranstalterAuswahl
import at.mocode.desktop.screens.management.VeranstalterDetail
import at.mocode.desktop.screens.management.VeranstalterVerwaltungScreen
import at.mocode.desktop.screens.nennung.NennungsEingangScreen
import at.mocode.desktop.screens.onboarding.OnboardingScreen
import at.mocode.desktop.screens.onboarding.OnboardingSettings
import at.mocode.desktop.screens.onboarding.SettingsManager
import at.mocode.desktop.screens.profile.FunktionaerProfil
import at.mocode.desktop.screens.veranstaltung.*
import at.mocode.frontend.core.designsystem.theme.AppColors
@@ -37,6 +34,10 @@ import at.mocode.frontend.core.network.ConnectivityTracker
import at.mocode.frontend.core.network.discovery.NetworkDiscoveryService
import at.mocode.frontend.features.billing.presentation.BillingScreen
import at.mocode.frontend.features.billing.presentation.BillingViewModel
import at.mocode.frontend.features.deviceinitialization.domain.DeviceInitializationSettings
import at.mocode.frontend.features.deviceinitialization.domain.DeviceInitializationSettingsManager
import at.mocode.frontend.features.deviceinitialization.presentation.DeviceInitializationScreen
import at.mocode.frontend.features.deviceinitialization.presentation.DeviceInitializationViewModel
import at.mocode.frontend.features.nennung.presentation.NennungViewModel
import at.mocode.frontend.features.nennung.presentation.NennungsMaske
import at.mocode.frontend.features.pferde.presentation.PferdeScreen
@@ -79,7 +80,11 @@ fun DesktopMainLayout(
) {
println("[Navigation] Rendering Screen: ${currentScreen::class.simpleName} (Details: $currentScreen)")
// DeviceInitialization-Daten (On-the-fly geladen oder Default)
var onboardingSettings by remember { mutableStateOf(SettingsManager.loadSettings() ?: OnboardingSettings()) }
var onboardingSettings by remember {
mutableStateOf(
DeviceInitializationSettingsManager.loadSettings() ?: DeviceInitializationSettings()
)
}
// Automatische Umleitung zum DeviceInitialization, wenn Setup fehlt (außer wir sind bereits dort)
LaunchedEffect(onboardingSettings) {
@@ -111,7 +116,7 @@ fun DesktopMainLayout(
onBack = onBack,
onSettingsChange = {
onboardingSettings = it
SettingsManager.saveSettings(it)
DeviceInitializationSettingsManager.saveSettings(it)
},
settings = onboardingSettings,
)
@@ -518,25 +523,25 @@ private fun DesktopContentArea(
currentScreen: AppScreen,
onNavigate: (AppScreen) -> Unit,
onBack: () -> Unit,
settings: OnboardingSettings,
onSettingsChange: (OnboardingSettings) -> Unit,
settings: DeviceInitializationSettings,
onSettingsChange: (DeviceInitializationSettings) -> Unit,
) {
when (currentScreen) {
// DeviceInitialization (Geräte-Setup)
is AppScreen.DeviceInitialization -> {
println("[Screen] Rendering DeviceInitialization")
OnboardingScreen(
settings = settings,
onSettingsChange = onSettingsChange,
onContinue = { finalSettings: OnboardingSettings ->
SettingsManager.saveSettings(finalSettings)
val viewModel = koinViewModel<DeviceInitializationViewModel> {
org.koin.core.parameter.parametersOf({ finalSettings: DeviceInitializationSettings ->
DeviceInitializationSettingsManager.saveSettings(finalSettings)
// Vision_04: Sicherheitsschlüssel als Token setzen, damit Cloud-Suche funktioniert
val authTokenManager =
org.koin.core.context.GlobalContext.get().get<at.mocode.frontend.core.auth.data.AuthTokenManager>()
authTokenManager.setToken(finalSettings.sharedKey)
onSettingsChange(finalSettings)
onNavigate(AppScreen.VeranstaltungVerwaltung)
}
)
})
}
DeviceInitializationScreen(viewModel = viewModel)
}
// Haupt-Zentrale: Veranstaltung-Verwaltung
@@ -871,7 +876,7 @@ private fun DesktopContentArea(
@Composable
private fun DesktopFooterBar(
settings: OnboardingSettings,
settings: DeviceInitializationSettings,
onSetupClick: () -> Unit = {}
) {
val connectivityTracker = koinInject<ConnectivityTracker>()
@@ -881,7 +886,7 @@ private fun DesktopFooterBar(
val online by connectivityTracker.isOnline.collectAsState()
val znsState = znsImporter.state
val discoveredServices = remember { mutableStateOf(discoveryService.getDiscoveredServices()) }
val deviceName = settings.geraetName.ifBlank { "Unbekannt" }
val deviceName = settings.deviceName.ifBlank { "Unbekannt" }
// Periodisches Update der LAN-Geräte (mDNS)
LaunchedEffect(Unit) {
@@ -15,15 +15,6 @@ kotlin {
jvm()
if (isWasmEnabled) {
js(IR) {
binaries.library()
browser {
testTask {
enabled = false
}
}
}
wasmJs {
browser {
testTask {