Skip to content

Commit 094709e

Browse files
authored
Merge pull request #29 from viethua99/issue/ios-network
[KMP] Fix iOS Ktor network issues
2 parents 840fa30 + 019955e commit 094709e

File tree

13 files changed

+71
-46
lines changed

13 files changed

+71
-46
lines changed

README.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,14 @@ Go to the [Releases](https://github.com/viethua99/KMP-Stable-Diffusion/releases)
3030
| <img width="320" src="docs/images/android_tti_feature.gif" /> | Coming soon | Coming soon |
3131

3232
## 👀 Screenshots
33-
### Android
3433

35-
| <img width="320" src="docs/images/android_screenshot_1.png" /> | <img width="320" src="docs/images/android_screenshot_2.png" /> | <img width="320" src="docs/images/android_screenshot_3.png" /> | <img width="320" src="docs/images/android_screenshot_4.png" /> |
36-
|----------------------------------------------------------------|----------------------------------------------------------------|----------------------------------------------------------------|----------------------------------------------------------------|
37-
### iOS
34+
| Platform | Home (1) | Home (2) | Generate | Detail |
35+
|----------|----------------------------------------------------------------|----------------------------------------------------------------|----------------------------------------------------------------|----------------------------------------------------------------|
36+
| Android | <img width="320" src="docs/images/android_screenshot_1.png" /> | <img width="320" src="docs/images/android_screenshot_2.png" /> | <img width="320" src="docs/images/android_screenshot_3.png" /> | <img width="320" src="docs/images/android_screenshot_4.png" /> |
37+
| iOS | <img width="320" src="docs/images/ios_screenshot_1.png" /> | <img width="320" src="docs/images/ios_screenshot_2.png" /> | <img width="320" src="docs/images/ios_screenshot_3.png" /> | <img width="320" src="docs/images/ios_screenshot_4.png" /> |
3838

39-
| Comingsoon | Comingsoon | Comingsoon |
40-
|------------|-------------|------------|
4139

42-
## Support Styles:
40+
## 🎨 Support Styles
4341

4442
| Style | Sample | Style | Sample |
4543
|--------------|-------------------------------------------------------------------------------|--------------|--------------------------------------------------------------------------------|

composeApp/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ kotlin {
4747

4848
// Ktor Dependencies for API network
4949
implementation(libs.ktor.client.cio)
50+
implementation(libs.ktor.client.okhttp)
5051

5152
// Koin Dependencies for dependency injection
5253
implementation(libs.koin.android)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,28 @@
11
package com.vproject.stablediffusion.di
22

33
import com.vproject.stablediffusion.util.TestUtil
4+
import io.ktor.client.HttpClient
5+
import io.ktor.client.engine.okhttp.OkHttp
6+
import io.ktor.client.plugins.HttpTimeout
7+
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
8+
import io.ktor.serialization.kotlinx.json.json
9+
import kotlinx.serialization.json.Json
410
import org.koin.dsl.module
511

612
actual fun platformModule() = module {
713
single { TestUtil(get()) }
14+
15+
single {
16+
HttpClient(OkHttp) {
17+
install(ContentNegotiation) {
18+
json(Json { ignoreUnknownKeys = true })
19+
}
20+
21+
install(HttpTimeout) {
22+
requestTimeoutMillis = 120000
23+
connectTimeoutMillis = 120000
24+
socketTimeoutMillis = 120000
25+
}
26+
}
27+
}
828
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.vproject.stablediffusion.network
2+
3+
class HttpClientAndroid {
4+
}

composeApp/src/commonMain/kotlin/com/vproject/stablediffusion/di/Koin.kt

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.vproject.stablediffusion.di
22

3-
import com.vproject.stablediffusion.BuildKonfig
43
import com.vproject.stablediffusion.database.createDatabase
54
import com.vproject.stablediffusion.database.dao.MyDao
65
import com.vproject.stablediffusion.database.sqlDriverFactory
@@ -13,20 +12,6 @@ import com.vproject.stablediffusion.presentation.screen.project.ProjectModel
1312
import com.vproject.stablediffusion.presentation.screen.setting.SettingModel
1413
import com.vproject.stablediffusion.presentation.screen.home.HomeModel
1514
import com.vproject.stablediffusion.presentation.screen.detail.DetailModel
16-
import io.ktor.client.HttpClient
17-
import io.ktor.client.engine.cio.CIO
18-
import io.ktor.client.plugins.DefaultRequest
19-
import io.ktor.client.plugins.HttpTimeout
20-
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
21-
import io.ktor.client.plugins.logging.LogLevel
22-
import io.ktor.client.plugins.logging.Logging
23-
import io.ktor.client.request.accept
24-
import io.ktor.client.request.header
25-
import io.ktor.client.request.headers
26-
import io.ktor.http.ContentType
27-
import io.ktor.http.HttpHeaders
28-
import io.ktor.serialization.kotlinx.json.json
29-
import kotlinx.serialization.json.Json
3015
import org.koin.core.context.startKoin
3116
import org.koin.core.module.Module
3217
import org.koin.core.module.dsl.factoryOf
@@ -64,27 +49,6 @@ fun repositoryModule() = module {
6449
}
6550

6651
fun remoteModule() = module {
67-
// Network Dependencies
68-
single {
69-
HttpClient {
70-
install(ContentNegotiation) {
71-
json( Json { ignoreUnknownKeys = true })
72-
}
73-
74-
install(HttpTimeout) {
75-
requestTimeoutMillis = 120000
76-
connectTimeoutMillis = 120000
77-
socketTimeoutMillis = 120000
78-
}
79-
80-
// install(DefaultRequest) {
81-
// headers {
82-
// append("Authorization", BuildKonfig.STABLE_DIFFUSION_API_KEY)
83-
// }
84-
// }
85-
}
86-
}
87-
8852
single<StableDiffusionApi> { KtorStableDiffusionApi(client = get()) }
8953
}
9054

composeApp/src/commonMain/kotlin/com/vproject/stablediffusion/presentation/screen/home/HomeScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ private fun HomeSearch() {
163163
Box(Modifier.weight(1f)) {
164164
if ("".isEmpty()) {
165165
Text(
166-
modifier = Modifier,
166+
modifier = Modifier.align(Alignment.CenterStart),
167167
text = "Popular Searches: Dragon Year",
168168
style = TextStyle(
169169
color = MaterialTheme.colorScheme.onSurface,
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,27 @@
11
package com.vproject.stablediffusion.di
22

33
import com.vproject.stablediffusion.util.TestUtil
4+
import io.ktor.client.HttpClient
5+
import io.ktor.client.plugins.HttpTimeout
6+
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
7+
import io.ktor.serialization.kotlinx.json.json
8+
import kotlinx.serialization.json.Json
49
import org.koin.dsl.module
510

611
actual fun platformModule() = module {
712
single { TestUtil() }
813

14+
single {
15+
HttpClient {
16+
install(ContentNegotiation) {
17+
json( Json { ignoreUnknownKeys = true })
18+
}
19+
20+
install(HttpTimeout) {
21+
requestTimeoutMillis = 120000
22+
connectTimeoutMillis = 120000
23+
socketTimeoutMillis = 120000
24+
}
25+
}
26+
}
927
}
Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,28 @@
11
package com.vproject.stablediffusion.di
22

33
import com.vproject.stablediffusion.util.TestUtil
4+
import io.ktor.client.HttpClient
5+
import io.ktor.client.engine.darwin.Darwin
6+
import io.ktor.client.plugins.HttpTimeout
7+
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
8+
import io.ktor.serialization.kotlinx.json.json
9+
import kotlinx.serialization.json.Json
410
import org.koin.dsl.module
511

612
actual fun platformModule() = module {
7-
single { TestUtil() }
13+
single { TestUtil() }
14+
15+
single {
16+
HttpClient(Darwin) {
17+
install(ContentNegotiation) {
18+
json(Json { ignoreUnknownKeys = true })
19+
}
20+
21+
install(HttpTimeout) {
22+
requestTimeoutMillis = 120000
23+
connectTimeoutMillis = 120000
24+
socketTimeoutMillis = 120000
25+
}
26+
}
27+
}
828
}

docs/images/ios_screenshot_1.png

2.62 MB
Loading

docs/images/ios_screenshot_2.png

2.93 MB
Loading

docs/images/ios_screenshot_3.png

1.28 MB
Loading

docs/images/ios_screenshot_4.png

2.7 MB
Loading

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
5454
ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" }
5555
ktor-client-auth = { module = "io.ktor:ktor-client-auth", version.ref = "ktor" }
5656
ktor-client-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" }
57-
#ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
57+
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
5858
ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" }
5959
ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }
6060
koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin-android" }

0 commit comments

Comments
 (0)