diff --git a/shared/ui/src/commonMain/kotlin/com/androidmakers/di/ViewModelModule.kt b/shared/ui/src/commonMain/kotlin/com/androidmakers/di/ViewModelModule.kt index a99f32b6..37109a52 100644 --- a/shared/ui/src/commonMain/kotlin/com/androidmakers/di/ViewModelModule.kt +++ b/shared/ui/src/commonMain/kotlin/com/androidmakers/di/ViewModelModule.kt @@ -14,7 +14,7 @@ val viewModelModule = module { factory { SpeakerListViewModel(get()) } factory { SponsorsViewModel(get()) } factory { VenueViewModel(get(), get(), get()) } - factory { (speakerId: String) -> SpeakerDetailsViewModel(speakerId, get()) } + factory { (speakerId: String) -> SpeakerDetailsViewModel(speakerId, get(), get()) } factory { AgendaLayoutViewModel(get()) } factory { AgendaPagerViewModel(get(), get(), get()) } factory { (sessionId: String) -> SessionDetailViewModel(sessionId, get(), get(), get(), get(), get(), get(), get()) } diff --git a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailViewModel.kt b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailViewModel.kt index e6b5b176..b8d60386 100644 --- a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailViewModel.kt +++ b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailViewModel.kt @@ -1,6 +1,8 @@ package com.androidmakers.ui.speakers import com.androidmakers.ui.model.Lce +import fr.androidmakers.domain.interactor.OpenLinkUseCase +import fr.androidmakers.domain.model.SocialsItem import fr.androidmakers.domain.model.Speaker import fr.androidmakers.domain.repo.SpeakersRepository import kotlinx.coroutines.flow.SharingStarted @@ -12,7 +14,8 @@ import moe.tlaster.precompose.viewmodel.viewModelScope class SpeakerDetailsViewModel( speakerId: String, - speakersRepository: SpeakersRepository + speakersRepository: SpeakersRepository, + private val openLinkUseCase: OpenLinkUseCase, ) : ViewModel() { val uiState: StateFlow> = speakersRepository @@ -31,6 +34,10 @@ class SpeakerDetailsViewModel( started = SharingStarted.WhileSubscribed(5000L), initialValue = Lce.Loading ) + + fun openSpeakerLink(socialsItem: SocialsItem) { + socialsItem.url?.let { openLinkUseCase(it) } + } } data class SpeakerDetailsUiState( diff --git a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt index 7d7f37fb..0d1f1436 100644 --- a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt +++ b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt @@ -30,6 +30,7 @@ import com.androidmakers.ui.common.SocialButtons import com.androidmakers.ui.model.Lce import com.seiko.imageloader.rememberImagePainter import dev.icerock.moko.resources.compose.stringResource +import fr.androidmakers.domain.model.SocialsItem import fr.paug.androidmakers.ui.MR @@ -49,6 +50,7 @@ fun SpeakerDetailsRoute( is Lce.Content -> { SpeakerDetailsScreen( uiState = state.content, + onSocialItemClick = { speakerDetailsViewModel.openSpeakerLink(it) }, onBackClick = onBackClick ) } @@ -59,6 +61,7 @@ fun SpeakerDetailsRoute( @Composable fun SpeakerDetailsScreen( uiState: SpeakerDetailsUiState, + onSocialItemClick: (SocialsItem) -> Unit, onBackClick: () -> Unit, ) { val speaker = uiState.speaker @@ -109,9 +112,7 @@ fun SpeakerDetailsScreen( SocialButtons( speaker = speaker, - onClickOnItem = { item -> - - } + onClickOnItem = onSocialItemClick ) } }