Skip to content

Commit 143c3d4

Browse files
authored
img2img random input (#79)
* img2img random image :: Patch 1 * img2img random image :: Patch 2
1 parent b66b79b commit 143c3d4

File tree

23 files changed

+228
-23
lines changed

23 files changed

+228
-23
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Stable Diffusion AI is an easy-to-use app that lets you quickly generate images
2727
- **Restore faces** option
2828
- ( Img2Img ONLY ) : Image selection from device gallery _(requires user permission)_
2929
- ( Img2Img ONLY ) : Capture input image from camera _(requires user permission)_
30+
- ( Img2Img ONLY ) : Fetching random image for the input
3031
- In-app Gallery, stored locally, contains all AI generated images
3132
- Displays generated images grid
3233
- Image detail view: Zoom, Pinch, Generation Info.

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ android {
2525
versionCode 159
2626

2727
buildConfigField "String", "CLOUD_AI_URL", "\"https://sdai.moroz.cc\""
28+
buildConfigField "String", "IMAGE_CDN_URL", "\"https://random.imagecdn.app\""
2829
buildConfigField "String", "HORDE_AI_URL", "\"https://stablehorde.net\""
2930
buildConfigField "String", "HORDE_AI_SIGN_UP_URL", "\"https://stablehorde.net/register\""
3031
buildConfigField "String", "UPDATE_API_URL", "\"https://sdai.moroz.cc\""

app/src/main/java/com/shifthackz/aisdv1/app/di/ProvidersModule.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ val providersModule = module {
3434
override val stableDiffusionAppApiUrl: String = BuildConfig.UPDATE_API_URL
3535
override val stableDiffusionCloudAiApiUrl: String = BuildConfig.CLOUD_AI_URL
3636
override val hordeApiUrl: String = BuildConfig.HORDE_AI_URL
37+
override val imageCdnApiUrl: String = BuildConfig.IMAGE_CDN_URL
3738
}
3839
}
3940

data/src/main/java/com/shifthackz/aisdv1/data/di/RemoteDataSourceModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.shifthackz.aisdv1.data.remote.FeatureFlagsRemoteDataSource
1010
import com.shifthackz.aisdv1.data.remote.HordeGenerationRemoteDataSource
1111
import com.shifthackz.aisdv1.data.remote.HordeStatusSource
1212
import com.shifthackz.aisdv1.data.remote.MotdRemoteDataSource
13+
import com.shifthackz.aisdv1.data.remote.RandomImageRemoteDataSource
1314
import com.shifthackz.aisdv1.data.remote.ServerConfigurationRemoteDataSource
1415
import com.shifthackz.aisdv1.data.remote.StableDiffusionGenerationRemoteDataSource
1516
import com.shifthackz.aisdv1.data.remote.StableDiffusionModelsRemoteDataSource
@@ -19,6 +20,7 @@ import com.shifthackz.aisdv1.domain.datasource.CoinDataSource
1920
import com.shifthackz.aisdv1.domain.datasource.FeatureFlagsDataSource
2021
import com.shifthackz.aisdv1.domain.datasource.HordeGenerationDataSource
2122
import com.shifthackz.aisdv1.domain.datasource.MotdDataSource
23+
import com.shifthackz.aisdv1.domain.datasource.RandomImageDataSource
2224
import com.shifthackz.aisdv1.domain.datasource.ServerConfigurationDataSource
2325
import com.shifthackz.aisdv1.domain.datasource.StableDiffusionGenerationDataSource
2426
import com.shifthackz.aisdv1.domain.datasource.StableDiffusionModelsDataSource
@@ -57,6 +59,7 @@ val remoteDataSourceModule = module {
5759
factoryOf(::CoinRemoteDateSource) bind CoinDataSource.Remote::class
5860
factoryOf(::MotdRemoteDataSource) bind MotdDataSource.Remote::class
5961
factoryOf(::FeatureFlagsRemoteDataSource) bind FeatureFlagsDataSource.Remote::class
62+
factoryOf(::RandomImageRemoteDataSource) bind RandomImageDataSource.Remote::class
6063

6164
factory<ServerConnectivityGateway> {
6265
val lambda: () -> Boolean = {

data/src/main/java/com/shifthackz/aisdv1/data/di/RepositoryModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.shifthackz.aisdv1.data.repository.FeatureFlagsRepositoryImpl
66
import com.shifthackz.aisdv1.data.repository.GenerationResultRepositoryImpl
77
import com.shifthackz.aisdv1.data.repository.HordeGenerationRepositoryImpl
88
import com.shifthackz.aisdv1.data.repository.MotdRepositoryImpl
9+
import com.shifthackz.aisdv1.data.repository.RandomImageRepositoryImpl
910
import com.shifthackz.aisdv1.data.repository.ServerConfigurationRepositoryImpl
1011
import com.shifthackz.aisdv1.data.repository.StableDiffusionGenerationRepositoryImpl
1112
import com.shifthackz.aisdv1.data.repository.StableDiffusionModelsRepositoryImpl
@@ -16,6 +17,7 @@ import com.shifthackz.aisdv1.domain.repository.FeatureFlagsRepository
1617
import com.shifthackz.aisdv1.domain.repository.GenerationResultRepository
1718
import com.shifthackz.aisdv1.domain.repository.HordeGenerationRepository
1819
import com.shifthackz.aisdv1.domain.repository.MotdRepository
20+
import com.shifthackz.aisdv1.domain.repository.RandomImageRepository
1921
import com.shifthackz.aisdv1.domain.repository.ServerConfigurationRepository
2022
import com.shifthackz.aisdv1.domain.repository.StableDiffusionGenerationRepository
2123
import com.shifthackz.aisdv1.domain.repository.StableDiffusionModelsRepository
@@ -35,4 +37,5 @@ val repositoryModule = module {
3537
factoryOf(::CoinRepositoryImpl) bind CoinRepository::class
3638
factoryOf(::MotdRepositoryImpl) bind MotdRepository::class
3739
factoryOf(::FeatureFlagsRepositoryImpl) bind FeatureFlagsRepository::class
40+
factoryOf(::RandomImageRepositoryImpl) bind RandomImageRepository::class
3841
}

data/src/main/java/com/shifthackz/aisdv1/data/remote/MotdRemoteDataSource.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.shifthackz.aisdv1.domain.datasource.MotdDataSource
55
import com.shifthackz.aisdv1.network.api.sdai.MotdRestApi
66
import com.shifthackz.aisdv1.network.response.MotdResponse
77

8-
class MotdRemoteDataSource(
8+
internal class MotdRemoteDataSource(
99
private val api: MotdRestApi,
1010
) : MotdDataSource.Remote {
1111

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.shifthackz.aisdv1.data.remote
2+
3+
import com.shifthackz.aisdv1.domain.datasource.RandomImageDataSource
4+
import com.shifthackz.aisdv1.network.api.imagecdn.ImageCdnRestApi
5+
6+
internal class RandomImageRemoteDataSource(
7+
private val api: ImageCdnRestApi,
8+
) : RandomImageDataSource.Remote {
9+
10+
override fun fetch() = api.fetchRandomImage()
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.shifthackz.aisdv1.data.repository
2+
3+
import com.shifthackz.aisdv1.domain.datasource.RandomImageDataSource
4+
import com.shifthackz.aisdv1.domain.repository.RandomImageRepository
5+
6+
internal class RandomImageRepositoryImpl(
7+
private val remoteDataSource: RandomImageDataSource.Remote,
8+
) : RandomImageRepository {
9+
10+
override fun fetchAndGet() = remoteDataSource.fetch()
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.shifthackz.aisdv1.domain.datasource
2+
3+
import android.graphics.Bitmap
4+
import io.reactivex.rxjava3.core.Single
5+
6+
sealed interface RandomImageDataSource {
7+
8+
interface Remote : RandomImageDataSource {
9+
fun fetch(): Single<Bitmap>
10+
}
11+
}

domain/src/main/java/com/shifthackz/aisdv1/domain/di/DomainModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ import com.shifthackz.aisdv1.domain.usecase.generation.GetGenerationResultPagedU
3030
import com.shifthackz.aisdv1.domain.usecase.generation.GetGenerationResultPagedUseCaseImpl
3131
import com.shifthackz.aisdv1.domain.usecase.generation.GetGenerationResultUseCase
3232
import com.shifthackz.aisdv1.domain.usecase.generation.GetGenerationResultUseCaseImpl
33+
import com.shifthackz.aisdv1.domain.usecase.generation.GetRandomImageUseCase
34+
import com.shifthackz.aisdv1.domain.usecase.generation.GetRandomImageUseCaseImpl
3335
import com.shifthackz.aisdv1.domain.usecase.generation.ImageToImageUseCase
3436
import com.shifthackz.aisdv1.domain.usecase.generation.ImageToImageUseCaseImpl
3537
import com.shifthackz.aisdv1.domain.usecase.generation.ObserveHordeProcessStatusUseCase
@@ -85,6 +87,7 @@ internal val useCasesModule = module {
8587
factoryOf(::ObserveHordeProcessStatusUseCaseImpl) bind ObserveHordeProcessStatusUseCase::class
8688
factoryOf(::GetMediaStoreInfoUseCaseImpl) bind GetMediaStoreInfoUseCase::class
8789
factoryOf(::GetFeatureFlagsUseCaseImpl) bind GetFeatureFlagsUseCase::class
90+
factoryOf(::GetRandomImageUseCaseImpl) bind GetRandomImageUseCase::class
8891
}
8992

9093
internal val debugModule = module {

0 commit comments

Comments
 (0)