UI: tracks user's first success on importing a model

This commit is contained in:
Han Yin 2025-08-30 23:01:03 -07:00
parent c87ff9c1b3
commit f1269f4d39
4 changed files with 11 additions and 4 deletions

View File

@ -96,7 +96,8 @@ fun AppContent(
// App core states // App core states
val engineState by mainViewModel.engineState.collectAsState() val engineState by mainViewModel.engineState.collectAsState()
val showUserOnboarding by mainViewModel.showUserOnboarding.collectAsState() val showModelImportTooltip by mainViewModel.showModelImportTooltip.collectAsState()
val showChatTooltip by mainViewModel.showModelImportTooltip.collectAsState()
// Model state // Model state
val modelScreenUiMode by modelsViewModel.modelScreenUiMode.collectAsState() val modelScreenUiMode by modelsViewModel.modelScreenUiMode.collectAsState()
@ -324,7 +325,7 @@ fun AppContent(
toggleMenu = modelsViewModel::toggleFilterMenu toggleMenu = modelsViewModel::toggleFilterMenu
), ),
importing = BottomBarConfig.Models.Managing.ImportConfig( importing = BottomBarConfig.Models.Managing.ImportConfig(
showTooltip = showUserOnboarding, showTooltip = showModelImportTooltip,
isMenuVisible = showImportModelMenu, isMenuVisible = showImportModelMenu,
toggleMenu = { show -> modelsManagementViewModel.toggleImportMenu(show) }, toggleMenu = { show -> modelsManagementViewModel.toggleImportMenu(show) },
importFromLocal = { importFromLocal = {
@ -481,6 +482,10 @@ fun AppContent(
navigationActions.navigateToModelLoading() navigationActions.navigateToModelLoading()
} }
}, },
onFirstModelImportSuccess =
if (showModelImportTooltip) {
{ mainViewModel.waiveModelImportTooltip() }
} else null,
onScaffoldEvent = handleScaffoldEvent, onScaffoldEvent = handleScaffoldEvent,
modelsViewModel = modelsViewModel, modelsViewModel = modelsViewModel,
managementViewModel = modelsManagementViewModel, managementViewModel = modelsManagementViewModel,

View File

@ -82,6 +82,7 @@ fun ModelsManagementAndDeletingScreen(
filteredModels: List<ModelInfo>?, filteredModels: List<ModelInfo>?,
activeFiltersCount: Int, activeFiltersCount: Int,
isDeleting: Boolean, isDeleting: Boolean,
onFirstModelImportSuccess: (() -> Unit)?,
onScaffoldEvent: (ScaffoldEvent) -> Unit, onScaffoldEvent: (ScaffoldEvent) -> Unit,
modelsViewModel: ModelsViewModel, modelsViewModel: ModelsViewModel,
managementViewModel: ModelsManagementViewModel, managementViewModel: ModelsManagementViewModel,
@ -212,7 +213,7 @@ fun ModelsManagementAndDeletingScreen(
message = "Imported model: ${state.model.name}" message = "Imported model: ${state.model.name}"
) )
) )
onFirstModelImportSuccess?.invoke()
managementViewModel.resetManagementState() managementViewModel.resetManagementState()
} }
} }

View File

@ -34,6 +34,7 @@ import com.example.llama.viewmodel.PreselectedModelToRun.RamWarning
@Composable @Composable
fun ModelsScreen( fun ModelsScreen(
onConfirmSelection: (ModelInfo, RamWarning) -> Unit, onConfirmSelection: (ModelInfo, RamWarning) -> Unit,
onFirstModelImportSuccess: (() -> Unit)?,
onScaffoldEvent: (ScaffoldEvent) -> Unit, onScaffoldEvent: (ScaffoldEvent) -> Unit,
modelsViewModel: ModelsViewModel, modelsViewModel: ModelsViewModel,
managementViewModel: ModelsManagementViewModel, managementViewModel: ModelsManagementViewModel,
@ -98,6 +99,7 @@ fun ModelsScreen(
isDeleting = currentMode == ModelScreenUiMode.DELETING, isDeleting = currentMode == ModelScreenUiMode.DELETING,
onScaffoldEvent = onScaffoldEvent, onScaffoldEvent = onScaffoldEvent,
activeFiltersCount = activeFiltersCount, activeFiltersCount = activeFiltersCount,
onFirstModelImportSuccess = onFirstModelImportSuccess,
modelsViewModel = modelsViewModel, modelsViewModel = modelsViewModel,
managementViewModel = managementViewModel, managementViewModel = managementViewModel,
) )

View File

@ -51,7 +51,6 @@ class MainViewModel @Inject constructor (
} }
fun waiveModelImportTooltip() { fun waiveModelImportTooltip() {
android.util.Log.w("JOJO", "WAIVE IMPORT TOOLTIP!")
viewModelScope.launch { viewModelScope.launch {
appPreferences.setUserHasImportedFirstModel(true) appPreferences.setUserHasImportedFirstModel(true)
} }