Skip to content

Commit

Permalink
Merge pull request #192 from qdsfdhvh/feature/image_result_flow
Browse files Browse the repository at this point in the history
refactor ImageResult & remove ImageScope
  • Loading branch information
qdsfdhvh committed Jun 30, 2023
2 parents 2e5813e + 03bb214 commit 9c53f75
Show file tree
Hide file tree
Showing 57 changed files with 1,522 additions and 790 deletions.
34 changes: 18 additions & 16 deletions .github/workflows/Check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,18 +84,19 @@ jobs:
distribution: 'zulu'
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
# - name: Setup Gradle
# uses: gradle/gradle-build-action@v2
# with:
# gradle-home-cache-cleanup: true
# cache-read-only: ${{ github.ref != 'refs/heads/main' }}

# Cleans managed device if previously settle and space currently is not available
- name: Clean Managed Devices
run: ./gradlew cleanManagedDevices --unused-only
# - name: Clean Managed Devices
# run: ./gradlew cleanManagedDevices --unused-only

- name: Assemble
run: ./gradlew assemble --stacktrace -PnoAppApple -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"
# i don't care `yarn.lock` change.
run: ./gradlew kotlinUpgradeYarnLock assemble --stacktrace -PnoAppApple -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"


build:
Expand All @@ -117,15 +118,16 @@ jobs:
distribution: 'zulu'
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
# - name: Setup Gradle
# uses: gradle/gradle-build-action@v2
# with:
# gradle-home-cache-cleanup: true
# cache-read-only: ${{ github.ref != 'refs/heads/main' }}

# Cleans managed device if previously settle and space currently is not available
- name: Clean Managed Devices
run: ./gradlew cleanManagedDevices --unused-only
# - name: Clean Managed Devices
# run: ./gradlew cleanManagedDevices --unused-only

