Skip to content

Commit c6998c5

Browse files
Google AI Edge Gallerycopybara-github
authored andcommitted
internal changes
PiperOrigin-RevId: 962449095
1 parent f28361f commit c6998c5

3 files changed

Lines changed: 309 additions & 244 deletions

File tree

Android/src/app/src/main/java/com/google/ai/edge/gallery/ui/modelmanager/GlobalModelManager.kt

Lines changed: 39 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,11 @@ import androidx.compose.material3.Icon
5858
import androidx.compose.material3.IconButton
5959
import androidx.compose.material3.MaterialTheme
6060
import androidx.compose.material3.ModalBottomSheet
61-
import androidx.compose.material3.OutlinedTextField
6261
import androidx.compose.material3.Scaffold
6362
import androidx.compose.material3.SmallFloatingActionButton
6463
import androidx.compose.material3.SnackbarHost
6564
import androidx.compose.material3.SnackbarHostState
6665
import androidx.compose.material3.Text
67-
import androidx.compose.material3.TextButton
6866
import androidx.compose.material3.rememberModalBottomSheetState
6967
import androidx.compose.runtime.Composable
7068
import androidx.compose.runtime.LaunchedEffect
@@ -88,7 +86,6 @@ import androidx.compose.ui.semantics.clearAndSetSemantics
8886
import androidx.compose.ui.semantics.contentDescription
8987
import androidx.compose.ui.semantics.role
9088
import androidx.compose.ui.semantics.semantics
91-
import androidx.compose.ui.text.buildAnnotatedString
9289
import androidx.compose.ui.unit.dp
9390
import androidx.core.net.toUri
9491
import com.google.ai.edge.gallery.R
@@ -99,7 +96,6 @@ import com.google.ai.edge.gallery.huggingface.extractHfUrlInfo
9996
import com.google.ai.edge.gallery.proto.HfModelItemProto
10097
import com.google.ai.edge.gallery.proto.ImportedModel
10198
import com.google.ai.edge.gallery.ui.common.TaskIcon
102-
import com.google.ai.edge.gallery.ui.common.buildTrackableUrlAnnotatedString
10399
import com.google.ai.edge.gallery.ui.common.isHttpOrHttps
104100
import com.google.ai.edge.gallery.ui.common.modelitem.ModelItem
105101
import com.google.ai.edge.gallery.ui.common.tos.TosViewModel
@@ -551,83 +547,51 @@ fun GlobalModelManager(
551547
}
552548

553549
if (showHuggingFaceUrlDialog) {
554-
AlertDialog(
555-
onDismissRequest = { showHuggingFaceUrlDialog = false },
556-
title = { Text(stringResource(R.string.import_from_hugging_face_title)) },
557-
text = {
558-
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
559-
Text(
560-
buildAnnotatedString {
561-
append(stringResource(R.string.enter_hugging_face_url))
562-
append(
563-
buildTrackableUrlAnnotatedString(
564-
url = stringResource(R.string.enter_hugging_face_url_example_link),
565-
linkText = stringResource(R.string.enter_hugging_face_url_example_link),
566-
)
567-
)
568-
}
569-
)
570-
OutlinedTextField(
571-
value = huggingFaceUrlInput,
572-
onValueChange = { huggingFaceUrlInput = it },
573-
modifier = Modifier.fillMaxWidth(),
574-
placeholder = { Text(stringResource(R.string.hugging_face_url_placeholder)) },
575-
singleLine = true,
576-
)
577-
}
578-
},
579-
confirmButton = {
580-
Button(
581-
onClick = {
582-
val url = huggingFaceUrlInput.trim()
583-
if (url.isNotEmpty()) {
584-
showHuggingFaceUrlDialog = false
585-
val urlInfo = extractHfUrlInfo(url)
586-
when {
587-
urlInfo.isDirectModelFile -> {
588-
val fileUri =
589-
if (urlInfo.modelId != null && urlInfo.fileName != null) {
590-
"https://huggingface.co/${urlInfo.modelId}/resolve/main/${urlInfo.fileName}?download=true"
591-
.toUri()
592-
} else {
593-
url.toUri()
594-
}
595-
processModelUri(fileUri, true)
550+
HuggingFaceUrlDialog(
551+
urlInput = huggingFaceUrlInput,
552+
onUrlInputChange = { huggingFaceUrlInput = it },
553+
onDismiss = { showHuggingFaceUrlDialog = false },
554+
onConfirm = {
555+
val url = huggingFaceUrlInput.trim()
556+
if (url.isNotEmpty()) {
557+
showHuggingFaceUrlDialog = false
558+
val urlInfo = extractHfUrlInfo(url)
559+
when {
560+
urlInfo.isDirectModelFile -> {
561+
val fileUri =
562+
if (urlInfo.modelId != null && urlInfo.fileName != null) {
563+
"https://huggingface.co/${urlInfo.modelId}/resolve/main/${urlInfo.fileName}?download=true"
564+
.toUri()
565+
} else {
566+
url.toUri()
596567
}
597-
urlInfo.modelId != null -> {
598-
val targetModelId = urlInfo.modelId
599-
if (targetModelId != null) {
600-
isLoadingModelCardDetails = true
601-
viewModel.fetchModelDetails(targetModelId) { detailedModel ->
602-
isLoadingModelCardDetails = false
603-
if (detailedModel != null) {
604-
selectedModelForDetails = detailedModel
605-
showModelDetailsSheet = true
606-
} else {
607-
unsupportedModelErrorMessage =
608-
getErrorMessage(
609-
context,
610-
R.string.could_not_fetch_model_details,
611-
targetModelId,
612-
)
613-
showUnsupportedModelDialog = true
614-
}
615-
}
568+
processModelUri(fileUri, true)
569+
}
570+
urlInfo.modelId != null -> {
571+
val targetModelId = urlInfo.modelId
572+
if (targetModelId != null) {
573+
isLoadingModelCardDetails = true
574+
viewModel.fetchModelDetails(targetModelId) { detailedModel ->
575+
isLoadingModelCardDetails = false
576+
if (detailedModel != null) {
577+
selectedModelForDetails = detailedModel
578+
showModelDetailsSheet = true
579+
} else {
580+
unsupportedModelErrorMessage =
581+
getErrorMessage(
582+
context,
583+
R.string.could_not_fetch_model_details,
584+
targetModelId,
585+
)
586+
showUnsupportedModelDialog = true
616587
}
617588
}
618-
else -> {
619-
processModelUri(url.toUri(), true)
620-
}
621589
}
622590
}
591+
else -> {
592+
processModelUri(url.toUri(), true)
593+
}
623594
}
624-
) {
625-
Text(stringResource(R.string.next))
626-
}
627-
},
628-
dismissButton = {
629-
TextButton(onClick = { showHuggingFaceUrlDialog = false }) {
630-
Text(stringResource(R.string.cancel))
631595
}
632596
},
633597
)

0 commit comments

Comments
 (0)