From c2c4895a29bf7a375a14b36a8be99f736d212702 Mon Sep 17 00:00:00 2001 From: Ax333l Date: Sat, 7 Oct 2023 17:07:19 +0200 Subject: [PATCH] feat: use revanced api for changelogs --- .../revanced/manager/di/RepositoryModule.kt | 1 - .../app/revanced/manager/di/ServiceModule.kt | 12 +-------- .../domain/repository/GithubRepository.kt | 8 ------ .../manager/network/dto/ReVancedRelease.kt | 3 ++- .../manager/network/service/GithubService.kt | 15 ----------- .../settings/update/ManagerUpdateChangelog.kt | 15 ----------- .../ManagerUpdateChangelogViewModel.kt | 27 ++++++++----------- 7 files changed, 14 insertions(+), 67 deletions(-) delete mode 100644 app/src/main/java/app/revanced/manager/domain/repository/GithubRepository.kt delete mode 100644 app/src/main/java/app/revanced/manager/network/service/GithubService.kt diff --git a/app/src/main/java/app/revanced/manager/di/RepositoryModule.kt b/app/src/main/java/app/revanced/manager/di/RepositoryModule.kt index 5b426cbc..a5420a5c 100644 --- a/app/src/main/java/app/revanced/manager/di/RepositoryModule.kt +++ b/app/src/main/java/app/revanced/manager/di/RepositoryModule.kt @@ -11,7 +11,6 @@ import org.koin.dsl.module val repositoryModule = module { singleOf(::ReVancedAPI) - singleOf(::GithubRepository) singleOf(::Filesystem) { createdAtStart() } diff --git a/app/src/main/java/app/revanced/manager/di/ServiceModule.kt b/app/src/main/java/app/revanced/manager/di/ServiceModule.kt index 78b99c27..c30a711f 100644 --- a/app/src/main/java/app/revanced/manager/di/ServiceModule.kt +++ b/app/src/main/java/app/revanced/manager/di/ServiceModule.kt @@ -1,21 +1,11 @@ package app.revanced.manager.di -import app.revanced.manager.network.service.GithubService import app.revanced.manager.network.service.HttpService import app.revanced.manager.network.service.ReVancedService import org.koin.core.module.dsl.singleOf import org.koin.dsl.module val serviceModule = module { - fun provideReVancedService( - client: HttpService, - ): ReVancedService { - return ReVancedService( - client = client, - ) - } - - single { provideReVancedService(get()) } + singleOf(::ReVancedService) singleOf(::HttpService) - singleOf(::GithubService) } \ No newline at end of file diff --git a/app/src/main/java/app/revanced/manager/domain/repository/GithubRepository.kt b/app/src/main/java/app/revanced/manager/domain/repository/GithubRepository.kt deleted file mode 100644 index 79587dfc..00000000 --- a/app/src/main/java/app/revanced/manager/domain/repository/GithubRepository.kt +++ /dev/null @@ -1,8 +0,0 @@ -package app.revanced.manager.domain.repository - -import app.revanced.manager.network.service.GithubService - -// TODO: delete this when the revanced api adds download count. -class GithubRepository(private val service: GithubService) { - suspend fun getChangelog(repo: String) = service.getChangelog(repo) -} \ No newline at end of file diff --git a/app/src/main/java/app/revanced/manager/network/dto/ReVancedRelease.kt b/app/src/main/java/app/revanced/manager/network/dto/ReVancedRelease.kt index d97b335c..416e0629 100644 --- a/app/src/main/java/app/revanced/manager/network/dto/ReVancedRelease.kt +++ b/app/src/main/java/app/revanced/manager/network/dto/ReVancedRelease.kt @@ -21,7 +21,8 @@ data class ReVancedReleaseMeta( val draft: Boolean, val prerelease: Boolean, @SerialName("created_at") val createdAt: String, - @SerialName("published_at") val publishedAt: String + @SerialName("published_at") val publishedAt: String, + val body: String, ) @Serializable diff --git a/app/src/main/java/app/revanced/manager/network/service/GithubService.kt b/app/src/main/java/app/revanced/manager/network/service/GithubService.kt deleted file mode 100644 index 2c293848..00000000 --- a/app/src/main/java/app/revanced/manager/network/service/GithubService.kt +++ /dev/null @@ -1,15 +0,0 @@ -package app.revanced.manager.network.service - -import app.revanced.manager.network.dto.GithubChangelog -import app.revanced.manager.network.utils.APIResponse -import io.ktor.client.request.url -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext - -class GithubService(private val client: HttpService) { - suspend fun getChangelog(repo: String): APIResponse = withContext(Dispatchers.IO) { - client.request { - url("https://api.github.com/repos/revanced/$repo/releases/latest") - } - } -} \ No newline at end of file diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/update/ManagerUpdateChangelog.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/update/ManagerUpdateChangelog.kt index a1b1f862..5ba085e6 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/update/ManagerUpdateChangelog.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/update/ManagerUpdateChangelog.kt @@ -91,21 +91,6 @@ fun ManagerUpdateChangelog( color = MaterialTheme.colorScheme.outline, ) } - Row( - horizontalArrangement = Arrangement.spacedBy(6.dp), - verticalAlignment = Alignment.CenterVertically - ) { - Icon( - imageVector = Icons.Outlined.FileDownload, - contentDescription = null, - modifier = Modifier.size(16.dp) - ) - Text( - vm.formattedDownloadCount, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.outline, - ) - } } Markdown( vm.changelogHtml, diff --git a/app/src/main/java/app/revanced/manager/ui/viewmodel/ManagerUpdateChangelogViewModel.kt b/app/src/main/java/app/revanced/manager/ui/viewmodel/ManagerUpdateChangelogViewModel.kt index e4d77400..02d187ea 100644 --- a/app/src/main/java/app/revanced/manager/ui/viewmodel/ManagerUpdateChangelogViewModel.kt +++ b/app/src/main/java/app/revanced/manager/ui/viewmodel/ManagerUpdateChangelogViewModel.kt @@ -8,8 +8,7 @@ import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import app.revanced.manager.R -import app.revanced.manager.domain.repository.GithubRepository -import app.revanced.manager.network.dto.GithubChangelog +import app.revanced.manager.network.api.ReVancedAPI import app.revanced.manager.network.utils.getOrThrow import app.revanced.manager.util.uiSafe import kotlinx.coroutines.launch @@ -18,30 +17,19 @@ import org.intellij.markdown.html.HtmlGenerator import org.intellij.markdown.parser.MarkdownParser class ManagerUpdateChangelogViewModel( - private val githubRepository: GithubRepository, + private val api: ReVancedAPI, private val app: Application, ) : ViewModel() { private val markdownFlavour = GFMFlavourDescriptor() private val markdownParser = MarkdownParser(flavour = markdownFlavour) var changelog by mutableStateOf( - GithubChangelog( + Changelog( "...", app.getString(R.string.changelog_loading), - emptyList() ) ) private set - val formattedDownloadCount by derivedStateOf { - val downloadCount = changelog.assets.firstOrNull()?.downloadCount?.toDouble() ?: 0.0 - if (downloadCount > 1000) { - val roundedValue = - (downloadCount / 100).toInt() / 10.0 // Divide by 100 and round to one decimal place - "${roundedValue}k" - } else { - downloadCount.toString() - } - } val changelogHtml by derivedStateOf { val markdown = changelog.body val parsedTree = markdownParser.buildMarkdownTreeFromString(markdown) @@ -51,8 +39,15 @@ class ManagerUpdateChangelogViewModel( init { viewModelScope.launch { uiSafe(app, R.string.changelog_download_fail, "Failed to download changelog") { - changelog = githubRepository.getChangelog("revanced-manager").getOrThrow() + changelog = api.getRelease("revanced-manager").getOrThrow().let { + Changelog(it.metadata.tag, it.metadata.body) + } } } } + + data class Changelog( + val version: String, + val body: String, + ) }