diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt index 2915c107c..87439d7dd 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt @@ -7,6 +7,7 @@ import com.kusitms.connectdog.core.data.api.model.Response import com.kusitms.connectdog.core.data.api.model.ReviewResponseItem import com.kusitms.connectdog.core.data.api.model.SocialLoginBody import com.kusitms.connectdog.core.data.api.model.VolunteerResponse +import com.kusitms.connectdog.core.data.api.model.intermediator.IntermediatorInfoResponseItem import com.kusitms.connectdog.core.data.api.model.volunteer.AnnouncementHomeResponseItem import com.kusitms.connectdog.core.data.api.model.volunteer.AnnouncementSearchResponseItem import com.kusitms.connectdog.core.data.api.model.volunteer.ApplicationCompletedResponseItem @@ -14,6 +15,7 @@ import com.kusitms.connectdog.core.data.api.model.volunteer.ApplicationInProgres import com.kusitms.connectdog.core.data.api.model.volunteer.ApplicationWaitingResponseItem import com.kusitms.connectdog.core.data.api.model.volunteer.BadgeResponse import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem +import com.kusitms.connectdog.core.data.api.model.volunteer.NoticeDetailResponseItem import com.kusitms.connectdog.core.data.api.model.volunteer.UserInfoResponse import retrofit2.http.Body import retrofit2.http.DELETE @@ -111,4 +113,25 @@ internal interface ApiService { @GET("/volunteers/my/bookmarks") suspend fun getBookmarkData(): List + + /** + * 이동봉사자 > 공고 상세조회 + */ + @GET("/volunteers/posts/{postId}") + suspend fun getNoticeDetail( + @Path("postId") postId: Long + ): NoticeDetailResponseItem + + /** + * 이동봉사자 > 공고 상세조회 > 중개자 프로필 조회 + */ + @GET("/volunteers/intermediaries/{intermediaryId}") + suspend fun getIntermediatorInfo( + @Path("intermediaryId") intermediaryId: Long + ): IntermediatorInfoResponseItem + + @GET("/volunteers/intermediaries/{intermediaryId}/posts") + suspend fun getIntermediatorReview( + @Path("intermediaryId") intermediaryId: Long + ): List } diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/intermediator/IntermediatorInfoResponseItem.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/intermediator/IntermediatorInfoResponseItem.kt new file mode 100644 index 000000000..3fa65241d --- /dev/null +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/intermediator/IntermediatorInfoResponseItem.kt @@ -0,0 +1,13 @@ +package com.kusitms.connectdog.core.data.api.model.intermediator + +data class IntermediatorInfoResponseItem( + val completedPostCount: Long, + val contact: String, + val dogStatusCount: Long, + val guide: String, + val intro: String, + val name: String, + val profileImage: String, + val reviewCount: Long, + val url: String +) diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/volunteer/NoticeDetailResponseItem.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/volunteer/NoticeDetailResponseItem.kt new file mode 100644 index 000000000..8288f6ab0 --- /dev/null +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/volunteer/NoticeDetailResponseItem.kt @@ -0,0 +1,24 @@ +package com.kusitms.connectdog.core.data.api.model.volunteer + +data class NoticeDetailResponseItem( + val arrivalLoc: String, + val content: String, + val departureLoc: String, + val dogGender: String, + val dogName: String, + val dogSize: String, + val dogWeight: Double, + val endDate: String, + val images: List, + val intermediaryId: Int, + val intermediaryName: String, + val intermediaryProfileImage: String, + val isBookmark: Boolean, + val isKennel: Boolean, + val mainImage: String, + val pickUpTime: String, + val postId: Int, + val postStatus: String, + val specifics: String?, + val startDate: String +) diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/di/VolunteerDataModule.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/di/VolunteerDataModule.kt index 12eff64ed..e05231201 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/di/VolunteerDataModule.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/di/VolunteerDataModule.kt @@ -1,6 +1,8 @@ package com.kusitms.connectdog.core.data.di import com.kusitms.connectdog.core.data.api.ApiService +import com.kusitms.connectdog.core.data.repository.DetailRepository +import com.kusitms.connectdog.core.data.repository.DetailRepositoryImpl import com.kusitms.connectdog.core.data.repository.HomeRepository import com.kusitms.connectdog.core.data.repository.HomeRepositoryImpl import com.kusitms.connectdog.core.data.repository.LoginRepository @@ -42,4 +44,10 @@ internal class VolunteerDataModule { fun provideMyPageRepository(apiService: ApiService): MyPageRepository { return MyPageRepositoryImpl(apiService) } + + @Provides + @Singleton + fun provideNoticeRepository(apiService: ApiService): DetailRepository { + return DetailRepositoryImpl(apiService) + } } diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/mapper/volunteer/AnnouncementMapper.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/mapper/volunteer/AnnouncementMapper.kt index 93aeb5f77..c57f07230 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/mapper/volunteer/AnnouncementMapper.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/mapper/volunteer/AnnouncementMapper.kt @@ -11,7 +11,8 @@ internal fun AnnouncementHomeResponseItem.toData(): Announcement { location = "${this.departureLoc} → ${this.arrivalLoc}", date = dateRangeFormat(startDate, endDate), organization = this.intermediaryName, - hasKennel = this.isKennel + hasKennel = this.isKennel, + postId = this.postId ) } @@ -21,6 +22,7 @@ internal fun AnnouncementSearchResponseItem.toData(): Announcement { location = "${this.departureLoc} → ${this.arrivalLoc}", date = dateRangeFormat(startDate, endDate), organization = this.intermediaryName, - hasKennel = this.isKennel + hasKennel = this.isKennel, + postId = this.postId ) } diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/DetailRepository.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/DetailRepository.kt new file mode 100644 index 000000000..a17f497d4 --- /dev/null +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/DetailRepository.kt @@ -0,0 +1,11 @@ +package com.kusitms.connectdog.core.data.repository + +import com.kusitms.connectdog.core.data.api.model.intermediator.IntermediatorInfoResponseItem +import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem +import com.kusitms.connectdog.core.data.api.model.volunteer.NoticeDetailResponseItem + +interface DetailRepository { + suspend fun getNoticeDetail(postId: Long): NoticeDetailResponseItem + suspend fun getIntermediatorInfo(intermediaryId: Long): IntermediatorInfoResponseItem + suspend fun getIntermediatorReview(intermediaryId: Long): List +} diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/DetailRepositoryImpl.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/DetailRepositoryImpl.kt new file mode 100644 index 000000000..20cd74e4e --- /dev/null +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/DetailRepositoryImpl.kt @@ -0,0 +1,23 @@ +package com.kusitms.connectdog.core.data.repository + +import com.kusitms.connectdog.core.data.api.ApiService +import com.kusitms.connectdog.core.data.api.model.intermediator.IntermediatorInfoResponseItem +import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem +import com.kusitms.connectdog.core.data.api.model.volunteer.NoticeDetailResponseItem +import javax.inject.Inject + +internal class DetailRepositoryImpl @Inject constructor( + private val api: ApiService +) : DetailRepository { + override suspend fun getNoticeDetail(postId: Long): NoticeDetailResponseItem { + return api.getNoticeDetail(postId) + } + + override suspend fun getIntermediatorInfo(intermediaryId: Long): IntermediatorInfoResponseItem { + return api.getIntermediatorInfo(intermediaryId) + } + + override suspend fun getIntermediatorReview(intermediaryId: Long): List { + return api.getIntermediatorReview(intermediaryId) + } +} diff --git a/core/designsystem/src/main/java/com/kusitms/connectdog/core/designsystem/component/ListItem.kt b/core/designsystem/src/main/java/com/kusitms/connectdog/core/designsystem/component/ListItem.kt index 528ceb713..c3d4a5de4 100644 --- a/core/designsystem/src/main/java/com/kusitms/connectdog/core/designsystem/component/ListItem.kt +++ b/core/designsystem/src/main/java/com/kusitms/connectdog/core/designsystem/component/ListItem.kt @@ -177,7 +177,7 @@ private fun ListForUserItemPreivew() { ConnectDogTheme { ListForUserItem( imageUrl = "", - announcement = Announcement("", "이동봉사 위치", "YY.mm.dd(요일)", "단체이름", false), + announcement = Announcement("", "이동봉사 위치", "YY.mm.dd(요일)", "단체이름", false, -1), isValid = false ) } diff --git a/core/model/src/main/java/com/kusitms/connectdog/core/model/Announcement.kt b/core/model/src/main/java/com/kusitms/connectdog/core/model/Announcement.kt index 4dde2f244..e274bf84b 100644 --- a/core/model/src/main/java/com/kusitms/connectdog/core/model/Announcement.kt +++ b/core/model/src/main/java/com/kusitms/connectdog/core/model/Announcement.kt @@ -5,5 +5,6 @@ data class Announcement( val location: String, val date: String, val organization: String, - val hasKennel: Boolean + val hasKennel: Boolean, + val postId: Int ) diff --git a/feature/home/build.gradle.kts b/feature/home/build.gradle.kts index cfe0bae51..dfc8d46d2 100644 --- a/feature/home/build.gradle.kts +++ b/feature/home/build.gradle.kts @@ -72,6 +72,7 @@ dependencies { implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.runtime.livedata) // test implementation(libs.androidx.junit.ktx) diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/DetailViewModel.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/DetailViewModel.kt new file mode 100644 index 000000000..5fcf7532b --- /dev/null +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/DetailViewModel.kt @@ -0,0 +1,26 @@ +package com.kusitms.connectdog.feature.home + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.kusitms.connectdog.core.data.api.model.volunteer.NoticeDetailResponseItem +import com.kusitms.connectdog.core.data.repository.DetailRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class DetailViewModel @Inject constructor( + private val detailRepository: DetailRepository +) : ViewModel() { + private val _detail = MutableLiveData() + val detail: LiveData = _detail + + fun initNoticeDetail(postId: Long) { + viewModelScope.launch { + val response = detailRepository.getNoticeDetail(postId) + _detail.postValue(response) + } + } +} diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/IntermediatorProfileViewModel.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/IntermediatorProfileViewModel.kt new file mode 100644 index 000000000..a5f16289d --- /dev/null +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/IntermediatorProfileViewModel.kt @@ -0,0 +1,40 @@ +package com.kusitms.connectdog.feature.home + +import android.util.Log +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.kusitms.connectdog.core.data.api.model.intermediator.IntermediatorInfoResponseItem +import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem +import com.kusitms.connectdog.core.data.repository.DetailRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class IntermediatorProfileViewModel @Inject constructor( + private val detailRepository: DetailRepository +) : ViewModel() { + private val _intermediator = MutableLiveData() + val intermediator: LiveData = _intermediator + + private val _review = MutableLiveData>() + val notice: LiveData> = _review + + fun initIntermediatorProfile(intermediaryId: Long) { + viewModelScope.launch { + val response = detailRepository.getIntermediatorInfo(intermediaryId) + _intermediator.postValue(response) + } + } + + fun initIntermediatorReview(intermediaryId: Long) { + viewModelScope.launch { + val response = detailRepository.getIntermediatorReview(intermediaryId) + _review.postValue(response) + + Log.d("testtt", response.toString()) + } + } +} diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/navigation/HomeNavigation.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/navigation/HomeNavigation.kt index 2a723cfca..125934f04 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/navigation/HomeNavigation.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/navigation/HomeNavigation.kt @@ -53,8 +53,8 @@ fun NavController.navigateReview() { navigate(HomeRoute.review) } -fun NavController.navigateDetail() { - navigate(HomeRoute.detail) +fun NavController.navigateDetail(postId: Long) { + navigate("${HomeRoute.detail}/$postId") } fun NavController.navigateCertification() { @@ -69,8 +69,8 @@ fun NavController.navigateComplete() { navigate(HomeRoute.complete) } -fun NavController.navigateIntermediatorProfile() { - navigate(HomeRoute.intermediatorProfile) +fun NavController.navigateIntermediatorProfile(intermediaryId: Long) { + navigate("${HomeRoute.intermediatorProfile}/$intermediaryId") } fun NavController.navigateNotification() { @@ -84,11 +84,11 @@ fun NavGraphBuilder.homeNavGraph( onNavigateToFilterSearch: () -> Unit, onNavigateToFilter: (Filter) -> Unit, onNavigateToReview: () -> Unit, - onNavigateToDetail: () -> Unit, + onNavigateToDetail: (Long) -> Unit, onNavigateToCertification: () -> Unit, onNavigateToApply: () -> Unit, onNavigateToComplete: () -> Unit, - onNavigateToIntermediatorProfile: () -> Unit, + onNavigateToIntermediatorProfile: (Long) -> Unit, onNavigateToNotification: () -> Unit, onShowErrorSnackBar: (throwable: Throwable?) -> Unit ) { @@ -156,12 +156,19 @@ fun NavGraphBuilder.homeNavGraph( onBackClick = onBackClick ) } - - composable(route = HomeRoute.detail) { + composable( + route = "${HomeRoute.detail}/{postId}", + arguments = listOf( + navArgument("postId") { + type = NavType.LongType + } + ) + ) { DetailScreen( onBackClick = onBackClick, onCertificationClick = onNavigateToCertification, - onIntermediatorProfileClick = onNavigateToIntermediatorProfile + onIntermediatorProfileClick = onNavigateToIntermediatorProfile, + postId = it.arguments!!.getLong("postId") ) } @@ -185,9 +192,17 @@ fun NavGraphBuilder.homeNavGraph( ) } - composable(route = HomeRoute.intermediatorProfile) { + composable( + route = "${HomeRoute.intermediatorProfile}/{intermediaryId}", + arguments = listOf( + navArgument("intermediaryId") { + type = NavType.LongType + } + ) + ) { IntermediatorProfileScreen( - onBackClick = onBackClick + onBackClick = onBackClick, + intermediaryId = it.arguments!!.getLong("intermediaryId") ) } diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/DetailScreen.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/DetailScreen.kt index ad6802af4..d271f00ba 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/DetailScreen.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/DetailScreen.kt @@ -23,6 +23,9 @@ import androidx.compose.material3.Divider import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -31,9 +34,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.hilt.navigation.compose.hiltViewModel +import com.kusitms.connectdog.core.data.api.model.volunteer.NoticeDetailResponseItem import com.kusitms.connectdog.core.designsystem.component.ConnectDogInformationCard import com.kusitms.connectdog.core.designsystem.component.ConnectDogTag import com.kusitms.connectdog.core.designsystem.component.ConnectDogTopAppBar @@ -45,18 +51,26 @@ import com.kusitms.connectdog.core.designsystem.theme.Gray2 import com.kusitms.connectdog.core.designsystem.theme.Gray5 import com.kusitms.connectdog.core.designsystem.theme.Gray7 import com.kusitms.connectdog.core.designsystem.theme.PetOrange +import com.kusitms.connectdog.feature.home.DetailViewModel import com.kusitms.connectdog.feature.home.R +private const val TAG = "DetailScreen" + @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @Composable internal fun DetailScreen( onBackClick: () -> Unit, - imageUrl: String = "", - title: String = "인천 댕댕구 -> 서울 댕댕구", - content: String = "내용", onCertificationClick: () -> Unit, - onIntermediatorProfileClick: () -> Unit + onIntermediatorProfileClick: (Long) -> Unit, + postId: Long, + viewModel: DetailViewModel = hiltViewModel() ) { + val detail by viewModel.detail.observeAsState(null) + + LaunchedEffect(postId) { + viewModel.initNoticeDetail(postId) + } + Scaffold( topBar = { ConnectDogTopAppBar( @@ -74,16 +88,18 @@ internal fun DetailScreen( modifier = Modifier .verticalScroll(rememberScrollState()) ) { - Spacer(modifier = Modifier.height(48.dp)) - NetworkImage( - imageUrl = "https://dimg.donga.com/wps/NEWS/IMAGE/2022/01/28/111500268.2.jpg", - modifier = Modifier - .fillMaxWidth() - .height(250.dp) - ) - Content(title, content) - DogInfo() - IntermediatorInfo(onIntermediatorProfileClick) + if (detail != null) { + Spacer(modifier = Modifier.height(48.dp)) + NetworkImage( + imageUrl = detail!!.mainImage, + modifier = Modifier + .fillMaxWidth() + .height(250.dp) + ) + Content(detail!!) + DogInfo(detail!!) + IntermediatorInfo(detail!!, onIntermediatorProfileClick) + } } } } @@ -124,28 +140,35 @@ fun BookmarkButton(onClick: () -> Unit = {}) { } @Composable -fun Content(title: String, content: String) { +fun Content(detail: NoticeDetailResponseItem) { Column( modifier = Modifier .fillMaxWidth() .padding(all = 24.dp) ) { - ConnectDogTag("모집중") + ConnectDogTag(detail.postStatus) Spacer(modifier = Modifier.height(8.dp)) Text( - text = title, + text = "${detail.departureLoc} → ${detail.arrivalLoc}", fontWeight = FontWeight.Bold, fontSize = 20.sp ) Spacer(modifier = Modifier.height(20.dp)) - DetailInfo("일정", "23.08.01(수)") + DetailInfo("일정", "${detail.startDate} ~ ${detail.endDate}") Spacer(modifier = Modifier.height(8.dp)) - DetailInfo("픽업시간", "23.08.01(수)") + DetailInfo("픽업시간", detail.pickUpTime) Spacer(modifier = Modifier.height(8.dp)) - DetailInfo("켄넬 여부", "23.08.01(수)") + DetailInfo( + "켄넬 여부", + if (detail.isKennel) { + stringResource(id = com.kusitms.connectdog.core.designsystem.R.string.has_kennel) + } else { + stringResource(id = com.kusitms.connectdog.core.designsystem.R.string.has_not_kennel) + } + ) Spacer(modifier = Modifier.height(40.dp)) Text( - text = content, + text = detail.content, fontSize = 14.sp, fontWeight = FontWeight.Normal ) @@ -159,7 +182,7 @@ fun Content(title: String, content: String) { } @Composable -fun DogInfo() { +fun DogInfo(detail: NoticeDetailResponseItem) { Column( modifier = Modifier .fillMaxWidth() @@ -171,15 +194,15 @@ fun DogInfo() { fontWeight = FontWeight.Bold ) Spacer(modifier = Modifier.height(20.dp)) - DetailInfo("이름", "밍밍이") + DetailInfo("이름", detail.dogName) Spacer(modifier = Modifier.height(8.dp)) - DetailInfo("사이즈", "밍밍이") + DetailInfo("사이즈", detail.dogSize) Spacer(modifier = Modifier.height(8.dp)) - DetailInfo("성별", "밍밍이") + DetailInfo("성별", detail.dogGender) Spacer(modifier = Modifier.height(8.dp)) - DetailInfo("몸무게", "밍밍이") + DetailInfo("몸무게", "${detail.dogWeight}kg") Spacer(modifier = Modifier.height(20.dp)) - ConnectDogInformationCard(title = "특이사항", content = "특이사항") + ConnectDogInformationCard(title = "특이사항", content = detail.specifics ?: "없습니다.") } Divider( Modifier @@ -191,7 +214,8 @@ fun DogInfo() { @Composable fun IntermediatorInfo( - onClick: () -> Unit + detail: NoticeDetailResponseItem, + onClick: (Long) -> Unit ) { Column( modifier = Modifier @@ -210,7 +234,7 @@ fun IntermediatorInfo( .fillMaxWidth() ) { NetworkImage( - imageUrl = "https://png.pngtree.com/png-clipart/20201029/ourlarge/pngtree-circle-clipart-orange-circle-png-image_2381942.jpg", + imageUrl = detail.intermediaryProfileImage, modifier = Modifier .width(40.dp) .height(40.dp) @@ -222,7 +246,7 @@ fun IntermediatorInfo( .width(158.dp) .align(Alignment.CenterVertically) .weight(1f), - text = "이동봉사 단체 이름", + text = detail.intermediaryName, fontSize = 14.sp, fontWeight = FontWeight.Bold ) @@ -231,7 +255,7 @@ fun IntermediatorInfo( .width(100.dp) .height(34.dp) .align(Alignment.CenterVertically), - onClick = onClick + onClick = { onClick(detail.intermediaryId.toLong()) } ) } } diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/HomeScreen.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/HomeScreen.kt index 0352eaed7..2bb24b31c 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/HomeScreen.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/HomeScreen.kt @@ -71,7 +71,7 @@ internal fun HomeRoute( onNavigateToSearch: () -> Unit, onNavigateToFilterSearch: () -> Unit, onNavigateToReview: () -> Unit, - onNavigateToDetail: () -> Unit, + onNavigateToDetail: (Long) -> Unit, onNavigateToNotification: () -> Unit, onShowErrorSnackBar: (throwable: Throwable?) -> Unit, viewModel: HomeViewModel = hiltViewModel() @@ -105,7 +105,7 @@ private fun HomeScreen( reviewUiState: ReviewUiState, onNavigateToSearch: () -> Unit, onNavigateToReview: () -> Unit, - onNavigateToDetail: () -> Unit + onNavigateToDetail: (Long) -> Unit ) { val scrollState = rememberScrollState() Column( @@ -324,7 +324,7 @@ fun MoveContent( } @Composable -private fun AnnouncementContent(uiState: AnnouncementUiState, onClick: () -> Unit) { +private fun AnnouncementContent(uiState: AnnouncementUiState, onClick: (Long) -> Unit) { val modifier = Modifier.padding(horizontal = 20.dp) when (uiState) { is AnnouncementUiState.Announcements -> { @@ -338,8 +338,7 @@ private fun AnnouncementContent(uiState: AnnouncementUiState, onClick: () -> Uni else -> AnnouncementLoading( modifier = modifier, - arrangement = Arrangement.spacedBy(12.dp), - onClick = onClick + arrangement = Arrangement.spacedBy(12.dp) ) } } @@ -361,15 +360,15 @@ private fun ReviewContent(uiState: ReviewUiState) { } @Composable -private fun AnnouncementListContent( +fun AnnouncementListContent( list: List, modifier: Modifier, arrangement: Arrangement.Horizontal, - onClick: () -> Unit + onClick: (Long) -> Unit ) { LazyRow(horizontalArrangement = arrangement, modifier = modifier) { items(list.take(10)) { - AnnouncementCardContent(announcement = it, onClick = onClick) + AnnouncementCardContent(announcement = it, onClick = { onClick(it.postId.toLong()) }) } } } @@ -377,15 +376,14 @@ private fun AnnouncementListContent( @Composable fun AnnouncementLoading( modifier: Modifier, - arrangement: Arrangement.Horizontal, - onClick: () -> Unit + arrangement: Arrangement.Horizontal ) { val list = List(4) { - Announcement("", "이동봉사 위치", "YY.mm.dd(요일)", "단체이름", false) + Announcement("", "이동봉사 위치", "YY.mm.dd(요일)", "단체이름", false, -1) } LazyRow(horizontalArrangement = arrangement, modifier = modifier) { items(list) { - AnnouncementCardContent(announcement = it, onClick = onClick) + AnnouncementCardContent(announcement = it, onClick = {}) } } } @@ -498,7 +496,8 @@ private fun AnnouncementPreview() { "서울시 강남구 -> 서울시 도봉구", "23.10.19(수)", "단체이름이름", - true + true, + -1 ) ) } diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/IntermediatorProfileScreen.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/IntermediatorProfileScreen.kt index 70c7ab22b..62781bb8d 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/IntermediatorProfileScreen.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/IntermediatorProfileScreen.kt @@ -20,27 +20,32 @@ import androidx.compose.material3.Tab import androidx.compose.material3.TabRow import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.hilt.navigation.compose.hiltViewModel import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.google.accompanist.pager.rememberPagerState +import com.kusitms.connectdog.core.data.api.model.intermediator.IntermediatorInfoResponseItem import com.kusitms.connectdog.core.designsystem.component.ConnectDogInformationCard import com.kusitms.connectdog.core.designsystem.component.ConnectDogOutlinedButton import com.kusitms.connectdog.core.designsystem.component.ConnectDogTopAppBar import com.kusitms.connectdog.core.designsystem.component.DetailInfo import com.kusitms.connectdog.core.designsystem.component.NetworkImage import com.kusitms.connectdog.core.designsystem.component.TopAppBarNavigationType -import com.kusitms.connectdog.core.designsystem.theme.ConnectDogTheme import com.kusitms.connectdog.core.designsystem.theme.Gray1 import com.kusitms.connectdog.core.designsystem.theme.Gray2 import com.kusitms.connectdog.core.designsystem.theme.Gray4 import com.kusitms.connectdog.core.designsystem.theme.Gray7 +import com.kusitms.connectdog.core.model.Announcement +import com.kusitms.connectdog.feature.home.IntermediatorProfileViewModel import com.kusitms.connectdog.feature.home.R import kotlinx.coroutines.launch @@ -49,8 +54,29 @@ val pages = listOf("기본 정보", "후기", "근황") @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @Composable fun IntermediatorProfileScreen( - onBackClick: () -> Unit = {} + onBackClick: () -> Unit = {}, +// onDetailClick: (Long) -> Unit, + intermediaryId: Long, + viewModel: IntermediatorProfileViewModel = hiltViewModel() ) { + viewModel.initIntermediatorProfile(intermediaryId) + viewModel.initIntermediatorReview(intermediaryId) + val intermediator by viewModel.intermediator.observeAsState(null) + val notice by viewModel.notice.observeAsState(null) +// val review by viewModel.review.observeAsState(null) + + val noticeItem = notice?.let { item -> + List(item.size) { + Announcement( + imageUrl = item[it].mainImage, + location = "${item[it].departureLoc} → ${item[it].arrivalLoc}", + date = "${item[it].startDate} ~ ${item[it].endDate}", + organization = item[it].intermediaryName, + hasKennel = item[it].isKennel, + postId = item[it].postId.toInt() + ) + } + } Scaffold( topBar = { ConnectDogTopAppBar( @@ -61,25 +87,32 @@ fun IntermediatorProfileScreen( ) } ) { - Content() + intermediator?.let { + if (noticeItem != null) { + Content(it, noticeItem) + } + } } } @Composable -private fun Content() { +private fun Content(intermediator: IntermediatorInfoResponseItem, noticeItem: List) { Column { Spacer(modifier = Modifier.height(80.dp)) - IntermediatorProfile() + IntermediatorProfile(intermediator, noticeItem) } } @Composable -fun IntermediatorProfile() { +fun IntermediatorProfile( + intermediator: IntermediatorInfoResponseItem, + noticeItem: List +) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { - NetworkImage(imageUrl = "", modifier = Modifier.size(80.dp)) + NetworkImage(imageUrl = intermediator.profileImage, modifier = Modifier.size(80.dp)) Spacer(modifier = Modifier.height(12.dp)) ConnectDogOutlinedButton( width = 51, @@ -89,23 +122,27 @@ fun IntermediatorProfile() { onClick = { /*TODO*/ } ) Spacer(modifier = Modifier.height(12.dp)) - Text("중개단체 이름", fontSize = 18.sp, color = Gray1, fontWeight = FontWeight.Bold) + Text(intermediator.name, fontSize = 18.sp, color = Gray1, fontWeight = FontWeight.Bold) Spacer(modifier = Modifier.height(8.dp)) Text( - text = "한줄소개 한줄소개 한줄소개 한줄소개 한줄소개 한줄소개 한줄소개 한줄소개", + text = intermediator.intro, fontSize = 12.sp, color = Gray4, modifier = Modifier.widthIn(min = 0.dp, max = 240.dp), - lineHeight = 15.sp + lineHeight = 15.sp, + textAlign = TextAlign.Center ) Spacer(modifier = Modifier.height(32.dp)) - TabLayout() + TabLayout(intermediator, noticeItem) } } @OptIn(ExperimentalPagerApi::class) @Composable -fun TabLayout() { +fun TabLayout( + intermediator: IntermediatorInfoResponseItem, + noticeItem: List +) { Surface { Column { val pagerState = rememberPagerState() @@ -140,7 +177,7 @@ fun TabLayout() { state = pagerState ) { when (it) { - 0 -> Information() + 0 -> Information(intermediator, noticeItem) 1 -> Review() 2 -> News() } @@ -150,26 +187,29 @@ fun TabLayout() { } @Composable -fun Information() { +fun Information( + intermediator: IntermediatorInfoResponseItem, + noticeItem: List +) { Column( modifier = Modifier .fillMaxSize() .verticalScroll(rememberScrollState()) ) { - IntermediatorInformation() + IntermediatorInformation(intermediator) Divider( Modifier .height(8.dp) .fillMaxWidth(), color = Gray7 ) - Announcement() + Announcement(noticeItem) Spacer(modifier = Modifier.height(30.dp)) } } @Composable -fun IntermediatorInformation() { +fun IntermediatorInformation(intermediator: IntermediatorInfoResponseItem) { Column( modifier = Modifier.padding(all = 24.dp), verticalArrangement = Arrangement.Top @@ -180,22 +220,20 @@ fun IntermediatorInformation() { fontWeight = FontWeight.Bold ) Spacer(modifier = Modifier.height(20.dp)) - DetailInfo("이름", "밍밍이") + DetailInfo("링크", intermediator.url) Spacer(modifier = Modifier.height(8.dp)) - DetailInfo("이름", "밍밍이") + DetailInfo("문의", intermediator.contact) Spacer(modifier = Modifier.height(20.dp)) - ConnectDogInformationCard(title = "안내사항", content = "안내사항") + ConnectDogInformationCard(title = "안내사항", content = intermediator.guide) } } @Composable -fun Announcement() { +fun Announcement(noticeItem: List) { val modifier = Modifier.padding(horizontal = 20.dp) - Column( -// modifier = Modifier.padding(horizontal = ) - ) { + Column() { MoveContent(onClick = { }, titleRes = R.string.home_navigate_search) - AnnouncementLoading(modifier = modifier, arrangement = Arrangement.spacedBy(12.dp), onClick = { }) + AnnouncementListContent(list = noticeItem, modifier = modifier, arrangement = Arrangement.spacedBy(12.dp), onClick = {}) } } @@ -218,10 +256,10 @@ fun News() { } } -@Preview -@Composable -private fun test() { - ConnectDogTheme { - IntermediatorProfileScreen() - } -} +// @Preview +// @Composable +// private fun test() { +// ConnectDogTheme { +// IntermediatorProfileScreen(intermediaryId = it.arguments!!.getLong("intermediaryId")) +// } +// } diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/SearchScreen.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/SearchScreen.kt index b67621fd5..3030948df 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/SearchScreen.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/SearchScreen.kt @@ -57,7 +57,7 @@ internal fun SearchScreen( onBackClick: () -> Unit, filterArg: Filter? = Filter(), viewModel: SearchViewModel = hiltViewModel(), - onDetailClick: () -> Unit, + onDetailClick: (Long) -> Unit, onNavigateToFilter: (Filter) -> Unit ) { viewModel.setFilter(filterArg!!) @@ -242,7 +242,7 @@ private fun SortButton( private fun AnnouncementContent( uiState: AnnouncementUiState, sortBtn: @Composable () -> Unit, - onClick: () -> Unit + onClick: (Long) -> Unit ) { when (uiState) { is AnnouncementUiState.Announcements -> { @@ -264,7 +264,7 @@ private fun AnnouncementContent( private fun AnnouncementList( list: List, sortBtn: @Composable () -> Unit, - onClick: () -> Unit + onClick: (Long) -> Unit ) { LazyColumn { item { @@ -281,23 +281,23 @@ private fun AnnouncementLoading( sortBtn: @Composable () -> Unit ) { val list = List(10) { - Announcement("", "이동봉사 위치", "YY.mm.dd(요일)", "단체이름", false) + Announcement("", "이동봉사 위치", "YY.mm.dd(요일)", "단체이름", false, -1) } LazyColumn { item { sortBtn() } items(list) { - AnnouncementContent(announcement = it, onClick = {}) + AnnouncementContent(announcement = it) {} } } } @Composable -private fun AnnouncementContent(announcement: Announcement, onClick: () -> Unit) { +private fun AnnouncementContent(announcement: Announcement, onClick: (Long) -> Unit) { Column( modifier = Modifier - .clickable { onClick() } + .clickable { onClick(announcement.postId.toLong()) } ) { ListForUserItem( modifier = Modifier.padding(20.dp), diff --git a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/LiveLiterals$ManagementComponentKt.dex b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/LiveLiterals$ManagementComponentKt.dex index d3a79961e..100b44741 100644 Binary files a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/LiveLiterals$ManagementComponentKt.dex and b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/LiveLiterals$ManagementComponentKt.dex differ diff --git a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$InProgressContent$1$1$1.dex b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$InProgressContent$1$1$1.dex index 856dc97e8..01568eb70 100644 Binary files a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$InProgressContent$1$1$1.dex and b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$InProgressContent$1$1$1.dex differ diff --git a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$PendingContent$1$2$1.dex b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$PendingContent$1$2$1.dex index c93c5c874..4355ca560 100644 Binary files a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$PendingContent$1$2$1.dex and b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$PendingContent$1$2$1.dex differ diff --git a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$ReviewRecentButton$1$1$1$1.dex b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$ReviewRecentButton$1$1$1$1.dex index 475eeff36..72e165d75 100644 Binary files a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$ReviewRecentButton$1$1$1$1.dex and b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$ReviewRecentButton$1$1$1$1.dex differ diff --git a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$ReviewRecentButton$1$1$3$1.dex b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$ReviewRecentButton$1$1$3$1.dex index 645e3aa19..f76caa4d3 100644 Binary files a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$ReviewRecentButton$1$1$3$1.dex and b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt$ReviewRecentButton$1$1$3$1.dex differ diff --git a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt.dex b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt.dex index 8cbae0d11..25e1e31ba 100644 Binary files a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt.dex and b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/debug_dex/com/kusitms/connectdog/feature/intermediator/component/ManagementComponentKt.dex differ diff --git a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/desugar_graph.bin b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/desugar_graph.bin index c006ad7db..aaaae4d86 100644 Binary files a/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/desugar_graph.bin and b/feature/intermediator/build/.transforms/1a24c11ca4238faf67028cf9912d4967/transformed/debug/desugar_graph.bin differ diff --git a/feature/intermediator/build/.transforms/bd0d027c2fcb82143a238788c6342d4c/transformed/classes/classes_dex/classes.dex b/feature/intermediator/build/.transforms/bd0d027c2fcb82143a238788c6342d4c/transformed/classes/classes_dex/classes.dex index 2a6f14813..9d9b22fe8 100644 Binary files a/feature/intermediator/build/.transforms/bd0d027c2fcb82143a238788c6342d4c/transformed/classes/classes_dex/classes.dex and b/feature/intermediator/build/.transforms/bd0d027c2fcb82143a238788c6342d4c/transformed/classes/classes_dex/classes.dex differ diff --git a/feature/intermediator/build/.transforms/dfb03e71500c7de1f30848a0651039bf/transformed/hiltAggregated.jar b/feature/intermediator/build/.transforms/dfb03e71500c7de1f30848a0651039bf/transformed/hiltAggregated.jar index 4c3633c1f..2b8f602b3 100644 Binary files a/feature/intermediator/build/.transforms/dfb03e71500c7de1f30848a0651039bf/transformed/hiltAggregated.jar and b/feature/intermediator/build/.transforms/dfb03e71500c7de1f30848a0651039bf/transformed/hiltAggregated.jar differ diff --git a/feature/intermediator/src/main/java/com/kusitms/connectdog/feature/intermediator/component/ManagementComponent.kt b/feature/intermediator/src/main/java/com/kusitms/connectdog/feature/intermediator/component/ManagementComponent.kt index ddad92048..b439ba14f 100644 --- a/feature/intermediator/src/main/java/com/kusitms/connectdog/feature/intermediator/component/ManagementComponent.kt +++ b/feature/intermediator/src/main/java/com/kusitms/connectdog/feature/intermediator/component/ManagementComponent.kt @@ -51,7 +51,8 @@ internal fun RecruitingContent(application: InterApplication) { dogName = application.dogName, date = application.date, location = application.location, - volunteerName = application.volunteerName + volunteerName = application.volunteerName, + isValid = !(application.postStatus != null && application.postStatus == "모집 마감") ) Divider(thickness = 8.dp, color = Gray7) } diff --git a/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainNavigator.kt b/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainNavigator.kt index ae8fe317c..4b141d51b 100644 --- a/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainNavigator.kt +++ b/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainNavigator.kt @@ -83,8 +83,8 @@ internal class MainNavigator( navController.navigateReview() } - fun navigateHomeDetail() { - navController.navigateDetail() + fun navigateHomeDetail(postId: Long) { + navController.navigateDetail(postId) } fun navigateCertification() { @@ -105,8 +105,8 @@ internal class MainNavigator( navController.navigateComplete() } - fun navigateIntermediatorProfile() { - navController.navigateIntermediatorProfile() + fun navigateIntermediatorProfile(intermediaryId: Long) { + navController.navigateIntermediatorProfile(intermediaryId) } fun navigateEditProfile() { diff --git a/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainScreen.kt b/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainScreen.kt index e5ca115cd..9a698655b 100644 --- a/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainScreen.kt +++ b/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainScreen.kt @@ -57,11 +57,11 @@ internal fun MainScreen(navigator: MainNavigator = rememberMainNavigator()) { navigator.navigateHomeFilter(filter) }, onNavigateToReview = { navigator.navigateHomeReview() }, - onNavigateToDetail = { navigator.navigateHomeDetail() }, + onNavigateToDetail = { navigator.navigateHomeDetail(it) }, onNavigateToCertification = { navigator.navigateCertification() }, onNavigateToApply = { navigator.navigateApply() }, onNavigateToComplete = { navigator.navigateComplete() }, - onNavigateToIntermediatorProfile = { navigator.navigateIntermediatorProfile() }, + onNavigateToIntermediatorProfile = { navigator.navigateIntermediatorProfile(it) }, onNavigateToNotification = { navigator.navigateNotification() }, onShowErrorSnackBar = {} )