Skip to content

Commit

Permalink
Merge pull request #445 from qdsfdhvh/version_1.7.4
Browse files Browse the repository at this point in the history
Version 1.7.4
  • Loading branch information
qdsfdhvh committed Feb 6, 2024
2 parents 72c34bd + cfd3470 commit 5a8b9ff
Show file tree
Hide file tree
Showing 20 changed files with 212 additions and 48 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/Check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
uses: gradle/wrapper-validation-action@v2

- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
Expand All @@ -46,7 +46,7 @@ jobs:
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
uses: gradle/wrapper-validation-action@v2

- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
Expand All @@ -68,7 +68,7 @@ jobs:
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
uses: gradle/wrapper-validation-action@v2

- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
Expand Down Expand Up @@ -96,7 +96,7 @@ jobs:
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
uses: gradle/wrapper-validation-action@v2

- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
Expand Down Expand Up @@ -135,7 +135,7 @@ jobs:
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
uses: gradle/wrapper-validation-action@v2

- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/CompareScreenshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@982da8e78c05368c70dac0351bb82647a9e9a5d2 # v2.11.1
uses: gradle/gradle-build-action@3b1b3b9a2104c2b47fbae53f3938079c00c9bb87 # v3.0.0
with:
gradle-version: wrapper

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/CompareScreenshotComment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ jobs:
done
echo "${delimiter}" >> "$GITHUB_OUTPUT"
- name: Find Comment
uses: peter-evans/find-comment@v2
uses: peter-evans/find-comment@v3
id: fc
if: steps.generate-diff-reports.outputs.reports != ''
with:
Expand All @@ -123,7 +123,7 @@ jobs:
body-includes: Snapshot diff report

- name: Add or update comment on PR
uses: peter-evans/create-or-update-comment@v3
uses: peter-evans/create-or-update-comment@v4
if: steps.generate-diff-reports.outputs.reports != ''
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/DocsDeploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
uses: gradle/wrapper-validation-action@v2

- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
Expand All @@ -25,7 +25,7 @@ jobs:
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
uses: gradle/gradle-build-action@v3
with:
gradle-home-cache-cleanup: true
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/DocsTest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
uses: gradle/wrapper-validation-action@v2

- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
Expand All @@ -25,7 +25,7 @@ jobs:
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
uses: gradle/gradle-build-action@v3
with:
gradle-home-cache-cleanup: true
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/Publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
uses: gradle/wrapper-validation-action@v2

- name: Set up JDK 17
uses: actions/setup-java@v3
Expand All @@ -28,7 +28,7 @@ jobs:
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
uses: gradle/gradle-build-action@v3

- name: Publish to MavenCentral
run: ./gradlew publishAllPublicationsToMavenCentral --no-build-cache
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/StoreScreenshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:

