fix web target?

This commit is contained in:
2026-06-30 19:21:49 +03:00
parent 7f2aefdd72
commit 4c0153a294
10 changed files with 23 additions and 14 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ plugins {
sqldelight {
databases {
create("AppDatabase") {
register("AppDatabase") {
packageName.set("ru.shadowsparky.vbox.app")
generateAsync.set(true)
}
@@ -2,6 +2,7 @@
package ru.shadowsparky.vbox.shared.data
import app.cash.sqldelight.Query
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
import app.cash.sqldelight.coroutines.asFlow
import app.cash.sqldelight.coroutines.mapToList
import app.cash.sqldelight.coroutines.mapToOneOrNull
@@ -70,7 +71,7 @@ class AndroidOfflineStorage(
withContext(Dispatchers.IO) {
getQueries()
.selectById(id)
.executeAsOneOrNull()
.awaitAsOneOrNull()
}
override fun queryByArgs(movieId: Long, seasonId: Long?): Flow<List<OfflineVideo>> = flow {
@@ -86,7 +87,7 @@ class AndroidOfflineStorage(
override suspend fun find(movieId: Long, seasonId: Long?, episodeId: Long?): OfflineVideo? {
return withContext(Dispatchers.IO) {
getQueries().selectByFullArgs(movieId, seasonId, episodeId)
.executeAsOneOrNull()
.awaitAsOneOrNull()
?.toDomain()
}
}
@@ -28,8 +28,7 @@ class RemoteSavedMovieRepository(
) : SavedMovieRepository {
override fun getAll(): Flow<List<VideoDetails>> {
return eventListener.event
.filter { it is RemoteEvent.OnSaved }
return eventListener.event.filter { it is RemoteEvent.OnSaved }
.map { getAllSingle() }
.onStart { emit(getAllSingle()) }
}
@@ -52,8 +51,7 @@ class RemoteSavedMovieRepository(
}
override fun isSaved(id: Long): Flow<Boolean> {
return eventListener.event
.filter { it is RemoteEvent.OnSaved && it.movieId == id }
return eventListener.event.filter { it is RemoteEvent.OnSaved && it.movieId == id }
.map { isSavedSingle(id) }
.onStart { emit(isSavedSingle(id)) }
}
@@ -37,9 +37,9 @@ class SqlSavedMovieRepository(
}.flowOn(dispatcherProvider.io)
}
private suspend fun obtain(): List<VideoDetails> = withContext(dispatcherProvider.io) {
private suspend fun obtain(): List<VideoDetails> {
val request = getRequest()
request.awaitAsList().map {
return request.awaitAsList().map {
VideoDetails(
it.saved_movie_id,
it.poster_url,
@@ -8,6 +8,7 @@ import kotlinx.serialization.json.encodeToJsonElement
import kotlinx.serialization.json.put
import org.koin.core.annotation.Factory
import org.koin.core.annotation.Named
import ru.shadowsparky.domain.DispatcherProvider
import ru.shadowsparky.http.domain.TokenStorage
import ru.shadowsparky.http.domain.hasAccount
import ru.shadowsparky.vbox.shared.data.RemoteSourceSynchronizer
@@ -29,7 +30,8 @@ class SyncClientSavedMovieRepository(
private val syncRepository: SyncRepository,
private val authTokenCache: TokenStorage,
private val json: Json,
private val pendingOperationSynchronizer: PendingOperationSynchronizer
private val pendingOperationSynchronizer: PendingOperationSynchronizer,
private val dispatcherProvider: DispatcherProvider
) : SavedMovieRepository {
override suspend fun save(details: VideoDetails) {
@@ -1,5 +1,6 @@
package ru.shadowsparky.vbox.shared.data.sync
import app.cash.sqldelight.async.coroutines.awaitAsList
import kotlinx.coroutines.withContext
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonNull
@@ -28,7 +29,7 @@ class SqlPendingOperationRepository(
}
override suspend fun query(type: AggregateType): List<OperationInfo> = withContext(dispatcherProvider.io) {
val records = getQueries().getOperationsByAggregate(type.name).executeAsList()
val records = getQueries().getOperationsByAggregate(type.name).awaitAsList()
records.map { record ->
OperationInfo(
id = record.id,
@@ -1,5 +1,6 @@
package ru.shadowsparky.vbox.shared.data.tag
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
import app.cash.sqldelight.coroutines.asFlow
import app.cash.sqldelight.coroutines.mapToList
import kotlinx.coroutines.flow.Flow
@@ -71,7 +72,7 @@ class SqlMovieTagRepository(
}
private suspend fun queryId(tag: String): Long? = withContext(dispatcherProvider.io) {
getTagsQueries().find(tag).executeAsOneOrNull()?.id
getTagsQueries().find(tag).awaitAsOneOrNull()?.id
}
private suspend fun getQueries(): MovieTagQueries {
@@ -4,8 +4,11 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.emitAll
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn
import ru.shadowsparky.domain.DispatcherProvider
import ru.shadowsparky.http.domain.TokenStorage
import ru.shadowsparky.http.domain.hasAccount
import ru.shadowsparky.koin
suspend fun TokenStorage.use(
active: suspend () -> Unit,
@@ -30,7 +33,7 @@ fun <T> TokenStorage.queryFlow(
} else {
fallback
})
}
}.flowOn(koin.get<DispatcherProvider>().io)
}
suspend fun <T> TokenStorage.query(
@@ -0,0 +1,4 @@
config.resolve.fallback = {
...config.resolve.fallback,
"net": false
};
-1
View File
@@ -11,7 +11,6 @@ kotlin {
val commonMain by getting {
dependencies {
implementation(project(":libs:base"))
implementation(libs.ktor.client.cio)
implementation(libs.kotlinx.rpc.krpc.client)
// Server API
implementation(libs.kotlinx.rpc.krpc.server)