diff --git a/core/src/main/java/com/terning/core/designsystem/theme/Color.kt b/core/src/main/java/com/terning/core/designsystem/theme/Color.kt index bea5eb805..807bc9813 100644 --- a/core/src/main/java/com/terning/core/designsystem/theme/Color.kt +++ b/core/src/main/java/com/terning/core/designsystem/theme/Color.kt @@ -9,6 +9,7 @@ val Grey150 = Color(0xFFE9E9E9) val Grey200 = Color(0xFFDDDDDD) val Grey300 = Color(0xFFBCBCBC) val Grey350 = Color(0xFFADADAD) +val Grey375 = Color(0xFF898989) val Grey400 = Color(0xFF666666) val Grey500 = Color(0xFF373737) val Black = Color(0xFF171717) diff --git a/feature/src/main/java/com/terning/feature/intern/InternRoute.kt b/feature/src/main/java/com/terning/feature/intern/InternRoute.kt index 2249e3e68..bcab1d50e 100644 --- a/feature/src/main/java/com/terning/feature/intern/InternRoute.kt +++ b/feature/src/main/java/com/terning/feature/intern/InternRoute.kt @@ -2,24 +2,18 @@ package com.terning.feature.intern import android.view.ViewGroup import android.webkit.WebView -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Icon +import androidx.compose.foundation.text.selection.SelectionContainer 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.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView @@ -30,10 +24,8 @@ import androidx.lifecycle.flowWithLifecycle import androidx.navigation.NavHostController import com.terning.core.designsystem.component.dialog.TerningBasicDialog import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar -import com.terning.core.designsystem.theme.Black import com.terning.core.designsystem.theme.Grey200 import com.terning.core.designsystem.theme.Grey400 -import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.extension.customShadow import com.terning.core.extension.toast @@ -41,24 +33,24 @@ import com.terning.core.state.UiState import com.terning.domain.entity.response.InternInfoModel import com.terning.feature.R import com.terning.feature.intern.component.InternBottomBar -import com.terning.feature.intern.component.InternCancelDialog import com.terning.feature.intern.component.InternCompanyInfo import com.terning.feature.intern.component.InternInfoRow import com.terning.feature.intern.component.InternPageTitle -import com.terning.feature.intern.component.ScrapDialogContent +import com.terning.feature.intern.component.InternTitle +import com.terning.feature.intern.model.InternUiState import java.text.DecimalFormat @Composable fun InternRoute( - navController: NavHostController, announcementId: Long = 0, viewModel: InternViewModel = hiltViewModel(), + navController: NavHostController, ) { + val internState by viewModel.internUiState.collectAsStateWithLifecycle() + val context = LocalContext.current val lifecycleOwner = LocalLifecycleOwner.current - val state by viewModel.internState.collectAsStateWithLifecycle(lifecycleOwner = lifecycleOwner) - LaunchedEffect(key1 = true) { viewModel.getInternInfo(announcementId) } @@ -72,15 +64,15 @@ fun InternRoute( } } - when (state.internInfo) { - is UiState.Loading -> {} - is UiState.Empty -> {} + when (internState.loadState) { + UiState.Loading -> {} + UiState.Empty -> {} is UiState.Failure -> {} is UiState.Success -> { InternScreen( - navController = navController, - internInfoModel = (state.internInfo as UiState.Success).data, - announcementId = announcementId + internUiState = internState, + internInfoModel = (internState.loadState as UiState.Success).data, + navController = navController ) } } @@ -91,10 +83,9 @@ fun InternScreen( modifier: Modifier = Modifier, navController: NavHostController, viewModel: InternViewModel = hiltViewModel(), + internUiState: InternUiState, internInfoModel: InternInfoModel, - announcementId: Long, ) { - val internState by viewModel.internState.collectAsStateWithLifecycle() val decimal = DecimalFormat("#,###") val internInfoList = listOf( @@ -103,10 +94,12 @@ fun InternScreen( stringResource(id = R.string.intern_info_start_date) to internInfoModel.startDate, ) - val qualificationList = internInfoModel.qualification.split(",").map { it.trim() } - val jobTypeList = internInfoModel.jobType.split(",").map { it.trim() } + val qualificationList = listOf( + stringResource(id = R.string.intern_recruitment_target) to internInfoModel.qualification, + stringResource(id = R.string.intern_info_work) to internInfoModel.jobType, + ) - if (internState.showWeb) { + if (internUiState.showWeb) { AndroidView( factory = { WebView(it).apply { @@ -130,7 +123,7 @@ fun InternScreen( offsetY = 2.dp ), onBackButtonClick = { - navController.navigateUp() + navController.popBackStack() }, ) }, @@ -157,244 +150,94 @@ fun InternScreen( end = 24.dp ) ) { - Row( - modifier = modifier - .border( - width = 1.dp, - color = TerningMain, - shape = RoundedCornerShape(size = 12.dp) - ), - horizontalArrangement = Arrangement.spacedBy( - 0.dp, - Alignment.CenterHorizontally - ), - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = internInfoModel.dDay, - style = TerningTheme.typography.title5, - color = TerningMain, - modifier = Modifier.padding( - horizontal = 12.dp, - vertical = 2.dp - ) - ) - } + Spacer(modifier = modifier.padding(top = 16.dp)) - Text( - text = internInfoModel.title, - style = TerningTheme.typography.title2, - color = Black, - modifier = modifier.padding( - top = 4.dp, - bottom = 16.dp - ) - ) - - Column( - modifier = modifier - .border( - width = 1.dp, - color = TerningMain, - shape = RoundedCornerShape(size = 5.dp) - ) - .fillMaxWidth() - .padding(start = 16.dp, top = 16.dp, bottom = 16.dp), - verticalArrangement = Arrangement.spacedBy( - 6.dp, - Alignment.CenterVertically - ), - horizontalAlignment = Alignment.Start, - ) { - internInfoList.forEach { (title, value) -> - InternInfoRow(title, value) - } - } - Row( - horizontalArrangement = Arrangement.spacedBy(3.dp, Alignment.End), - verticalAlignment = Alignment.CenterVertically, - modifier = modifier - .fillMaxWidth() - .padding( - top = 9.dp, - ) - ) { - Text( - text = stringResource(id = R.string.intern_view_count), - style = TerningTheme.typography.detail3, - color = Grey400 - ) - Text( - text = "${decimal.format(internInfoModel.viewCount)}회", - style = TerningTheme.typography.button4, - color = Grey400, - ) - } - } - - Column( - verticalArrangement = Arrangement.Top, - ) { - InternPageTitle( - modifier = modifier, - text = stringResource(id = R.string.intern_sub_title_intern_info) - ) InternCompanyInfo( modifier = modifier, companyImage = internInfoModel.companyImage, company = internInfoModel.company, companyCategory = internInfoModel.companyCategory ) + + Spacer(modifier = modifier.padding(top = 20.dp)) + + InternTitle( + modifier = modifier, + dDay = internInfoModel.dDay, + title = internInfoModel.title, + viewCount = decimal.format(internInfoModel.viewCount) + ) + + Spacer(modifier = modifier.padding(top = 16.dp)) + InternPageTitle( modifier = modifier, text = stringResource(id = R.string.intern_sub_title_intern_summary) ) + Column( - modifier = modifier - .padding( - start = 24.dp, - bottom = 16.dp, - end = 24.dp - ) - .fillMaxWidth(), - verticalArrangement = Arrangement.Top, - horizontalAlignment = Alignment.Start, + modifier = modifier.padding( + top = 4.dp, + bottom = 4.dp, + start = 10.dp + ) ) { - Row( - modifier = modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.spacedBy( - 3.dp, - Alignment.Start - ), - verticalAlignment = Alignment.Top - ) { - Row( - modifier = modifier - .weight(2f), - verticalAlignment = Alignment.Top, - ) { - Icon( - painter = painterResource(id = R.drawable.ic_first_info_20), - contentDescription = null - ) - Text( - text = stringResource(id = R.string.intern_info_request), - style = TerningTheme.typography.button2, - color = Black - ) - } - - Column( - modifier = modifier - .weight(5f) - .padding(start = 8.dp), - verticalArrangement = Arrangement.spacedBy(4.dp, Alignment.Top), - ) { - qualificationList.forEach { qualification -> - Text( - text = qualification, - style = TerningTheme.typography.body4, - color = Grey400, - ) - } - } + internInfoList.forEach { (title, value) -> + InternInfoRow(title, value) } } + + Spacer(modifier = modifier.padding(top = 16.dp)) + + InternPageTitle( + modifier = modifier, + text = stringResource(id = R.string.intern_info_request) + ) + Column( - modifier = modifier - .padding(horizontal = 24.dp) - .fillMaxWidth(), - verticalArrangement = Arrangement.Top, - horizontalAlignment = Alignment.Start, + modifier = modifier.padding( + top = 4.dp, + bottom = 4.dp, + start = 10.dp + ) ) { - Row( - modifier = modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.spacedBy( - 3.dp, - Alignment.Start - ), - verticalAlignment = Alignment.Top - ) { - Row( - modifier = modifier - .weight(2f), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Start - ) { - Icon( - painter = painterResource(id = R.drawable.ic_second_info_20), - contentDescription = null, - ) - Text( - text = stringResource(id = R.string.intern_info_work), - style = TerningTheme.typography.button2, - color = Black - ) - } - - Column( - modifier = modifier - .weight(5f) - .padding(start = 8.dp), - verticalArrangement = Arrangement.spacedBy(4.dp, Alignment.Top), - ) { - jobTypeList.forEach { jobType -> - Text( - text = jobType, - style = TerningTheme.typography.body4, - color = Grey400, - ) - } - } + qualificationList.forEach { (title, value) -> + InternInfoRow(title, value) } } + + Spacer(modifier = modifier.padding(top = 16.dp)) + InternPageTitle( modifier = modifier, text = stringResource(id = R.string.intern_sub_title_intern_detail) ) + Column( modifier = modifier.padding( - start = 24.dp, - end = 24.dp, + start = 10.dp, + top = 5.dp, bottom = 20.dp ) ) { - Text( - text = internInfoModel.detail.trimIndent(), - style = TerningTheme.typography.detail1, - color = Grey400 - ) + SelectionContainer { + Text( + text = internInfoModel.detail.trimIndent(), + style = TerningTheme.typography.body3, + color = Grey400 + ) + } } } } } - if (internState.isScrapDialogVisible) { + + if (internUiState.isScrapDialogVisible) { TerningBasicDialog( onDismissRequest = { viewModel.updateScrapDialogVisible(false) }, - content = { - when (internInfoModel.scrapId != null) { - true -> InternCancelDialog( - onDismissRequest = { viewModel.updateScrapDialogVisible(false) }, - onClickScrapCancel = { - viewModel.deleteScrap( - internInfoModel.scrapId, - announcementId - ) - } - ) - - else -> ScrapDialogContent( - internInfoList = internInfoList, - dDay = internInfoModel.dDay, - title = internInfoModel.title, - companyImage = internInfoModel.companyImage, - announcementId = announcementId, - type = 0 - ) - } - }, + content = {}, ) } } diff --git a/feature/src/main/java/com/terning/feature/intern/InternViewModel.kt b/feature/src/main/java/com/terning/feature/intern/InternViewModel.kt index 13e71a697..7322223a9 100644 --- a/feature/src/main/java/com/terning/feature/intern/InternViewModel.kt +++ b/feature/src/main/java/com/terning/feature/intern/InternViewModel.kt @@ -9,11 +9,10 @@ import com.terning.domain.repository.InternRepository import com.terning.domain.repository.ScrapRepository import com.terning.feature.R import com.terning.feature.intern.model.InternScrapState -import com.terning.feature.intern.model.InternViewState +import com.terning.feature.intern.model.InternUiState import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update @@ -25,9 +24,8 @@ class InternViewModel @Inject constructor( private val internRepository: InternRepository, private val scrapRepository: ScrapRepository, ) : ViewModel() { - private val _internState: MutableStateFlow = - MutableStateFlow(InternViewState()) - val internState: StateFlow = _internState.asStateFlow() + private val _internUiState = MutableStateFlow(InternUiState()) + val internUiState get() = _internUiState.asStateFlow() private val _scrapState: MutableStateFlow = MutableStateFlow(InternScrapState()) @@ -37,20 +35,19 @@ class InternViewModel @Inject constructor( fun getInternInfo(id: Long) { viewModelScope.launch { - internRepository.getInternInfo( - id - ).onSuccess { internInfo -> - _internState.update { - it.copy(internInfo = UiState.Success(internInfo)) + internRepository.getInternInfo(id) + .onSuccess { internInfoModel -> + _internUiState.update { currentState -> + currentState.copy(loadState = UiState.Success(internInfoModel)) + } + } + .onFailure { + _sideEffect.emit(InternViewSideEffect.Toast(R.string.server_failure)) } - }.onFailure { - _sideEffect.emit( - InternViewSideEffect.Toast(R.string.server_failure) - ) - } } } + fun postScrap( id: Long, color: Int, @@ -100,31 +97,31 @@ class InternViewModel @Inject constructor( } fun updateSelectColor(newColor: Color) { - _internState.update { + _internUiState.update { it.copy(selectedColor = newColor) } } fun updateScrapDialogVisible(visible: Boolean) { - _internState.update { + _internUiState.update { it.copy(isScrapDialogVisible = visible) } } fun updatePaletteOpen(open: Boolean) { - _internState.update { + _internUiState.update { it.copy(isPaletteOpen = open) } } fun updateColorChange(change: Boolean) { - _internState.update { + _internUiState.update { it.copy(isColorChange = change) } } fun updateShowWeb(show: Boolean) { - _internState.update { + _internUiState.update { it.copy(showWeb = show) } } diff --git a/feature/src/main/java/com/terning/feature/intern/component/InternCompanyInfo.kt b/feature/src/main/java/com/terning/feature/intern/component/InternCompanyInfo.kt index afee51466..39d31b248 100644 --- a/feature/src/main/java/com/terning/feature/intern/component/InternCompanyInfo.kt +++ b/feature/src/main/java/com/terning/feature/intern/component/InternCompanyInfo.kt @@ -22,8 +22,8 @@ import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest import com.terning.core.designsystem.theme.Black -import com.terning.core.designsystem.theme.Grey300 -import com.terning.core.designsystem.theme.TerningMain +import com.terning.core.designsystem.theme.Grey150 +import com.terning.core.designsystem.theme.Grey350 import com.terning.core.designsystem.theme.TerningTheme import com.terning.feature.R @@ -36,70 +36,55 @@ fun InternCompanyInfo( company: String, companyCategory: String, ) { - Row( - modifier = modifier.padding( - start = 20.dp, - ) + Column( + modifier = Modifier + .fillMaxWidth(), + verticalArrangement = Arrangement.Top, + horizontalAlignment = Alignment.CenterHorizontally, ) { Row( verticalAlignment = Alignment.CenterVertically, - ) { - Column( - verticalArrangement = Arrangement.spacedBy( - 2.dp, - Alignment.CenterVertically - ), - horizontalAlignment = Alignment.Start, - ) { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .size(60.dp) - .border( - width = 1.dp, - color = TerningMain, - shape = RoundedCornerShape(size = 30.dp) - ) - ) { - AsyncImage( - model = ImageRequest.Builder(LocalContext.current) - .data(companyImage) - .crossfade(true) - .build(), - contentDescription = stringResource(id = R.string.search_image), - contentScale = ContentScale.Fit, - modifier = modifier - .fillMaxWidth() - .clip(CircleShape), - ) - } - } - Column( - verticalArrangement = Arrangement.spacedBy( - 3.dp, - Alignment.Bottom - ), - horizontalAlignment = Alignment.Start, - modifier = modifier - .padding( - horizontal = 12.dp - ) - ) { - Text( - text = company, - style = TerningTheme.typography.title4, - color = Black, - modifier = modifier.padding(top = 11.dp), - maxLines = MAX_LINES, - overflow = TextOverflow.Ellipsis - ) - Text( - text = companyCategory, - style = TerningTheme.typography.body4, - color = Grey300, - modifier = modifier.padding(bottom = 6.dp) + modifier = Modifier + .size(128.dp) + .border( + width = 1.dp, + color = Grey150, + shape = RoundedCornerShape(size = 20.dp) ) - } + ) { + AsyncImage( + model = ImageRequest.Builder(LocalContext.current) + .crossfade(true) + .data(companyImage) + .build(), + contentDescription = stringResource(id = R.string.search_image), + contentScale = ContentScale.Fit, + modifier = Modifier + .fillMaxWidth() + .clip(CircleShape), + ) + } + Column( + verticalArrangement = Arrangement.spacedBy( + 4.dp, + Alignment.Bottom + ), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text( + text = company, + style = TerningTheme.typography.title4, + color = Black, + modifier = modifier.padding(top = 20.dp), + maxLines = MAX_LINES, + overflow = TextOverflow.Ellipsis + ) + Text( + text = companyCategory, + style = TerningTheme.typography.body4, + color = Grey350, + modifier = modifier.padding(bottom = 8.dp) + ) } } } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/intern/component/InternInfoRow.kt b/feature/src/main/java/com/terning/feature/intern/component/InternInfoRow.kt index b01654710..756b4c097 100644 --- a/feature/src/main/java/com/terning/feature/intern/component/InternInfoRow.kt +++ b/feature/src/main/java/com/terning/feature/intern/component/InternInfoRow.kt @@ -6,25 +6,25 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.unit.dp -import com.terning.core.designsystem.theme.Black +import com.terning.core.designsystem.theme.Grey400 import com.terning.core.designsystem.theme.Grey500 import com.terning.core.designsystem.theme.TerningTheme @Composable fun InternInfoRow(title: String, value: String) { Row( - horizontalArrangement = Arrangement.spacedBy(12.dp, Alignment.Start), + horizontalArrangement = Arrangement.spacedBy(23.dp, Alignment.Start), verticalAlignment = Alignment.Top, ) { Text( text = title, style = TerningTheme.typography.body2, - color = Black, + color = Grey500, ) Text( text = value, style = TerningTheme.typography.body3, - color = Grey500, + color = Grey400, ) } } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/intern/component/InternPageTitle.kt b/feature/src/main/java/com/terning/feature/intern/component/InternPageTitle.kt index 011191a5a..79aa47b82 100644 --- a/feature/src/main/java/com/terning/feature/intern/component/InternPageTitle.kt +++ b/feature/src/main/java/com/terning/feature/intern/component/InternPageTitle.kt @@ -1,39 +1,43 @@ package com.terning.feature.intern.component -import androidx.compose.foundation.background +import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text +import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.terning.core.designsystem.theme.Black import com.terning.core.designsystem.theme.TerningMain -import com.terning.core.designsystem.theme.TerningSub4 import com.terning.core.designsystem.theme.TerningTheme @Composable fun InternPageTitle( modifier: Modifier, - text: String + text: String, ) { Row( modifier = modifier + .height(IntrinsicSize.Min) .fillMaxWidth() .padding( - top = 16.dp, - bottom = 16.dp + top = 7.dp, + bottom = 6.dp, ) - .background(TerningSub4) ) { + VerticalDivider( + color = TerningMain, + thickness = 2.dp, + ) Text( text = text, style = TerningTheme.typography.title4, - color = TerningMain, + color = Black, modifier = modifier.padding( - top = 7.dp, - bottom = 6.dp, - start = 20.dp + start = 8.dp ) ) } diff --git a/feature/src/main/java/com/terning/feature/intern/component/InternTitle.kt b/feature/src/main/java/com/terning/feature/intern/component/InternTitle.kt new file mode 100644 index 000000000..0d6a34e7c --- /dev/null +++ b/feature/src/main/java/com/terning/feature/intern/component/InternTitle.kt @@ -0,0 +1,82 @@ +package com.terning.feature.intern.component + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.terning.core.designsystem.component.image.TerningImage +import com.terning.core.designsystem.theme.Black +import com.terning.core.designsystem.theme.Grey375 +import com.terning.core.designsystem.theme.TerningMain +import com.terning.core.designsystem.theme.TerningSub3 +import com.terning.core.designsystem.theme.TerningTheme +import com.terning.feature.R + + +@Composable +fun InternTitle( + modifier: Modifier, + dDay: String, + title: String, + viewCount: String, +) { + Column( + modifier = modifier + .fillMaxWidth(), + ) { + Row( + modifier = Modifier + .background( + color = TerningSub3, + shape = RoundedCornerShape(size = 5.dp) + ), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = dDay, + style = TerningTheme.typography.title3, + color = TerningMain, + modifier = Modifier.padding( + horizontal = 19.5.dp, + vertical = 1.5.dp + ) + ) + } + + Text( + text = title, + style = TerningTheme.typography.heading2, + color = Black, + modifier = modifier.padding( + top = 8.dp, + bottom = 4.dp + ) + ) + + Row( + horizontalArrangement = Arrangement.spacedBy(3.dp, Alignment.Start), + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + ) { + TerningImage( + painter = R.drawable.ic_view_count_14 + ) + Text( + text = stringResource(id = R.string.intern_view_count_detail, viewCount), + style = TerningTheme.typography.detail2, + color = Grey375, + ) + } + } +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/intern/component/ScrapDialogContent.kt b/feature/src/main/java/com/terning/feature/intern/component/ScrapDialogContent.kt index 49f107b0b..3746f5f13 100644 --- a/feature/src/main/java/com/terning/feature/intern/component/ScrapDialogContent.kt +++ b/feature/src/main/java/com/terning/feature/intern/component/ScrapDialogContent.kt @@ -65,7 +65,7 @@ fun ScrapDialogContent( announcementId: Long, type: Int, ) { - val state by viewModel.internState.collectAsStateWithLifecycle() + val state by viewModel.internUiState.collectAsStateWithLifecycle() val colorList = listOf( CalRed, diff --git a/feature/src/main/java/com/terning/feature/intern/model/InternViewState.kt b/feature/src/main/java/com/terning/feature/intern/model/InternUiState.kt similarity index 83% rename from feature/src/main/java/com/terning/feature/intern/model/InternViewState.kt rename to feature/src/main/java/com/terning/feature/intern/model/InternUiState.kt index 499fe2c6f..16f8afcc3 100644 --- a/feature/src/main/java/com/terning/feature/intern/model/InternViewState.kt +++ b/feature/src/main/java/com/terning/feature/intern/model/InternUiState.kt @@ -5,8 +5,8 @@ import com.terning.core.designsystem.theme.CalRed import com.terning.core.state.UiState import com.terning.domain.entity.response.InternInfoModel -data class InternViewState( - var internInfo: UiState = UiState.Loading, +data class InternUiState( + val loadState: UiState = UiState.Loading, val isColorChange: Boolean = false, val isPaletteOpen: Boolean = false, val selectedColor: Color = CalRed, diff --git a/feature/src/main/java/com/terning/feature/intern/navigation/InternNavigation.kt b/feature/src/main/java/com/terning/feature/intern/navigation/InternNavigation.kt index 486134573..7bc5c14c3 100644 --- a/feature/src/main/java/com/terning/feature/intern/navigation/InternNavigation.kt +++ b/feature/src/main/java/com/terning/feature/intern/navigation/InternNavigation.kt @@ -41,8 +41,8 @@ fun NavGraphBuilder.internNavGraph( ) { val args = it.toRoute() InternRoute( - navController = navHostController, announcementId = args.announcementId, + navController = navHostController ) } } diff --git a/feature/src/main/res/drawable/ic_view_count_14.xml b/feature/src/main/res/drawable/ic_view_count_14.xml new file mode 100644 index 000000000..3f6e68ef5 --- /dev/null +++ b/feature/src/main/res/drawable/ic_view_count_14.xml @@ -0,0 +1,20 @@ + + + + diff --git a/feature/src/main/res/values/strings.xml b/feature/src/main/res/values/strings.xml index 7d1c5157d..cde3fa5a8 100644 --- a/feature/src/main/res/values/strings.xml +++ b/feature/src/main/res/values/strings.xml @@ -122,16 +122,15 @@ 공유 아이콘 지원 사이트로 이동하기 공고 정보 - 조회수 %s회 서류 마감 근무 기간 근무 시작 - 공고 정보 공고 요약 + 자격 요건 상세 정보 - 자격요건 - 직무 + 모집대상 + 모집직무 관심 공고가 캘린더에 스크랩되었어요! 관심 공고가 캘린더에서 사라졌어요!