# Better than caching and/or extensions of actions/setup-java
- name: Setup Gradle
uses: gradle/gradle-build-action@982da8e78c05368c70dac0351bb82647a9e9a5d2 # v2.11.1
uses: gradle/gradle-build-action@3b1b3b9a2104c2b47fbae53f3938079c00c9bb87 # v3.0.0
with:
gradle-version: wrapper

Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@ kotlin {
sourceSets {
val commonMain by getting {
dependencies {
+ api("io.github.qdsfdhvh:image-loader:1.7.3")
+ api("io.github.qdsfdhvh:image-loader:1.7.4")
// optional - Moko Resources Decoder
+ api("io.github.qdsfdhvh:image-loader-extension-moko-resources:1.7.3")
+ api("io.github.qdsfdhvh:image-loader-extension-moko-resources:1.7.4")
// optional - Blur Interceptor (only support bitmap)
+ api("io.github.qdsfdhvh:image-loader-extension-blur:1.7.3")
+ api("io.github.qdsfdhvh:image-loader-extension-blur:1.7.4")
}
}
val jvmMain by getting {
dependencies {
// optional - ImageIO Decoder
+ api("io.github.qdsfdhvh:image-loader-extension-imageio:1.7.3")
+ api("io.github.qdsfdhvh:image-loader-extension-imageio:1.7.4")
}
}
}
Expand Down
6 changes: 4 additions & 2 deletions app/common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,19 @@ kotlin {

implementation(libs.kotlinx.serialization.json)
implementation(libs.ktor.client.logging)
implementation(libs.ktor.client.content.negotiation)
implementation(libs.ktor.serialization.kotlinx.json)
implementation(libs.kermit)
}
}
androidMain {
dependencies {
implementation(libs.ktor.client.cio)
implementation(libs.ktor.client.okhttp)
}
}
desktopMain {
dependencies {
implementation(libs.ktor.client.cio)
implementation(libs.ktor.client.okhttp)
}
}
appleMain {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.seiko.imageloader.demo.util

import io.ktor.client.engine.HttpClientEngine
import io.ktor.client.engine.cio.CIO
import io.ktor.client.engine.okhttp.OkHttp

actual val httpEngine: HttpClientEngine
get() = CIO.create()
get() = OkHttp.create()
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import com.seiko.imageloader.demo.scene.NetworkImagesScene
import com.seiko.imageloader.demo.scene.OtherImagesScene
import com.seiko.imageloader.demo.scene.PokemonScene
import com.seiko.imageloader.demo.scene.SvgImagesScene
import com.seiko.imageloader.demo.scene.WanAndroidScene

@Composable
fun App(modifier: Modifier = Modifier) {
Expand All @@ -48,6 +49,7 @@ fun App(modifier: Modifier = Modifier) {
Route.LocalResource -> LocalResourceScene(::onBack)
Route.Other -> OtherImagesScene(::onBack)
Route.FilePicker -> FilePickerScene(::onBack)
Route.WanAndroid -> WanAndroidScene(::onBack)
}
}
}
Expand Down Expand Up @@ -94,4 +96,5 @@ private enum class Route {
LocalResource,
Other,
FilePicker,
WanAndroid,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
package com.seiko.imageloader.demo.scene

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.material.ScrollableTabRow
import androidx.compose.material.Tab
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.seiko.imageloader.demo.MR
import com.seiko.imageloader.demo.util.JSON
import com.seiko.imageloader.demo.util.httpEngine
import com.seiko.imageloader.ui.AutoSizeImage
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.defaultRequest
import io.ktor.client.request.get
import io.ktor.client.statement.HttpResponse
import io.ktor.serialization.kotlinx.json.json
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.painterResource

@OptIn(ExperimentalResourceApi::class)
@Composable
fun WanAndroidScene(
onBack: () -> Unit,
) {
BackScene(
onBack = onBack,
title = { Text("WanAndroid") },
) { innerPadding ->
val client by remember {
lazy {
HttpClient(httpEngine) {
install(ContentNegotiation) {
json(JSON)
}
defaultRequest {
url("https://www.wanandroid.com/")
}
}
}
}
Column(Modifier.padding(innerPadding).fillMaxSize()) {
val tabs by produceState(emptyList()) {
value = runCatching {
client.get("project/tree/json")
.wanBody<List<WanProjectTabs>>()
.take(5)
}.getOrElse {
it.printStackTrace()
emptyList()
}
}
if (tabs.isEmpty()) return@Column

var selectedTabIndex by remember { mutableIntStateOf(0) }
ScrollableTabRow(
selectedTabIndex = selectedTabIndex,
modifier = Modifier.fillMaxWidth(),
tabs = {
tabs.forEachIndexed { index, tag ->
Tab(
selected = index == selectedTabIndex,
onClick = { selectedTabIndex = index },
modifier = Modifier.widthIn(min = 100.dp),
) {
Text(tag.name)
}
}
},
)

val projects by produceState(emptyList(), key1 = tabs, key2 = selectedTabIndex) {
value = runCatching {
client.get("project/list/1/json?cid=${tabs[selectedTabIndex].id}")
.wanBody<WanProjectPage>().projects
}.getOrElse {
it.printStackTrace()
emptyList()
}
}

LazyVerticalGrid(
GridCells.Fixed(3),
Modifier.weight(1f).fillMaxWidth(),
) {
items(
projects.size,
key = { projects[it].id },
) {
Column {
AutoSizeImage(
projects[it].envelopePic,
contentDescription = projects[it].title,
modifier = Modifier.size(200.dp),
placeholderPainter = { painterResource(MR.images.cat) },
errorPainter = { painterResource(MR.images.cat) },
)
Text(projects[it].title)
}
}
}
}
}
}

private suspend inline fun <reified T> HttpResponse.wanBody(): T {
val response = body<WanResponse<T>>()
if (response.errorCode == 0) {
return response.data
} else {
error(response.errorMsg)
}
}

@Serializable
private data class WanResponse<T>(
val data: T,
val errorCode: Int,
val errorMsg: String,
)

@Serializable
private data class WanProjectTabs(
val id: Int,
val name: String,
)

@Serializable
private data class WanProjectPage(
val curPage: Int,
@SerialName("datas") val projects: List<WanProject>,
)

@Serializable
private data class WanProject(
val id: Int,
val title: String,
val envelopePic: String,
)
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.seiko.imageloader.demo.util

import io.ktor.client.engine.HttpClientEngine
import io.ktor.client.engine.cio.CIO
import io.ktor.client.engine.okhttp.OkHttp

actual val httpEngine: HttpClientEngine
get() = CIO.create()
get() = OkHttp.create()
2 changes: 1 addition & 1 deletion app/intellij-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("org.jetbrains.intellij") version "1.16.1"
id("org.jetbrains.intellij") version "1.17.1"
java
id("app.kotlin.jvm")
id("app.compose.multiplatform")
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ object ProjectVersion {
private const val monir = "7"

// backwards compatible bug fixes
private const val path = "3"
private const val path = "4"
const val version = "$major.$monir.$path"
}

Expand Down
Loading

0 comments on commit 5a8b9ff

Please sign in to comment.