- name: Build
run: ./gradlew build --stacktrace -PnoAppApple -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"
# i don't care `yarn.lock` change.
run: ./gradlew kotlinUpgradeYarnLock build --stacktrace -PnoAppApple -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@ import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember
import com.seiko.imageloader.ImageLoader
import com.seiko.imageloader.LocalImageLoader
import com.seiko.imageloader.cache.memory.maxSizePercent
import com.seiko.imageloader.component.setupDefaultComponents
import com.seiko.imageloader.demo.util.LocalResLoader
import com.seiko.imageloader.demo.util.ResLoader
import com.seiko.imageloader.demo.util.commonConfig
import com.seiko.imageloader.option.androidContext
import okio.Path.Companion.toOkioPath
Expand All @@ -19,8 +18,7 @@ class MainActivity : ComponentActivity() {
super.onCreate(savedInstanceState)
setContent {
CompositionLocalProvider(
LocalImageLoader provides generateImageLoader(),
LocalResLoader provides ResLoader { this },
LocalImageLoader provides remember { generateImageLoader() },
) {
App()
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import com.seiko.imageloader.ImageRequestState
import com.seiko.imageloader.demo.model.Image
import com.seiko.imageloader.demo.util.NullDataInterceptor
import com.seiko.imageloader.demo.util.decodeJson
import com.seiko.imageloader.model.ImageEvent
import com.seiko.imageloader.model.ImageRequest
import com.seiko.imageloader.model.ImageRequestEvent
import com.seiko.imageloader.model.ImageResult
import com.seiko.imageloader.model.blur
import com.seiko.imageloader.rememberAsyncImagePainter
import com.seiko.imageloader.rememberImageAction
import com.seiko.imageloader.rememberImageActionPainter

@Composable
fun BackButton(onBack: () -> Unit) {
Expand Down Expand Up @@ -79,24 +80,27 @@ fun ImageItem(
}
}
}
val painter = rememberAsyncImagePainter(request)
val action by rememberImageAction(request)
val painter = rememberImageActionPainter(action)
Image(
painter = painter,
contentDescription = null,
contentScale = ContentScale.Crop,
modifier = Modifier.fillMaxSize(),
)
when (val requestState = painter.requestState) {
is ImageRequestState.Loading -> {
val event = requestState.event
if (event is ImageRequestEvent.ReadDiskCache && !event.hasCache) {
CircularProgressIndicator()
}
when (val current = action) {
is ImageEvent.StartWithDisk,
is ImageEvent.StartWithFetch,
-> {
CircularProgressIndicator()
}
is ImageResult.Source -> {
Text("image result is source")
}
is ImageRequestState.Failure -> {
Text(requestState.error.message ?: "Error")
is ImageResult.Error -> {
Text(current.error.message ?: "Error")
}
ImageRequestState.Success -> Unit
else -> Unit
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.unit.dp
import com.seiko.imageloader.demo.MR
import com.seiko.imageloader.rememberAsyncImagePainter
import com.seiko.imageloader.rememberImageActionPainter

@Composable
fun OtherImagesScene(
Expand Down Expand Up @@ -78,10 +78,7 @@ fun OtherImagesScene(
@Composable
private fun TestSvgImage(url: String) {
Image(
painter = rememberAsyncImagePainter(
url = url,
contentScale = ContentScale.FillWidth,
),
painter = rememberImageActionPainter(url),
contentDescription = null,
modifier = Modifier
.size(50.dp)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ object NullDataInterceptor : Interceptor {
val data = chain.request.data
if (data === NullRequestData || data is String && data.isEmpty()) {
return ImageResult.Painter(
request = chain.request,
painter = EmptyPainter,
)
}
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.seiko.imageloader.demo

import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import com.seiko.imageloader.ImageLoader
import com.seiko.imageloader.LocalImageLoader
import com.seiko.imageloader.cache.memory.maxSizePercent
import com.seiko.imageloader.component.setupDefaultComponents
import com.seiko.imageloader.demo.util.LocalResLoader
import com.seiko.imageloader.demo.util.ResLoader
import com.seiko.imageloader.demo.util.commonConfig
import okio.Path.Companion.toOkioPath
import java.io.File
Expand All @@ -22,8 +21,7 @@ fun main() {
},
) {
CompositionLocalProvider(
LocalImageLoader provides generateImageLoader(),
LocalResLoader provides ResLoader(),
LocalImageLoader provides remember { generateImageLoader() },
) {
App()
}
Expand All @@ -36,7 +34,7 @@ private fun generateImageLoader(): ImageLoader {
commonConfig()
components {
// add(ImageIODecoder.Factory())
setupDefaultComponents(imageScope)
setupDefaultComponents()
}
interceptor {
memoryCacheConfig {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,17 @@
package com.seiko.imageloader.demo

import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember
import androidx.compose.ui.awt.ComposePanel
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.application.CoroutineSupport
import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.application.asContextElement
import com.intellij.openapi.components.service
import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogWrapper
import com.seiko.imageloader.ImageLoader
import com.seiko.imageloader.LocalImageLoader
import com.seiko.imageloader.cache.memory.maxSizePercent
import com.seiko.imageloader.component.setupDefaultComponents
import com.seiko.imageloader.demo.util.LocalResLoader
import com.seiko.imageloader.demo.util.ResLoader
import com.seiko.imageloader.demo.util.commonConfig
import kotlinx.coroutines.CoroutineScope
import javax.swing.JComponent

class ComposeDemoAction : DumbAwareAction() {
Expand All @@ -39,8 +33,7 @@ class ComposeDemoAction : DumbAwareAction() {
setBounds(0, 0, 800, 600)
setContent {
CompositionLocalProvider(
LocalImageLoader provides generateImageLoader(),
LocalResLoader provides ResLoader(),
LocalImageLoader provides remember { generateImageLoader() },
) {
App()
}
Expand All @@ -51,14 +44,9 @@ class ComposeDemoAction : DumbAwareAction() {
@Suppress("UnstableApiUsage")
private fun generateImageLoader(): ImageLoader {
return ImageLoader {
imageScope = CoroutineScope(
project.service<CoroutineSupport>().edtDispatcher() + ModalityState.any().asContextElement(),
)
commonConfig()
components {
setupDefaultComponents(
imageScope = imageScope,
)
setupDefaultComponents()
}
interceptor {
memoryCacheConfig {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.seiko.imageloader.demo

import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember
import androidx.compose.ui.window.ComposeUIViewController
import com.seiko.imageloader.ImageLoader
import com.seiko.imageloader.LocalImageLoader
import com.seiko.imageloader.cache.memory.maxSizePercent
import com.seiko.imageloader.component.setupDefaultComponents
import com.seiko.imageloader.demo.util.LocalResLoader
import com.seiko.imageloader.demo.util.ResLoader
import com.seiko.imageloader.demo.util.commonConfig
import okio.Path.Companion.toPath
import platform.Foundation.NSCachesDirectory
Expand All @@ -18,8 +17,7 @@ import platform.UIKit.UIViewController
@Suppress("FunctionName")
fun MainViewController(): UIViewController = ComposeUIViewController {
CompositionLocalProvider(
LocalImageLoader provides generateImageLoader(),
LocalResLoader provides ResLoader(),
LocalImageLoader provides remember { generateImageLoader() },
) {
App()
}
Expand All @@ -29,7 +27,7 @@ private fun generateImageLoader(): ImageLoader {
return ImageLoader {
commonConfig()
components {
setupDefaultComponents(imageScope)
setupDefaultComponents()
}
interceptor {
memoryCacheConfig {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.seiko.imageloader.demo

import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember
import androidx.compose.ui.window.Window
import com.seiko.imageloader.ImageLoader
import com.seiko.imageloader.LocalImageLoader
import com.seiko.imageloader.cache.memory.maxSizePercent
import com.seiko.imageloader.component.setupDefaultComponents
import com.seiko.imageloader.demo.util.LocalResLoader
import com.seiko.imageloader.demo.util.ResLoader
import com.seiko.imageloader.demo.util.commonConfig
import okio.Path.Companion.toPath
import platform.AppKit.NSApp
Expand All @@ -20,8 +19,7 @@ fun main() {
NSApplication.sharedApplication()
Window("ComposeImageLoader") {
CompositionLocalProvider(
LocalImageLoader provides generateImageLoader(),
LocalResLoader provides ResLoader(),
LocalImageLoader provides remember { generateImageLoader() },
) {
App()
}
Expand All @@ -33,7 +31,7 @@ private fun generateImageLoader(): ImageLoader {
return ImageLoader {
commonConfig()
components {
setupDefaultComponents(imageScope)
setupDefaultComponents()
}
interceptor {
memoryCacheConfig {
Expand Down
5 changes: 1 addition & 4 deletions app/web/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@


plugins {
kotlin("multiplatform")
id("org.jetbrains.compose")
Expand All @@ -8,8 +6,7 @@ plugins {
kotlin {
js(IR) {
browser()
// Causes build to take too long, turn it off temporarily
// binaries.executable()
binaries.executable()
}
sourceSets {
val jsMain by getting {
Expand Down
Loading

0 comments on commit 9c53f75

Please sign in to comment.