Skip to content

Commit

Permalink
Merge pull request #66 from KevinSchildhorn/quickfix
Browse files Browse the repository at this point in the history
fixing logging issue for desktop
  • Loading branch information
KevinSchildhorn authored Dec 13, 2024
2 parents 3590457 + 5774298 commit 0f0c8db
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 25 deletions.
39 changes: 24 additions & 15 deletions desktopApp/src/jvmMain/kotlin/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,48 @@ import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import co.touchlab.kermit.Logger
import coil3.ImageLoader
import com.kevinschildhorn.fotopresenter.UseCaseFactory
import com.kevinschildhorn.fotopresenter.baseLogger
import com.kevinschildhorn.fotopresenter.ui.SMBJFetcher
import com.kevinschildhorn.fotopresenter.ui.screens.directory.DirectoryViewModel
import com.kevinschildhorn.fotopresenter.ui.screens.login.LoginViewModel
import com.kevinschildhorn.fotopresenter.ui.screens.playlist.PlaylistViewModel
import com.kevinschildhorn.fotopresenter.ui.screens.slideshow.SlideshowViewModel
import coil3.compose.setSingletonImageLoaderFactory
import com.kevinschildhorn.fotopresenter.UseCaseFactory
import com.kevinschildhorn.fotopresenter.data.datasources.image.CachedImageDataSource
import com.kevinschildhorn.fotopresenter.data.datasources.image.NetworkImageDataSource
import com.kevinschildhorn.fotopresenter.data.network.SMBJHandler
import com.kevinschildhorn.fotopresenter.data.repositories.ImageRepository
import com.kevinschildhorn.fotopresenter.ui.SMBJFetcher
import com.kevinschildhorn.fotopresenter.ui.SharedImageFetcher
import com.kevinschildhorn.fotopresenter.ui.screens.directory.DirectoryViewModel
import com.kevinschildhorn.fotopresenter.ui.screens.login.LoginViewModel
import com.kevinschildhorn.fotopresenter.ui.screens.playlist.PlaylistViewModel
import com.kevinschildhorn.fotopresenter.ui.screens.slideshow.SlideshowViewModel
import com.kevinschildhorn.fotopresenter.ui.shared.SharedFileCache


object KoinPurse {
val baseLogger = Logger
private val remoteImageDataSource: NetworkImageDataSource = NetworkImageDataSource(SMBJHandler)
private val localImageDataSource: CachedImageDataSource =
CachedImageDataSource(SharedFileCache("cache"), Logger.withTag("CachedImageDataSource"))
CachedImageDataSource(
SharedFileCache("cache", baseLogger.withTag("SharedFileCache")),
baseLogger.withTag("CachedImageDataSource")
)

val loginViewModel =
LoginViewModel(Logger.withTag("LoginViewModel"), UseCaseFactory.credentialsRepository)
LoginViewModel(baseLogger.withTag("LoginViewModel"), UseCaseFactory.credentialsRepository)
val directoryViewModel =
DirectoryViewModel(UseCaseFactory.playlistRepository, Logger.withTag("DirectoryViewModel"))
val slideshowViewModel = SlideshowViewModel(Logger.withTag("SlideshowViewModel"))
DirectoryViewModel(
UseCaseFactory.playlistRepository,
baseLogger.withTag("DirectoryViewModel")
)
val slideshowViewModel = SlideshowViewModel(baseLogger.withTag("SlideshowViewModel"))
val playlistViewModel =
PlaylistViewModel(UseCaseFactory.playlistRepository, Logger.withTag("PlaylistViewModel"))
PlaylistViewModel(
UseCaseFactory.playlistRepository,
baseLogger.withTag("PlaylistViewModel")
)
val imageRepository =
ImageRepository(
remoteImageDataSource,
localImageDataSource,
Logger.withTag("ImageRepository")
baseLogger.withTag("ImageRepository")
)
}

