Skip to content

Commit ea1f85f

Browse files
authored
Gallery not loading fix (#64)
* Gallery not loading fix - Patch 1 * Gallery not loading fix - Patch 2
1 parent 56ce664 commit ea1f85f

File tree

18 files changed

+259
-4
lines changed

18 files changed

+259
-4
lines changed

app/src/main/java/com/shifthackz/aisdv1/app/AiStableDiffusionClientApp.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class AiStableDiffusionClientApp : Application() {
3232
*featureModule,
3333
preferenceModule,
3434
providersModule,
35-
domainModule,
35+
*domainModule,
3636
*dataModule,
3737
networkModule,
3838
databaseModule,

core/imageprocessing/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ android {
1212
dependencies {
1313
implementation project(":core:common")
1414
implementation di.koinCore
15+
implementation di.koinAndroid
1516
implementation reactive.rxkotlin
1617
}

core/imageprocessing/src/main/java/com/shifthackz/aisdv1/core/imageprocessing/Base64ToBitmapConverter.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.shifthackz.aisdv1.core.imageprocessing
22

33
import android.graphics.Bitmap
4+
import com.shifthackz.aisdv1.core.common.log.errorLog
45
import com.shifthackz.aisdv1.core.imageprocessing.Base64ToBitmapConverter.Input
56
import com.shifthackz.aisdv1.core.imageprocessing.Base64ToBitmapConverter.Output
67
import com.shifthackz.aisdv1.core.imageprocessing.contract.RxImageProcessor
@@ -12,6 +13,7 @@ private typealias Base64ToBitmapProcessor = RxImageProcessor<Input, Output>
1213

1314
class Base64ToBitmapConverter(
1415
private val processingScheduler: Scheduler,
16+
private val fallbackBitmap: Bitmap,
1517
) : Base64ToBitmapProcessor {
1618

1719
override operator fun invoke(input: Input): Single<Output> = Single
@@ -21,6 +23,10 @@ class Base64ToBitmapConverter(
2123
onFailure = emitter::onError,
2224
)
2325
}
26+
.onErrorReturn { t ->
27+
errorLog(t)
28+
Output(fallbackBitmap)
29+
}
2430
.subscribeOn(processingScheduler)
2531

2632
private fun convert(input: Input): Result<Output> = runCatching {

core/imageprocessing/src/main/java/com/shifthackz/aisdv1/core/imageprocessing/di/ImageProcessingModule.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package com.shifthackz.aisdv1.core.imageprocessing.di
22

3+
import android.graphics.BitmapFactory
34
import com.shifthackz.aisdv1.core.common.schedulers.SchedulersProvider
45
import com.shifthackz.aisdv1.core.imageprocessing.Base64ToBitmapConverter
56
import com.shifthackz.aisdv1.core.imageprocessing.BitmapToBase64Converter
7+
import com.shifthackz.aisdv1.core.imageprocessing.R
8+
import org.koin.android.ext.koin.androidContext
69
import org.koin.dsl.module
710

811
val imageProcessingModule = module {
912

1013
factory {
11-
Base64ToBitmapConverter(get<SchedulersProvider>().computation)
14+
Base64ToBitmapConverter(
15+
get<SchedulersProvider>().computation,
16+
BitmapFactory.decodeResource(androidContext().resources, R.drawable.ic_broken),
17+
)
1218
}
1319

1420
factory {
3.4 KB
Loading

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import com.shifthackz.aisdv1.domain.usecase.connectivity.TestConnectivityUseCase
1616
import com.shifthackz.aisdv1.domain.usecase.connectivity.TestConnectivityUseCaseImpl
1717
import com.shifthackz.aisdv1.domain.usecase.connectivity.TestHordeApiKeyUseCase
1818
import com.shifthackz.aisdv1.domain.usecase.connectivity.TestHordeApiKeyUseCaseImpl
19+
import com.shifthackz.aisdv1.domain.usecase.debug.DebugInsertBadBase64UseCase
20+
import com.shifthackz.aisdv1.domain.usecase.debug.DebugInsertBadBase64UseCaseImpl
1921
import com.shifthackz.aisdv1.domain.usecase.gallery.DeleteGalleryItemUseCase
2022
import com.shifthackz.aisdv1.domain.usecase.gallery.DeleteGalleryItemUseCaseImpl
2123
import com.shifthackz.aisdv1.domain.usecase.gallery.GetAllGalleryUseCase
@@ -52,7 +54,7 @@ import org.koin.core.module.dsl.factoryOf
5254
import org.koin.dsl.bind
5355
import org.koin.dsl.module
5456

55-
val domainModule = module {
57+
internal val useCasesModule = module {
5658
factoryOf(::TextToImageUseCaseImpl) bind TextToImageUseCase::class
5759
factoryOf(::ImageToImageUseCaseImpl) bind ImageToImageUseCase::class
5860
factoryOf(::PingStableDiffusionServiceUseCaseImpl) bind PingStableDiffusionServiceUseCase::class
@@ -78,3 +80,9 @@ val domainModule = module {
7880
factoryOf(::ObserveMotdUseCaseImpl) bind ObserveMotdUseCase::class
7981
factoryOf(::ObserveHordeProcessStatusUseCaseImpl) bind ObserveHordeProcessStatusUseCase::class
8082
}
83+
84+
internal val debugModule = module {
85+
factoryOf(::DebugInsertBadBase64UseCaseImpl) bind DebugInsertBadBase64UseCase::class
86+
}
87+
88+
val domainModule = (useCasesModule + debugModule).toTypedArray()
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.shifthackz.aisdv1.domain.usecase.debug
2+
3+
import io.reactivex.rxjava3.core.Completable
4+
5+
interface DebugInsertBadBase64UseCase {
6+
operator fun invoke(): Completable
7+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.shifthackz.aisdv1.domain.usecase.debug
2+
3+
import com.shifthackz.aisdv1.domain.entity.AiGenerationResult
4+
import com.shifthackz.aisdv1.domain.repository.GenerationResultRepository
5+
import io.reactivex.rxjava3.core.Completable
6+
import java.util.Date
7+
8+
class DebugInsertBadBase64UseCaseImpl(
9+
private val repository: GenerationResultRepository,
10+
) : DebugInsertBadBase64UseCase {
11+
12+
override fun invoke(): Completable = repository
13+
.insert(stubBadBase64Generation)
14+
.ignoreElement()
15+
16+
companion object {
17+
private val stubBadBase64Generation = AiGenerationResult(
18+
0L,
19+
image = System.currentTimeMillis().toString(),
20+
inputImage = "",
21+
createdAt = Date(),
22+
type = AiGenerationResult.Type.TEXT_TO_IMAGE,
23+
prompt = "",
24+
negativePrompt = "",
25+
width = 512,
26+
height = 512,
27+
samplingSteps = 30,
28+
cfgScale = 0f,
29+
restoreFaces = false,
30+
sampler = "",
31+
seed = "",
32+
subSeed = "",
33+
subSeedStrength = 0f,
34+
denoisingStrength = 0f,
35+
)
36+
}
37+
}

presentation/src/main/java/com/shifthackz/aisdv1/presentation/activity/AiStableDiffusionActivity.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import com.shifthackz.aisdv1.core.extensions.openUrl
2222
import com.shifthackz.aisdv1.domain.feature.ad.AdFeature
2323
import com.shifthackz.aisdv1.domain.feature.analytics.Analytics
2424
import com.shifthackz.aisdv1.presentation.features.*
25+
import com.shifthackz.aisdv1.presentation.screen.debug.DebugMenuAccessor
26+
import com.shifthackz.aisdv1.presentation.screen.debug.DebugMenuScreen
2527
import com.shifthackz.aisdv1.presentation.screen.gallery.detail.GalleryDetailScreen
2628
import com.shifthackz.aisdv1.presentation.screen.gallery.detail.GalleryDetailSharing
2729
import com.shifthackz.aisdv1.presentation.screen.gallery.detail.GalleryDetailViewModel
@@ -46,6 +48,7 @@ class AiStableDiffusionActivity : ComponentActivity(), ImagePickerFeature, FileS
4648
private val galleryDetailSharing: GalleryDetailSharing by inject()
4749
private val adFeature: AdFeature by inject()
4850
private val analytics: Analytics by inject()
51+
private val debugMenuAccessor: DebugMenuAccessor by inject()
4952

5053
private val viewModel: AiStableDiffusionViewModel by viewModel()
5154
private val versionCheckerViewModel: VersionCheckerViewModel by viewModel()
@@ -172,6 +175,11 @@ class AiStableDiffusionActivity : ComponentActivity(), ImagePickerFeature, FileS
172175
rewardCallback = viewModel::earnRewardedCoins,
173176
)
174177
},
178+
launchDebugMenu = {
179+
if (debugMenuAccessor.invoke()) {
180+
navController.navigate(Constants.ROUTE_DEBUG)
181+
}
182+
},
175183
shareLogFile = {
176184
ReportProblemEmailComposer().invoke(this@AiStableDiffusionActivity)
177185
},
@@ -207,6 +215,13 @@ class AiStableDiffusionActivity : ComponentActivity(), ImagePickerFeature, FileS
207215
},
208216
).Build()
209217
}
218+
219+
composable(Constants.ROUTE_DEBUG) {
220+
DebugMenuScreen(
221+
viewModel = koinViewModel(),
222+
onNavigateBack = { navController.navigateUp() },
223+
).Build()
224+
}
210225
}
211226
VersionCheckerComposable(
212227
viewModel = versionCheckerViewModel,

presentation/src/main/java/com/shifthackz/aisdv1/presentation/di/PresentationModule.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.shifthackz.aisdv1.presentation.di
33
import androidx.core.app.NotificationManagerCompat
44
import com.shifthackz.aisdv1.presentation.core.GenerationFormUpdateEvent
55
import com.shifthackz.aisdv1.presentation.notification.SdaiPushNotificationManager
6+
import com.shifthackz.aisdv1.presentation.screen.debug.DebugMenuAccessor
67
import com.shifthackz.aisdv1.presentation.screen.gallery.detail.GalleryDetailBitmapExporter
78
import com.shifthackz.aisdv1.presentation.screen.gallery.detail.GalleryDetailSharing
89
import com.shifthackz.aisdv1.presentation.screen.gallery.list.GalleryExporter
@@ -20,4 +21,5 @@ val presentationModule = (viewModelModule + module {
2021
factoryOf(::GalleryDetailSharing)
2122
factoryOf(::SettingsStateProducer)
2223
singleOf(::GenerationFormUpdateEvent)
24+
singleOf(::DebugMenuAccessor)
2325
}).toTypedArray()

0 commit comments

Comments
 (0)