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