From 2570bc58b145239c60321cabaeeabb2e638d6831 Mon Sep 17 00:00:00 2001 From: rushiiMachine <33725716+rushiiMachine@users.noreply.github.com> Date: Sat, 22 Mar 2025 10:36:43 -0700 Subject: [PATCH] refactor: cleanup network services --- .../com/aliucord/manager/ManagerApplication.kt | 12 ++---------- .../domain/repository/GithubRepository.kt | 16 ---------------- .../network/{dto => models}/BuildInfo.kt | 2 +- .../network/{dto => models}/GithubRelease.kt | 2 +- .../manager/network/service/MavenService.kt | 17 ----------------- .../AliucordGithubService.kt | 5 ++--- .../services/AliucordMavenService.kt} | 14 +++++++------- .../{service => services}/GithubService.kt | 13 ++----------- .../{service => services}/HttpService.kt | 2 +- .../steps/download/DownloadAliuhookStep.kt | 6 +++--- .../patcher/steps/prepare/FetchInfoStep.kt | 4 ++-- .../manager/ui/screens/home/HomeModel.kt | 10 +++++----- .../ui/screens/settings/SettingsScreen.kt | 2 +- .../ui/widgets/updater/UpdaterViewModel.kt | 4 ++-- 14 files changed, 29 insertions(+), 80 deletions(-) delete mode 100644 app/src/main/kotlin/com/aliucord/manager/domain/repository/GithubRepository.kt rename app/src/main/kotlin/com/aliucord/manager/network/{dto => models}/BuildInfo.kt (91%) rename app/src/main/kotlin/com/aliucord/manager/network/{dto => models}/GithubRelease.kt (91%) delete mode 100644 app/src/main/kotlin/com/aliucord/manager/network/service/MavenService.kt rename app/src/main/kotlin/com/aliucord/manager/network/{service => services}/AliucordGithubService.kt (83%) rename app/src/main/kotlin/com/aliucord/manager/{domain/repository/AliucordMavenRepository.kt => network/services/AliucordMavenService.kt} (68%) rename app/src/main/kotlin/com/aliucord/manager/network/{service => services}/GithubService.kt (53%) rename app/src/main/kotlin/com/aliucord/manager/network/{service => services}/HttpService.kt (97%) diff --git a/app/src/main/kotlin/com/aliucord/manager/ManagerApplication.kt b/app/src/main/kotlin/com/aliucord/manager/ManagerApplication.kt index d32a7c5..1dceb2b 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ManagerApplication.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ManagerApplication.kt @@ -2,13 +2,11 @@ package com.aliucord.manager import android.app.Application import com.aliucord.manager.di.* -import com.aliucord.manager.domain.repository.AliucordMavenRepository -import com.aliucord.manager.domain.repository.GithubRepository import com.aliucord.manager.installers.pm.PMInstaller import com.aliucord.manager.manager.* import com.aliucord.manager.manager.download.AndroidDownloadManager import com.aliucord.manager.manager.download.KtorDownloadManager -import com.aliucord.manager.network.service.* +import com.aliucord.manager.network.services.* import com.aliucord.manager.ui.screens.about.AboutModel import com.aliucord.manager.ui.screens.home.HomeModel import com.aliucord.manager.ui.screens.patching.PatchingScreenModel @@ -42,14 +40,8 @@ class ManagerApplication : Application() { modules(module { singleOf(::HttpService) singleOf(::GithubService) - singleOf(::MavenService) singleOf(::AliucordGithubService) - }) - - // Repositories - modules(module { - singleOf(::GithubRepository) - singleOf(::AliucordMavenRepository) + singleOf(::AliucordMavenService) }) // UI Models diff --git a/app/src/main/kotlin/com/aliucord/manager/domain/repository/GithubRepository.kt b/app/src/main/kotlin/com/aliucord/manager/domain/repository/GithubRepository.kt deleted file mode 100644 index a196cbf..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/domain/repository/GithubRepository.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.aliucord.manager.domain.repository - -import com.aliucord.manager.network.dto.GithubUser -import com.aliucord.manager.network.service.AliucordGithubService -import com.aliucord.manager.network.utils.transform - -class GithubRepository( - private val service: AliucordGithubService, -) { - suspend fun getContributors() = service.getContributors() - .transform { it.sortedByDescending(GithubUser::contributions) } - - suspend fun getDataJson() = service.getDataJson() - - suspend fun getManagerReleases() = service.getManagerReleases() -} diff --git a/app/src/main/kotlin/com/aliucord/manager/network/dto/BuildInfo.kt b/app/src/main/kotlin/com/aliucord/manager/network/models/BuildInfo.kt similarity index 91% rename from app/src/main/kotlin/com/aliucord/manager/network/dto/BuildInfo.kt rename to app/src/main/kotlin/com/aliucord/manager/network/models/BuildInfo.kt index 8ec79ef..7ed9a92 100644 --- a/app/src/main/kotlin/com/aliucord/manager/network/dto/BuildInfo.kt +++ b/app/src/main/kotlin/com/aliucord/manager/network/models/BuildInfo.kt @@ -3,7 +3,7 @@ * Licensed under the Open Software License version 3.0 */ -package com.aliucord.manager.network.dto +package com.aliucord.manager.network.models import com.aliucord.manager.network.utils.SemVer import kotlinx.serialization.SerialName diff --git a/app/src/main/kotlin/com/aliucord/manager/network/dto/GithubRelease.kt b/app/src/main/kotlin/com/aliucord/manager/network/models/GithubRelease.kt similarity index 91% rename from app/src/main/kotlin/com/aliucord/manager/network/dto/GithubRelease.kt rename to app/src/main/kotlin/com/aliucord/manager/network/models/GithubRelease.kt index 731c5f4..b36baad 100644 --- a/app/src/main/kotlin/com/aliucord/manager/network/dto/GithubRelease.kt +++ b/app/src/main/kotlin/com/aliucord/manager/network/models/GithubRelease.kt @@ -1,4 +1,4 @@ -package com.aliucord.manager.network.dto +package com.aliucord.manager.network.models import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/kotlin/com/aliucord/manager/network/service/MavenService.kt b/app/src/main/kotlin/com/aliucord/manager/network/service/MavenService.kt deleted file mode 100644 index 3df944b..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/network/service/MavenService.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.aliucord.manager.network.service - -import com.aliucord.manager.network.utils.ApiResponse -import io.ktor.client.request.url -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext - -class MavenService( - private val http: HttpService, -) { - suspend fun getArtifactMetadata(baseUrl: String, artifactCoords: String): ApiResponse = withContext(Dispatchers.IO) { - http.request { - val coords = artifactCoords.replace("[:.]".toRegex(), "/") - url("$baseUrl/${coords}/maven-metadata.xml") - } - } -} diff --git a/app/src/main/kotlin/com/aliucord/manager/network/service/AliucordGithubService.kt b/app/src/main/kotlin/com/aliucord/manager/network/services/AliucordGithubService.kt similarity index 83% rename from app/src/main/kotlin/com/aliucord/manager/network/service/AliucordGithubService.kt rename to app/src/main/kotlin/com/aliucord/manager/network/services/AliucordGithubService.kt index a5f3450..84ee4b6 100644 --- a/app/src/main/kotlin/com/aliucord/manager/network/service/AliucordGithubService.kt +++ b/app/src/main/kotlin/com/aliucord/manager/network/services/AliucordGithubService.kt @@ -1,6 +1,6 @@ -package com.aliucord.manager.network.service +package com.aliucord.manager.network.services -import com.aliucord.manager.network.dto.BuildInfo +import com.aliucord.manager.network.models.BuildInfo import com.aliucord.manager.network.utils.ApiResponse import io.ktor.client.request.url import kotlinx.coroutines.Dispatchers @@ -19,7 +19,6 @@ class AliucordGithubService( } suspend fun getManagerReleases() = github.getReleases(ORG, MANAGER_REPO) - suspend fun getContributors() = github.getContributors(ORG, MAIN_REPO) companion object { const val ORG = "Aliucord" diff --git a/app/src/main/kotlin/com/aliucord/manager/domain/repository/AliucordMavenRepository.kt b/app/src/main/kotlin/com/aliucord/manager/network/services/AliucordMavenService.kt similarity index 68% rename from app/src/main/kotlin/com/aliucord/manager/domain/repository/AliucordMavenRepository.kt rename to app/src/main/kotlin/com/aliucord/manager/network/services/AliucordMavenService.kt index ac144f4..aed0482 100644 --- a/app/src/main/kotlin/com/aliucord/manager/domain/repository/AliucordMavenRepository.kt +++ b/app/src/main/kotlin/com/aliucord/manager/network/services/AliucordMavenService.kt @@ -1,14 +1,14 @@ -package com.aliucord.manager.domain.repository +package com.aliucord.manager.network.services -import com.aliucord.manager.network.service.MavenService import com.aliucord.manager.network.utils.* +import io.ktor.client.request.url import io.ktor.http.HttpStatusCode -class AliucordMavenRepository( - private val maven: MavenService, -) { +class AliucordMavenService(private val http: HttpService) { suspend fun getAliuhookVersion(): ApiResponse { - return maven.getArtifactMetadata(BASE_URL, ALIUHOOK).transform { + val metadataResponse = http.request { url(ALIUHOOK_METADATA_URL) } + + return metadataResponse.transform { val versionString = "(.+?)".toRegex() .find(it) ?.groupValues?.get(1) @@ -21,7 +21,7 @@ class AliucordMavenRepository( companion object { private const val BASE_URL = "https://maven.aliucord.com/snapshots" - private const val ALIUHOOK = "com.aliucord:Aliuhook" + private const val ALIUHOOK_METADATA_URL = "$BASE_URL/com/aliucord/Aliuhook/maven-metadata.xml" fun getAliuhookUrl(version: String): String = "$BASE_URL/com/aliucord/Aliuhook/$version/Aliuhook-$version.aar" diff --git a/app/src/main/kotlin/com/aliucord/manager/network/service/GithubService.kt b/app/src/main/kotlin/com/aliucord/manager/network/services/GithubService.kt similarity index 53% rename from app/src/main/kotlin/com/aliucord/manager/network/service/GithubService.kt rename to app/src/main/kotlin/com/aliucord/manager/network/services/GithubService.kt index fe420f0..9ca6141 100644 --- a/app/src/main/kotlin/com/aliucord/manager/network/service/GithubService.kt +++ b/app/src/main/kotlin/com/aliucord/manager/network/services/GithubService.kt @@ -1,7 +1,6 @@ -package com.aliucord.manager.network.service +package com.aliucord.manager.network.services -import com.aliucord.manager.network.dto.GithubRelease -import com.aliucord.manager.network.dto.GithubUser +import com.aliucord.manager.network.models.GithubRelease import com.aliucord.manager.network.utils.ApiResponse import io.ktor.client.request.url import kotlinx.coroutines.Dispatchers @@ -10,14 +9,6 @@ import kotlinx.coroutines.withContext class GithubService( private val http: HttpService, ) { - suspend fun getContributors(owner: String, repo: String): ApiResponse> { - return withContext(Dispatchers.IO) { - http.request { - url("https://api.github.com/repos/$owner/$repo/contributors") - } - } - } - suspend fun getReleases(owner: String, repo: String): ApiResponse> { return withContext(Dispatchers.IO) { http.request { diff --git a/app/src/main/kotlin/com/aliucord/manager/network/service/HttpService.kt b/app/src/main/kotlin/com/aliucord/manager/network/services/HttpService.kt similarity index 97% rename from app/src/main/kotlin/com/aliucord/manager/network/service/HttpService.kt rename to app/src/main/kotlin/com/aliucord/manager/network/services/HttpService.kt index 312a4a2..926afa5 100644 --- a/app/src/main/kotlin/com/aliucord/manager/network/service/HttpService.kt +++ b/app/src/main/kotlin/com/aliucord/manager/network/services/HttpService.kt @@ -1,4 +1,4 @@ -package com.aliucord.manager.network.service +package com.aliucord.manager.network.services import android.util.Log import com.aliucord.manager.BuildConfig diff --git a/app/src/main/kotlin/com/aliucord/manager/patcher/steps/download/DownloadAliuhookStep.kt b/app/src/main/kotlin/com/aliucord/manager/patcher/steps/download/DownloadAliuhookStep.kt index 2086c4c..142e496 100644 --- a/app/src/main/kotlin/com/aliucord/manager/patcher/steps/download/DownloadAliuhookStep.kt +++ b/app/src/main/kotlin/com/aliucord/manager/patcher/steps/download/DownloadAliuhookStep.kt @@ -2,8 +2,8 @@ package com.aliucord.manager.patcher.steps.download import androidx.compose.runtime.Stable import com.aliucord.manager.R -import com.aliucord.manager.domain.repository.AliucordMavenRepository import com.aliucord.manager.manager.PathManager +import com.aliucord.manager.network.services.AliucordMavenService import com.aliucord.manager.network.utils.SemVer import com.aliucord.manager.network.utils.getOrThrow import com.aliucord.manager.patcher.StepRunner @@ -21,7 +21,7 @@ import org.koin.core.component.inject @Stable class DownloadAliuhookStep : DownloadStep(), IDexProvider, KoinComponent { private val paths: PathManager by inject() - private val maven: AliucordMavenRepository by inject() + private val maven: AliucordMavenService by inject() /** * This is populated right before the download starts (ref: [execute]) @@ -30,7 +30,7 @@ class DownloadAliuhookStep : DownloadStep(), IDexProvider, KoinComponent { private set override val localizedName = R.string.patch_step_dl_aliuhook - override val targetUrl get() = AliucordMavenRepository.getAliuhookUrl(targetVersion.toString()) + override val targetUrl get() = AliucordMavenService.getAliuhookUrl(targetVersion.toString()) override val targetFile get() = paths.cachedAliuhookAAR(targetVersion) override suspend fun execute(container: StepRunner) { diff --git a/app/src/main/kotlin/com/aliucord/manager/patcher/steps/prepare/FetchInfoStep.kt b/app/src/main/kotlin/com/aliucord/manager/patcher/steps/prepare/FetchInfoStep.kt index cf7c8fd..886461e 100644 --- a/app/src/main/kotlin/com/aliucord/manager/patcher/steps/prepare/FetchInfoStep.kt +++ b/app/src/main/kotlin/com/aliucord/manager/patcher/steps/prepare/FetchInfoStep.kt @@ -2,8 +2,8 @@ package com.aliucord.manager.patcher.steps.prepare import androidx.compose.runtime.Stable import com.aliucord.manager.R -import com.aliucord.manager.network.dto.BuildInfo -import com.aliucord.manager.network.service.AliucordGithubService +import com.aliucord.manager.network.models.BuildInfo +import com.aliucord.manager.network.services.AliucordGithubService import com.aliucord.manager.network.utils.getOrThrow import com.aliucord.manager.patcher.StepRunner import com.aliucord.manager.patcher.steps.StepGroup diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeModel.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeModel.kt index 021b053..6e0a6e5 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeModel.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeModel.kt @@ -16,9 +16,9 @@ import cafe.adriel.voyager.core.model.screenModelScope import cafe.adriel.voyager.navigator.Navigator import com.aliucord.manager.BuildConfig import com.aliucord.manager.R -import com.aliucord.manager.domain.repository.AliucordMavenRepository -import com.aliucord.manager.domain.repository.GithubRepository -import com.aliucord.manager.network.dto.BuildInfo +import com.aliucord.manager.network.models.BuildInfo +import com.aliucord.manager.network.services.AliucordGithubService +import com.aliucord.manager.network.services.AliucordMavenService import com.aliucord.manager.network.utils.SemVer import com.aliucord.manager.network.utils.fold import com.aliucord.manager.patcher.InstallMetadata @@ -36,8 +36,8 @@ import kotlinx.serialization.json.decodeFromStream class HomeModel( private val application: Application, - private val github: GithubRepository, - private val maven: AliucordMavenRepository, + private val github: AliucordGithubService, + private val maven: AliucordMavenService, private val json: Json, ) : ScreenModel { var supportedVersion by mutableStateOf(DiscordVersion.None) diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt index f37c052..fbc5f89 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt @@ -20,7 +20,7 @@ import androidx.compose.ui.unit.dp import cafe.adriel.voyager.core.screen.Screen import cafe.adriel.voyager.koin.getScreenModel import com.aliucord.manager.R -import com.aliucord.manager.network.service.AliucordGithubService +import com.aliucord.manager.network.services.AliucordGithubService import com.aliucord.manager.ui.components.BackButton import com.aliucord.manager.ui.components.MainActionButton import com.aliucord.manager.ui.components.settings.* diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/widgets/updater/UpdaterViewModel.kt b/app/src/main/kotlin/com/aliucord/manager/ui/widgets/updater/UpdaterViewModel.kt index fd379c6..7cca976 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/widgets/updater/UpdaterViewModel.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/widgets/updater/UpdaterViewModel.kt @@ -5,17 +5,17 @@ import androidx.compose.runtime.* import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.aliucord.manager.BuildConfig -import com.aliucord.manager.domain.repository.GithubRepository import com.aliucord.manager.manager.InstallerManager import com.aliucord.manager.manager.InstallerSetting import com.aliucord.manager.manager.download.KtorDownloadManager +import com.aliucord.manager.network.services.AliucordGithubService import com.aliucord.manager.network.utils.SemVer import com.aliucord.manager.network.utils.getOrNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch class UpdaterViewModel( - private val github: GithubRepository, + private val github: AliucordGithubService, private val downloader: KtorDownloadManager, private val installers: InstallerManager, private val application: Application,