From 0d7695faa93de53bc22ef0fd935dff3b641a8602 Mon Sep 17 00:00:00 2001 From: ThalesBezerra21 Date: Thu, 1 Aug 2024 14:45:06 -0300 Subject: [PATCH] =?UTF-8?q?Bugfix:=20Primeira=20execu=C3=A7=C3=A3o=20do=20?= =?UTF-8?q?app=20carrega=20modelos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/ai/mlc/mlcchat/AppViewModel.kt | 10 ++++-- .../src/main/java/ai/mlc/mlcchat/HomeView.kt | 21 ++++++++---- .../components/LoadingTopBottomIndicator.kt | 32 +++++++++++++------ 3 files changed, 45 insertions(+), 18 deletions(-) diff --git a/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/AppViewModel.kt b/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/AppViewModel.kt index 242049d7..48b06ecc 100644 --- a/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/AppViewModel.kt +++ b/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/AppViewModel.kt @@ -38,6 +38,8 @@ class AppViewModel(application: Application) : AndroidViewModel(application) { var benchmarkingModels = emptyList() val chatState = ChatState() val modelSampleList = emptyList().toMutableStateList() + var isReady = mutableStateOf(false) + private var showAlert = mutableStateOf(false) private var alertMessage = mutableStateOf("") private var appConfig = AppConfig( @@ -126,8 +128,6 @@ class AppViewModel(application: Application) : AndroidViewModel(application) { ) } } - benchmarkingModels = modelList - .filter { model -> benchmarkingModelsLabels.any {label -> model.modelConfig.modelId.lowercase(Locale.getDefault()).contains(label.lowercase(Locale.getDefault()))} } } private fun updateAppConfig(action: () -> Unit) { @@ -147,6 +147,12 @@ class AppViewModel(application: Application) : AndroidViewModel(application) { File(appDirFile, modelConfig.modelId) ) ) + benchmarkingModels = modelList + .filter { model -> benchmarkingModelsLabels.any {label -> model.modelConfig.modelId.lowercase(Locale.getDefault()).contains(label.lowercase(Locale.getDefault()))} } + + if(modelList.size == appConfig.modelList.size) + isReady.value = true + if (!isBuiltin) { updateAppConfig { appConfig.modelList.add( diff --git a/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/HomeView.kt b/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/HomeView.kt index a775b74d..9acff4b5 100644 --- a/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/HomeView.kt +++ b/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/HomeView.kt @@ -81,6 +81,9 @@ fun HomeView( } } + val isReady = appViewModel.isReady.value + val canStart = isReady && !isDownloading && isIdleMeasured + Column ( modifier = Modifier .fillMaxSize(), @@ -111,7 +114,7 @@ fun HomeView( LargeRoundedButton( icon = Icons.Default.BarChart, onClick = { initBenchmarkingFlux() }, - enabled = !isDownloading && isIdleMeasured, + enabled = canStart, text = "Start benchmarking" ) @@ -120,10 +123,9 @@ fun HomeView( LargeRoundedButton( icon = Icons.Default.Chat, onClick = { startConversation() }, - enabled = !isDownloading && isIdleMeasured, + enabled = canStart, text = "Chat with LLMs" ) - } Column( modifier = Modifier @@ -139,8 +141,15 @@ fun HomeView( .fillMaxWidth(), text = "Measuring idle energy consumption" ) + }else if(!isReady){ + LoadingTopBottomIndicator( + modifier = Modifier + .fillMaxHeight(0.5f) + .fillMaxWidth(), + text = "Getting models ready", + subtitleText = "Be sure you are connected to the internet" + ) } - if(isDownloading) { DownloadView( modifier = Modifier @@ -169,9 +178,7 @@ fun useDownloadModels( var isDownloading by remember { mutableStateOf(false) } - var pendingModels by remember { - mutableStateOf(viewModel.benchmarkingModels) - } + var pendingModels = viewModel.benchmarkingModels val numModels = viewModel.benchmarkingModels.size diff --git a/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/components/LoadingTopBottomIndicator.kt b/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/components/LoadingTopBottomIndicator.kt index 2c4b7f33..91281b27 100644 --- a/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/components/LoadingTopBottomIndicator.kt +++ b/android/MLCChat/app/src/main/java/ai/mlc/mlcchat/components/LoadingTopBottomIndicator.kt @@ -2,6 +2,7 @@ package ai.mlc.mlcchat.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding @@ -19,8 +20,9 @@ import androidx.compose.ui.unit.dp @Composable fun LoadingTopBottomIndicator( + modifier: Modifier = Modifier, text: String, - modifier: Modifier = Modifier + subtitleText: String? = null, ) { Row( modifier = modifier @@ -37,13 +39,25 @@ fun LoadingTopBottomIndicator( strokeWidth = 2.dp ) Spacer(modifier = Modifier.width(20.dp)) - Text( - modifier = Modifier - .wrapContentHeight(align = Alignment.CenterVertically), - text = text, - color = MaterialTheme.colorScheme.onPrimary, - style = MaterialTheme.typography.titleSmall, - fontWeight = FontWeight.Light - ) + Column { + Text( + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically), + text = text, + color = MaterialTheme.colorScheme.onPrimary, + style = MaterialTheme.typography.titleSmall, + fontWeight = FontWeight.Light + ) + if(subtitleText !== null){ + Text( + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically), + text = subtitleText, + color = MaterialTheme.colorScheme.onPrimary, + style = MaterialTheme.typography.bodySmall, + fontWeight = FontWeight.Light + ) + } + } } } \ No newline at end of file