Skip to content

Commit 127580e

Browse files
committed
feat: display model name in gallery details
Add model name field to generation results and display it in the gallery detail view. This allows users to see which model was used for each generated image. Changes: - Add modelName field to AiGenerationResult entity - Add MODEL_NAME column to GenerationResultEntity (DB migration v9) - Display model name in GalleryDetailScreen when available - Update test mocks
1 parent c027b8f commit 127580e

13 files changed

Lines changed: 399 additions & 1 deletion

File tree

data/src/main/java/com/shifthackz/aisdv1/data/mappers/AiGenerationResultMappers.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ fun AiGenerationResult.mapDomainToEntity(): GenerationResultEntity = with(this)
3131
mediaPath = mediaPath,
3232
inputMediaPath = inputMediaPath,
3333
mediaType = mediaType.key,
34+
modelName = modelName,
3435
)
3536
}
3637
//endregion
@@ -62,6 +63,7 @@ fun GenerationResultEntity.mapEntityToDomain(): AiGenerationResult = with(this)
6263
mediaPath = mediaPath,
6364
inputMediaPath = inputMediaPath,
6465
mediaType = MediaType.parse(mediaType),
66+
modelName = modelName,
6567
)
6668
}
6769
//endregion

data/src/test/java/com/shifthackz/aisdv1/data/mocks/AiGenerationResultMocks.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ val mockAiGenerationResult = AiGenerationResult(
2626
mediaPath = "",
2727
inputMediaPath = "",
2828
mediaType = MediaType.IMAGE,
29+
modelName = "MockModel",
2930
)
3031

3132
val mockAiGenerationResults = listOf(mockAiGenerationResult)

data/src/test/java/com/shifthackz/aisdv1/data/mocks/GenerationResultEntityMocks.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ val mockGenerationResultEntity = GenerationResultEntity(
2626
mediaPath = "",
2727
inputMediaPath = "",
2828
mediaType = "IMAGE",
29+
modelName = "",
2930
)
3031

3132
val mockGenerationResultEntities = listOf(mockGenerationResultEntity)

domain/src/main/java/com/shifthackz/aisdv1/domain/entity/AiGenerationResult.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ data class AiGenerationResult(
2424
val mediaPath: String = "",
2525
val inputMediaPath: String = "",
2626
val mediaType: MediaType = MediaType.IMAGE,
27+
val modelName: String = "",
2728
) {
2829
enum class Type(val key: String) {
2930
TEXT_TO_IMAGE("txt2img"),

domain/src/test/java/com/shifthackz/aisdv1/domain/mocks/AiGenerationResultMocks.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ val mockAiGenerationResult = AiGenerationResult(
2626
mediaPath = "",
2727
inputMediaPath = "",
2828
mediaType = MediaType.IMAGE,
29+
modelName = "MockModel",
2930
)
3031

3132
val mockAiGenerationResults = listOf(mockAiGenerationResult)

presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/gallery/detail/GalleryDetailMocks.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ val mockGalleryDetailTxt2Img = GalleryDetailState.Content(
2828
subSeedStrength = "".asUiText(),
2929
denoisingStrength = "".asUiText(),
3030
hidden = false,
31+
modelName = "MockModel".asUiText(),
3132
)

presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/gallery/detail/GalleryDetailScreen.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,15 @@ private fun GalleryDetailsTable(
507507
color = colorOddText,
508508
onCopyTextClick = onCopyTextClick,
509509
)
510+
if (state.modelName.asString().isNotBlank()) {
511+
GalleryDetailRow(
512+
modifier = Modifier.background(color = colorOddBg),
513+
name = LocalizationR.string.gallery_info_field_model.asUiText(),
514+
value = state.modelName,
515+
color = colorOddText,
516+
onCopyTextClick = onCopyTextClick,
517+
)
518+
}
510519
if (state.isFalAi) {
511520
// Fal AI specific fields
512521
GalleryDetailRow(

presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/gallery/detail/GalleryDetailState.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ sealed interface GalleryDetailState : MviState {
7171
val hidden: Boolean,
7272
val isFalAi: Boolean = false,
7373
val falAiEndpointId: String = "",
74+
val modelName: UiText = "".asUiText(),
7475
) : GalleryDetailState
7576

7677
fun withTab(tab: Tab): GalleryDetailState = when (this) {
@@ -158,5 +159,6 @@ fun Triple<AiGenerationResult, Base64ToBitmapConverter.Output, Base64ToBitmapCon
158159
hidden = ai.hidden,
159160
isFalAi = isFalAi,
160161
falAiEndpointId = falAiEndpointId,
162+
modelName = ai.modelName.asUiText(),
161163
)
162164
}

presentation/src/test/java/com/shifthackz/aisdv1/presentation/mocks/AiGenerationResultMocks.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ val mockAiGenerationResult = AiGenerationResult(
2222
subSeedStrength = 5598f,
2323
denoisingStrength = 1504f,
2424
hidden = false,
25+
modelName = "MockModel",
2526
)

0 commit comments

Comments
 (0)