Expand All @@ -48,8 +57,8 @@ fun main() = application {
setSingletonImageLoaderFactory { context ->
ImageLoader.Builder(context)
.components {
add(SMBJFetcher.Factory(imageRepository, baseLogger))
add(SharedImageFetcher.Factory(baseLogger))
add(SMBJFetcher.Factory(imageRepository, KoinPurse.baseLogger))
add(SharedImageFetcher.Factory(KoinPurse.baseLogger))
}
.build()
}
Expand Down
5 changes: 4 additions & 1 deletion shared/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@file:OptIn(ExperimentalKotlinGradlePluginApi::class)

import org.gradle.kotlin.dsl.get
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi

plugins {
Expand Down Expand Up @@ -154,3 +153,7 @@ compose.resources {
packageOfResClass = "com.kevinschildhorn.fotopresenter"
generateResClass = auto
}

tasks.withType<Copy> {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ class RetrieveImageUseCase(
) {
suspend operator fun invoke(
directory: ImageDirectory,
imageSize: Int,
): SharedImage? {
val imageName = "\"${directory.details.fullPath}\""
logger?.i { "Starting to get Image $imageName" }
Expand All @@ -24,12 +23,12 @@ class RetrieveImageUseCase(
return it
}

logger?.i { "Getting Image Bitmap from File ${directory.name}" }
logger?.i { "$imageName not found in cache. Getting Image Bitmap from File ${directory.name}" }
val imageBitmap: SharedImage? = directory.image
imageBitmap?.let {
logger?.i { "Caching new Image ${directory.name}" }
cachedImageDataSource.saveImage(directory.details, it)
}
} ?: run { logger?.v { "Couldn't load image remotely" } }
return imageBitmap
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,12 @@ class DefaultImageViewModel(private val logger: Logger? = null) : ImageViewModel
logger?.i { "Showing Photo" }
scope?.launch(Dispatchers.Default) {
val retrieveImagesUseCase = UseCaseFactory.retrieveImageUseCase
logger?.d { "Retrieving Image" }
logger?.d { "Retrieving Image ${imageDirectory.image}" }

val imageBitmap = retrieveImagesUseCase(imageDirectory, imageSize = 1024)
val imageBitmap = retrieveImagesUseCase(imageDirectory)
_uiState.update { it.copy(selectedImage = imageBitmap) }
logger?.d { "Updated selected image ${_uiState.value.selectedImage}" }

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ fun DirectoryScreen(

//region Selected Image
imageUiState.selectedImage?.let {
println("selectedImage")

ImagePreviewOverlay(
it,
visible = overlayVisible == DirectoryOverlay.IMAGE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

package com.kevinschildhorn.fotopresenter

import co.touchlab.kermit.Logger
import com.kevinschildhorn.fotopresenter.data.datasources.CredentialsDataSource
import com.kevinschildhorn.fotopresenter.data.datasources.DirectoryDataSource
import com.kevinschildhorn.fotopresenter.data.datasources.ImageMetadataDataSource
Expand Down Expand Up @@ -29,6 +30,8 @@ import com.russhwolf.settings.PreferencesSettings
import java.util.prefs.Preferences

actual object UseCaseFactory {
private val baseLogger = Logger

private val preferences: Preferences = Preferences.userRoot()
private val settings = PreferencesSettings(preferences)
private val networkHandler: NetworkHandler = SMBJHandler
Expand All @@ -45,18 +48,20 @@ actual object UseCaseFactory {
networkHandler = networkHandler,
logger = baseLogger.withTag("imageMetadataDataSource"),
)
private val directoryRepository = DirectoryRepository(directoryDataSource, imageMetadataDataSource)
private val directoryRepository =
DirectoryRepository(directoryDataSource, imageMetadataDataSource)
private val playlistSQLDataSource =
PlaylistSQLDataSource(
sqlDriver,
com.kevinschildhorn.fotopresenter.baseLogger,
baseLogger,
)
private val playlistFileDataSource =
PlaylistFileDataSource(
baseLogger.withTag("playlistFileDataSource"),
networkHandler,
)
val playlistRepository = PlaylistRepository(playlistSQLDataSource, playlistFileDataSource)
val playlistRepository =
PlaylistRepository(playlistSQLDataSource, playlistFileDataSource, baseLogger)

actual val connectToServerUseCase: ConnectToServerUseCase
get() =
Expand Down Expand Up @@ -117,7 +122,6 @@ actual object UseCaseFactory {
cachedImageDataSource =
CachedImageDataSource(
cache = SharedInMemoryCache,
driver = sqlDriver,
logger = baseLogger.withTag("ImageCacheDataSource"),
),
logger = baseLogger.withTag("RetrieveImageUseCase"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import java.io.ByteArrayInputStream

actual open class SharedImage actual constructor(actual val byteArray: ByteArray) {
actual fun getFetchResult(size: Int, logger: Logger?): FetchResult? {
logger?.v { "Getting Fetch Result for Shared Image" }
val source = ByteArrayInputStream(byteArray).source().buffer()

return SourceFetchResult(
Expand Down

0 comments on commit 0f0c8db

Please sign in to comment.