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()