Skip to content

Commit 912d9cf

Browse files
authored
Horde NSFW implementation | Patch 1 (#115)
1 parent 865e2d4 commit 912d9cf

File tree

15 files changed

+48
-6
lines changed

15 files changed

+48
-6
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ fun ImageToImagePayload.mapToRequest(): ImageToImageRequest = with(this) {
2828
fun ImageToImagePayload.mapToHordeRequest(): HordeGenerationAsyncRequest = with(this) {
2929
HordeGenerationAsyncRequest(
3030
prompt = prompt,
31-
nsfw = false,
31+
nsfw = nsfw,
3232
sourceProcessing = "img2img",
3333
sourceImage = base64Image,
3434
params = HordeGenerationAsyncRequest.Params(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ fun TextToImagePayload.mapToRequest(): TextToImageRequest = with(this) {
2727
fun TextToImagePayload.mapToHordeRequest(): HordeGenerationAsyncRequest = with(this) {
2828
HordeGenerationAsyncRequest(
2929
prompt = prompt,
30-
nsfw = false,
30+
nsfw = nsfw,
3131
sourceProcessing = null,
3232
sourceImage = null,
3333
params = HordeGenerationAsyncRequest.Params(

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ data class ImageToImagePayload(
1414
val subSeed: String,
1515
val subSeedStrength: Float,
1616
val sampler: String,
17+
val nsfw: Boolean,
1718
)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ data class TextToImagePayload(
1212
val subSeed: String,
1313
val subSeedStrength: Float,
1414
val sampler: String,
15+
val nsfw: Boolean,
1516
)

presentation/src/main/java/com/shifthackz/aisdv1/presentation/core/GenerationMviState.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ abstract class GenerationMviState : MviState {
2222
abstract val availableSamplers: List<String>
2323
abstract val widthValidationError: UiText?
2424
abstract val heightValidationError: UiText?
25+
abstract val nsfw: Boolean
2526
abstract val generateButtonEnabled: Boolean
2627

2728
open val hasValidationErrors: Boolean
@@ -45,6 +46,7 @@ abstract class GenerationMviState : MviState {
4546
availableSamplers: List<String> = this.availableSamplers,
4647
widthValidationError: UiText? = this.widthValidationError,
4748
heightValidationError: UiText? = this.heightValidationError,
49+
nsfw: Boolean = this.nsfw,
4850
generateButtonEnabled: Boolean = this.generateButtonEnabled,
4951
): GenerationMviState = this
5052
}

presentation/src/main/java/com/shifthackz/aisdv1/presentation/core/GenerationMviViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,10 @@ abstract class GenerationMviViewModel<S : GenerationMviState, E : MviEffect>(
154154
.copyState(selectedSampler = value)
155155
.let(::setGenerationState)
156156

157+
fun updateNsfw(value: Boolean) = currentState
158+
.copyState(nsfw = value)
159+
.let(::setGenerationState)
160+
157161
private fun setGenerationState(state: GenerationMviState) = runCatching {
158162
setState(state as? S ?: currentState)
159163
}

presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/img2img/ImageToImageContract.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ data class ImageToImageState(
3434
override val availableSamplers: List<String> = emptyList(),
3535
override val widthValidationError: UiText? = null,
3636
override val heightValidationError: UiText? = null,
37+
override val nsfw: Boolean = false,
3738
override val generateButtonEnabled: Boolean = true,
3839
) : GenerationMviState() {
3940

@@ -73,6 +74,7 @@ data class ImageToImageState(
7374
availableSamplers: List<String>,
7475
widthValidationError: UiText?,
7576
heightValidationError: UiText?,
77+
nsfw: Boolean,
7678
generateButtonEnabled: Boolean
7779
): GenerationMviState = copy(
7880
mode = mode,
@@ -92,6 +94,7 @@ data class ImageToImageState(
9294
availableSamplers = availableSamplers,
9395
widthValidationError = widthValidationError,
9496
heightValidationError = heightValidationError,
97+
nsfw = nsfw,
9598
generateButtonEnabled = generateButtonEnabled,
9699
)
97100

@@ -118,5 +121,6 @@ fun ImageToImageState.mapToPayload(): ImageToImagePayload = with(this) {
118121
subSeed = subSeed.trim(),
119122
subSeedStrength = subSeedStrength,
120123
sampler = selectedSampler,
124+
nsfw = if (mode == GenerationInputMode.HORDE) nsfw else false,
121125
)
122126
}

presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/img2img/ImageToImageScreen.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ class ImageToImageScreen(
9494
onSubSeedUpdated = viewModel::updateSubSeed,
9595
onSubSeedStrengthUpdated = viewModel::updateSubSeedStrength,
9696
onSamplerUpdated = viewModel::updateSampler,
97+
onNsfwUpdated = viewModel::updateNsfw,
9798
onGenerateClicked = viewModel::generate,
9899
onChangeConfigurationClicked = launchServerSetup,
99100
onSaveGeneratedImage = viewModel::saveGeneratedResult,
@@ -129,6 +130,7 @@ private fun ScreenContent(
129130
onSubSeedUpdated: (String) -> Unit = {},
130131
onSubSeedStrengthUpdated: (Float) -> Unit = {},
131132
onSamplerUpdated: (String) -> Unit = {},
133+
onNsfwUpdated: (Boolean) -> Unit = {},
132134
onGenerateClicked: () -> Unit = {},
133135
onChangeConfigurationClicked: () -> Unit = {},
134136
onSaveGeneratedImage: (AiGenerationResult) -> Unit = {},
@@ -190,6 +192,7 @@ private fun ScreenContent(
190192
onSubSeedUpdated = onSubSeedUpdated,
191193
onSubSeedStrengthUpdated = onSubSeedStrengthUpdated,
192194
onSamplerUpdated = onSamplerUpdated,
195+
onNsfwUpdated = onNsfwUpdated,
193196
widthValidationError = state.widthValidationError,
194197
heightValidationError = state.heightValidationError,
195198
afterSlidersSection = {

presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/img2img/ImageToImageViewModel.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ class ImageToImageViewModel(
110110
fun generate() {
111111
when (currentState.imageState) {
112112
is ImageToImageState.ImageState.Image -> {
113-
// if (!currentState.generateButtonEnabled) {
114-
// setActiveDialog(ImageToImageState.Modal.NoSdAiCoins)
115-
// return
116-
// }
117113
!Single
118114
.just((currentState.imageState as ImageToImageState.ImageState.Image).bitmap)
119115
.doOnSubscribe { setActiveDialog(ImageToImageState.Modal.Communicating()) }

presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/txt2img/TextToImageContract.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ data class TextToImageState(
3131
override val availableSamplers: List<String> = emptyList(),
3232
override val widthValidationError: UiText? = null,
3333
override val heightValidationError: UiText? = null,
34+
override val nsfw: Boolean = false,
3435
override val generateButtonEnabled: Boolean = true,
3536
) : GenerationMviState() {
3637

@@ -64,6 +65,7 @@ data class TextToImageState(
6465
availableSamplers: List<String>,
6566
widthValidationError: UiText?,
6667
heightValidationError: UiText?,
68+
nsfw: Boolean,
6769
generateButtonEnabled: Boolean
6870
): GenerationMviState = copy(
6971
mode = mode,
@@ -83,6 +85,7 @@ data class TextToImageState(
8385
availableSamplers = availableSamplers,
8486
widthValidationError = widthValidationError,
8587
heightValidationError = heightValidationError,
88+
nsfw = nsfw,
8689
generateButtonEnabled = generateButtonEnabled,
8790
)
8891
}
@@ -100,6 +103,7 @@ fun TextToImageState.mapToPayload(): TextToImagePayload = with(this) {
100103
subSeed = subSeed.trim(),
101104
subSeedStrength = subSeedStrength,
102105
sampler = selectedSampler,
106+
nsfw = if (mode == GenerationInputMode.HORDE) nsfw else false,
103107
)
104108
}
105109

0 commit comments

Comments
 (0)