feat: aktiviere neues EventWizardScreen-Scaffold hinter Feature-Flag
Some checks failed
Desktop CI — Headless Tests & Build / Compose Desktop — Tests (headless) & Build (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Has been cancelled
Some checks failed
Desktop CI — Headless Tests & Build / Compose Desktop — Tests (headless) & Build (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Has been cancelled
Signed-off-by: StefanMoCoAt <stefan.mo.co@gmail.com>
This commit is contained in:
parent
91a8c38b25
commit
d9b5c6bfea
|
|
@ -17,6 +17,9 @@ import androidx.compose.ui.unit.dp
|
|||
import at.mocode.frontend.core.designsystem.components.MsFilePicker
|
||||
import at.mocode.frontend.core.designsystem.components.MsTextField
|
||||
import at.mocode.frontend.core.designsystem.theme.Dimens
|
||||
import at.mocode.frontend.core.domain.config.WizardFeatureFlags
|
||||
import at.mocode.frontend.core.wizard.ui.WizardScaffoldWithHotkeys
|
||||
import at.mocode.frontend.core.wizard.ui.WizardStepUi
|
||||
import at.mocode.frontend.features.turnier.presentation.TurnierWizard
|
||||
import at.mocode.frontend.features.zns.import.presentation.StammdatenImportScreen
|
||||
import kotlin.uuid.ExperimentalUuidApi
|
||||
|
|
@ -31,6 +34,31 @@ fun EventWizardScreen(
|
|||
) {
|
||||
val state = viewModel.state
|
||||
|
||||
// Neuer Scaffold-Weg hinter Feature-Flag (Strangler-Pattern)
|
||||
if (WizardFeatureFlags.WizardRuntimeEnabled) {
|
||||
EventWizardScreenScaffolded(
|
||||
state = state,
|
||||
onBack = {
|
||||
if (state.currentStep == WizardStep.ZNS_CHECK) onBack() else viewModel.previousStep()
|
||||
},
|
||||
onNext = { viewModel.nextStep() },
|
||||
onSaveDraft = null, // Wird in einem Folge-Inkrement angebunden
|
||||
onFinish = onFinish,
|
||||
onNavigateToVeranstalterNeu = onNavigateToVeranstalterNeu,
|
||||
renderStep = {
|
||||
when (state.currentStep) {
|
||||
WizardStep.ZNS_CHECK -> ZnsCheckStep(viewModel)
|
||||
WizardStep.VERANSTALTER_SELECTION -> VeranstalterSelectionStep(viewModel, onNavigateToVeranstalterNeu)
|
||||
WizardStep.ANSPRECHPERSON_MAPPING -> AnsprechpersonMappingStep(viewModel)
|
||||
WizardStep.META_DATA -> MetaDataStep(viewModel)
|
||||
WizardStep.TURNIER_ANLAGE -> TurnierAnlageStep(viewModel)
|
||||
WizardStep.SUMMARY -> SummaryStep(viewModel, onFinish)
|
||||
}
|
||||
}
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
Column {
|
||||
|
|
@ -79,6 +107,62 @@ fun EventWizardScreen(
|
|||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun EventWizardScreenScaffolded(
|
||||
state: VeranstaltungWizardState,
|
||||
onBack: () -> Unit,
|
||||
onNext: () -> Unit,
|
||||
onSaveDraft: (() -> Unit)?,
|
||||
onFinish: () -> Unit,
|
||||
onNavigateToVeranstalterNeu: () -> Unit,
|
||||
renderStep: @Composable () -> Unit
|
||||
) {
|
||||
val steps = remember {
|
||||
WizardStep.entries.map {
|
||||
// Titel schlank aus Enum ableiten; echte Strings folgen in UI-Polishing
|
||||
val title = when (it) {
|
||||
WizardStep.ZNS_CHECK -> "ZNS"
|
||||
WizardStep.VERANSTALTER_SELECTION -> "Veranstalter"
|
||||
WizardStep.ANSPRECHPERSON_MAPPING -> "Kontakt"
|
||||
WizardStep.META_DATA -> "Metadaten"
|
||||
WizardStep.TURNIER_ANLAGE -> "Turniere"
|
||||
WizardStep.SUMMARY -> "Zusammenfassung"
|
||||
}
|
||||
WizardStepUi(id = it.name, title = title)
|
||||
}
|
||||
}
|
||||
|
||||
val currentIndex = state.currentStep.ordinal
|
||||
val canBack = currentIndex > 0
|
||||
val canNext = true // Validierungslogik wird schrittweise ergänzt
|
||||
|
||||
WizardScaffoldWithHotkeys(
|
||||
steps = steps,
|
||||
currentIndex = currentIndex,
|
||||
canBack = canBack,
|
||||
canNext = canNext,
|
||||
onBack = onBack,
|
||||
onNext = if (state.currentStep == WizardStep.SUMMARY) onFinish else onNext,
|
||||
onSaveDraft = onSaveDraft,
|
||||
nextLabel = if (state.currentStep == WizardStep.SUMMARY) "Fertig" else "Weiter",
|
||||
backLabel = "Zurück",
|
||||
finishLabel = "Fertig"
|
||||
) {
|
||||
// Sticky Preview oben wie gehabt
|
||||
Column(modifier = Modifier.fillMaxSize()) {
|
||||
VorschauCard(state = state)
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.fillMaxWidth()
|
||||
.padding(Dimens.SpacingL)
|
||||
) {
|
||||
renderStep()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun VorschauCard(state: VeranstaltungWizardState) {
|
||||
Card(
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user