Setup UX: allow Start w/ unsaved changes; hide delete for built-ins
This commit is contained in:
@@ -34,6 +34,9 @@ data class UiState(
|
||||
val selectedPreset: SessionPreset = Presets.builtIn.first(),
|
||||
val config: SessionConfig = Presets.builtIn.first().toConfig(),
|
||||
|
||||
// Only user-saved programs (including customizations of built-ins) are deletable.
|
||||
val deletableProgramIds: Set<String> = emptySet(),
|
||||
|
||||
// Timeline program (curves) used for both editing + runtime modulation.
|
||||
val timeline: TimelineEditorState = TimelineProgramFactory.fromPreset(Presets.builtIn.first()),
|
||||
val savedProgramName: String = Presets.builtIn.first().name,
|
||||
@@ -101,6 +104,7 @@ class MainViewModel(
|
||||
combine(settingsRepository.settings, userProgramRepository.userPrograms) { settings, userPrograms ->
|
||||
settings to userPrograms
|
||||
}.collect { (settings, userPrograms) ->
|
||||
val userProgramIds = userPrograms.map { it.id }.toSet()
|
||||
val builtInPrograms = Presets.builtIn.map { preset ->
|
||||
userPrograms.firstOrNull { it.id == preset.id } ?: UserProgramEntity(
|
||||
id = preset.id,
|
||||
@@ -121,7 +125,9 @@ class MainViewModel(
|
||||
description = it.description,
|
||||
timeline = it.timeline,
|
||||
sortOrder = it.sortOrder,
|
||||
isUserProgram = true,
|
||||
// Deletable only when the user explicitly saved it (either custom program,
|
||||
// or a customized built-in stored in the user program store).
|
||||
isUserProgram = it.id in userProgramIds,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -142,6 +148,7 @@ class MainViewModel(
|
||||
savedProgramName = savedName,
|
||||
savedTimelineSignature = savedSignature,
|
||||
hasUnsavedChanges = isDirty(selectedPreset.name, nextTimeline, savedName, savedSignature),
|
||||
deletableProgramIds = userProgramIds,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user