Use interactors for extension data calls

This commit is contained in:
Syer10
2022-07-01 13:25:52 -04:00
parent 0b21f3ec9b
commit e96555d78b
7 changed files with 135 additions and 45 deletions

View File

@@ -0,0 +1,26 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package ca.gosyer.jui.domain.extension.interactor
import ca.gosyer.jui.domain.extension.service.ExtensionRepository
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.singleOrNull
import me.tatarka.inject.annotations.Inject
import org.lighthousegames.logging.logging
class GetExtensionList @Inject constructor(private val extensionRepository: ExtensionRepository) {
suspend fun await() = asFlow()
.catch { log.warn(it) { "Failed to get extension list" } }
.singleOrNull()
fun asFlow() = extensionRepository.getExtensionList()
companion object {
private val log = logging()
}
}

View File

@@ -0,0 +1,28 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package ca.gosyer.jui.domain.extension.interactor
import ca.gosyer.jui.domain.extension.model.Extension
import ca.gosyer.jui.domain.extension.service.ExtensionRepository
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.singleOrNull
import me.tatarka.inject.annotations.Inject
import org.lighthousegames.logging.logging
class InstallExtension @Inject constructor(private val extensionRepository: ExtensionRepository) {
suspend fun await(extension: Extension) = asFlow(extension)
.catch { log.warn(it) { "Failed to install extension ${extension.apkName}" } }
.collect()
fun asFlow(extension: Extension) = extensionRepository.installExtension(extension)
companion object {
private val log = logging()
}
}

View File

@@ -0,0 +1,27 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package ca.gosyer.jui.domain.extension.interactor
import ca.gosyer.jui.domain.extension.model.Extension
import ca.gosyer.jui.domain.extension.service.ExtensionRepository
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.collect
import me.tatarka.inject.annotations.Inject
import org.lighthousegames.logging.logging
class UninstallExtension @Inject constructor(private val extensionRepository: ExtensionRepository) {
suspend fun await(extension: Extension) = asFlow(extension)
.catch { log.warn(it) { "Failed to uninstall extension ${extension.apkName}" } }
.collect()
fun asFlow(extension: Extension) = extensionRepository.uninstallExtension(extension)
companion object {
private val log = logging()
}
}

View File

@@ -0,0 +1,27 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package ca.gosyer.jui.domain.extension.interactor
import ca.gosyer.jui.domain.extension.model.Extension
import ca.gosyer.jui.domain.extension.service.ExtensionRepository
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.collect
import me.tatarka.inject.annotations.Inject
import org.lighthousegames.logging.logging
class UpdateExtension @Inject constructor(private val extensionRepository: ExtensionRepository) {
suspend fun await(extension: Extension) = asFlow(extension)
.catch { log.warn(it) { "Failed to update extension ${extension.apkName}" } }
.collect()
fun asFlow(extension: Extension) = extensionRepository.updateExtension(extension)
companion object {
private val log = logging()
}
}