From 222ca99eb6d1afacaf88272af60ea1fe6c2a1ace Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Braun?= Date: Wed, 9 Apr 2025 23:10:40 +0200 Subject: [PATCH] Add GitHub link to About page --- .../kotlin/fr/androidmakers/di/DomainModule.kt | 2 ++ .../domain/interactor/OpenGithubRepoUseCase.kt | 11 +++++++++++ .../kotlin/fr/androidmakers/domain/utils/Constants.kt | 1 + .../commonMain/composeResources/values-fr/strings.xml | 1 + .../commonMain/composeResources/values/strings.xml | 1 + .../kotlin/com/androidmakers/ui/about/AboutScreen.kt | 11 +++++++++-- .../com/androidmakers/ui/about/AboutViewModel.kt | 4 +++- 7 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/interactor/OpenGithubRepoUseCase.kt diff --git a/shared/di/src/commonMain/kotlin/fr/androidmakers/di/DomainModule.kt b/shared/di/src/commonMain/kotlin/fr/androidmakers/di/DomainModule.kt index eb4d59b7..57c61079 100644 --- a/shared/di/src/commonMain/kotlin/fr/androidmakers/di/DomainModule.kt +++ b/shared/di/src/commonMain/kotlin/fr/androidmakers/di/DomainModule.kt @@ -10,6 +10,7 @@ import fr.androidmakers.domain.interactor.MergeBookmarksUseCase import fr.androidmakers.domain.interactor.OpenBlueskyAccountUseCase import fr.androidmakers.domain.interactor.OpenCocUseCase import fr.androidmakers.domain.interactor.OpenFaqUseCase +import fr.androidmakers.domain.interactor.OpenGithubRepoUseCase import fr.androidmakers.domain.interactor.OpenPartnerLinkUseCase import fr.androidmakers.domain.interactor.OpenXAccountUseCase import fr.androidmakers.domain.interactor.OpenXHashtagUseCase @@ -32,6 +33,7 @@ val domainModule = module { factoryOf(::OpenXHashtagUseCase) factoryOf(::OpenBlueskyAccountUseCase) factoryOf(::OpenXAccountUseCase) + factoryOf(::OpenGithubRepoUseCase) factoryOf(::SetSessionBookmarkUseCase) factoryOf(::GetPartnersUseCase) factoryOf(::GetFavoriteSessionsUseCase) diff --git a/shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/interactor/OpenGithubRepoUseCase.kt b/shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/interactor/OpenGithubRepoUseCase.kt new file mode 100644 index 00000000..b0197dcd --- /dev/null +++ b/shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/interactor/OpenGithubRepoUseCase.kt @@ -0,0 +1,11 @@ + +package fr.androidmakers.domain.interactor + +import fr.androidmakers.domain.utils.Constants +import fr.androidmakers.domain.utils.UrlOpener + +class OpenGithubRepoUseCase() { + operator fun invoke(urlOpener: UrlOpener) { + urlOpener.openUrl(Constants.Urls.githubRepo) + } +} diff --git a/shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/utils/Constants.kt b/shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/utils/Constants.kt index 2b3a136b..0ca32fe1 100644 --- a/shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/utils/Constants.kt +++ b/shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/utils/Constants.kt @@ -10,5 +10,6 @@ object Constants { const val xHashtagApp = "twitter://search?query=AMxDC25" const val xAccountWeb = "https://x.com/AndroidMakersFR" const val xAccountApp = "twitter://user?screen_name=AndroidMakersFR" + const val githubRepo = "https://github.com/paug/AndroidMakersApp" } } diff --git a/shared/ui/src/commonMain/composeResources/values-fr/strings.xml b/shared/ui/src/commonMain/composeResources/values-fr/strings.xml index 4c80c2dc..f922b876 100644 --- a/shared/ui/src/commonMain/composeResources/values-fr/strings.xml +++ b/shared/ui/src/commonMain/composeResources/values-fr/strings.xml @@ -35,6 +35,7 @@ FAQ Code de conduite + Dépôt GitHub Social Débutant diff --git a/shared/ui/src/commonMain/composeResources/values/strings.xml b/shared/ui/src/commonMain/composeResources/values/strings.xml index 6f69091b..433bde5c 100644 --- a/shared/ui/src/commonMain/composeResources/values/strings.xml +++ b/shared/ui/src/commonMain/composeResources/values/strings.xml @@ -37,6 +37,7 @@ FAQ Code of conduct + GitHub repository Social Beginner diff --git a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutScreen.kt b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutScreen.kt index dc380c0b..17311eeb 100644 --- a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutScreen.kt +++ b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutScreen.kt @@ -33,6 +33,7 @@ import fr.paug.androidmakers.ui.Res import fr.paug.androidmakers.ui.about_android_makers import fr.paug.androidmakers.ui.code_of_conduct import fr.paug.androidmakers.ui.faq +import fr.paug.androidmakers.ui.github_repo import fr.paug.androidmakers.ui.ic_network_bluesky import fr.paug.androidmakers.ui.ic_network_x import fr.paug.androidmakers.ui.ic_network_youtube @@ -60,7 +61,8 @@ fun AboutScreen( IntroCard( onFaqClick = { viewModel.openFaq(urlOpener) }, - onCocClick = { viewModel.openCoc(urlOpener) } + onCocClick = { viewModel.openCoc(urlOpener) }, + onGithubRepoClick = { viewModel.openGithubRepo(urlOpener) } ) SocialCard( @@ -85,7 +87,8 @@ fun AboutScreen( @Composable private fun IntroCard( onFaqClick: () -> Unit, - onCocClick: () -> Unit + onCocClick: () -> Unit, + onGithubRepoClick: () -> Unit ) { Column(Modifier.padding(vertical = 8.dp)) { Image( @@ -112,6 +115,10 @@ private fun IntroCard( text = stringResource(Res.string.code_of_conduct), onClick = onCocClick ) + ClickableText( + text = stringResource(Res.string.github_repo), + onClick = onGithubRepoClick + ) } } } diff --git a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutViewModel.kt b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutViewModel.kt index 8b06aed2..6cdcd91a 100644 --- a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutViewModel.kt +++ b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.ViewModel import fr.androidmakers.domain.interactor.OpenBlueskyAccountUseCase import fr.androidmakers.domain.interactor.OpenCocUseCase import fr.androidmakers.domain.interactor.OpenFaqUseCase +import fr.androidmakers.domain.interactor.OpenGithubRepoUseCase import fr.androidmakers.domain.interactor.OpenXAccountUseCase import fr.androidmakers.domain.interactor.OpenXHashtagUseCase import fr.androidmakers.domain.interactor.OpenYoutubeUseCase @@ -14,5 +15,6 @@ class AboutViewModel( val openBlueSkyAccount: OpenBlueskyAccountUseCase, val openYoutube: OpenYoutubeUseCase, val openCoc: OpenCocUseCase, - val openFaq: OpenFaqUseCase + val openFaq: OpenFaqUseCase, + val openGithubRepo: OpenGithubRepoUseCase ): ViewModel()