Skip to content

Commit

Permalink
feat: FreeBoardPost 삭제 시 FreeBoardList 화면에서 해당 Post cache 를 삭제합니다
Browse files Browse the repository at this point in the history
  • Loading branch information
sejun2 committed Mar 1, 2025
1 parent d5ec9fa commit 56f9f31
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 43 deletions.
3 changes: 3 additions & 0 deletions app/src/main/java/com/lanpet/app/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import com.lanpet.feature.auth.navigation.Login
import com.lanpet.feature.landing.navigation.Landing
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.runBlocking
import timber.log.Timber
import javax.inject.Inject

@AndroidEntryPoint
Expand Down Expand Up @@ -53,6 +54,8 @@ class MainActivity : ComponentActivity() {
runBlocking {
val token = authRepository.getAuthTokenFromDataStore()

Timber.i("token: $token")

if (token != null) {
authManager.handleAuthentication(
SocialAuthToken(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,16 @@ fun FreeBoardListItem(
imageLoader: ImageLoader = LocalCoilManager.current.memoryCacheImageLoader,
onClick: () -> Unit = {},
) {
Surface {
Column(
modifier =
Modifier
.clickable {
onClick()
}.fillMaxWidth()
.padding(vertical = LanPetDimensions.Spacing.small),
) {
Surface(
modifier =
modifier
.then(Modifier)
.clickable {
onClick()
}.fillMaxWidth()
.padding(vertical = LanPetDimensions.Spacing.small),
) {
Column {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(horizontal = LanPetDimensions.Spacing.xSmall),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.lanpet.feature.auth.navigation

import androidx.navigation.NavController
import androidx.navigation.NavGraph
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import androidx.navigation.navOptions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInHorizontally
import androidx.compose.animation.slideOutHorizontally
import androidx.compose.runtime.remember
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
Expand All @@ -20,7 +18,6 @@ import com.lanpet.free.screen.FreeBoardCommentDetailScreen
import com.lanpet.free.screen.FreeBoardDetailScreen
import com.lanpet.free.screen.FreeBoardScreen
import com.lanpet.free.screen.FreeBoardWriteScreen
import com.lanpet.free.viewmodel.FreeBoardSharedViewModel
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
Expand All @@ -37,21 +34,19 @@ fun NavGraphBuilder.freeNavGraph(
startDestination = FreeBoard,
) {
composable<FreeBoard> {
val parentEntry = remember { navController.getBackStackEntry(FreeBoardBaseRoute) }
val freeBoardSharedViewModel = hiltViewModel<FreeBoardSharedViewModel>(parentEntry)
FreeBoardScreen(
freeBoardSharedViewModel = freeBoardSharedViewModel,
// freeBoardSharedViewModel = freeBoardSharedViewModel,
navController = navController,
onNavigateToFreeBoardWrite = onNavigateToFreeBoardWriteFreeBoard,
onNavigateToFreeBoardDetail = { postId, profileId, nickname ->
onNavigateToFreeBoardDetail(postId, profileId, nickname, null)
},
)
}
composable<FreeBoardDetail> {
val parentEntry = remember { navController.getBackStackEntry(FreeBoardBaseRoute) }
val freeBoardSharedViewModel = hiltViewModel<FreeBoardSharedViewModel>(parentEntry)
FreeBoardDetailScreen(
freeBoardSharedViewModel = freeBoardSharedViewModel,
// freeBoardSharedViewModel = freeBoardSharedViewModel,
navController = navController,
onNavigateUp = onNavigateUp,
onNavigateToFreeBoardCommentDetail = onNavigateToFreeBoardCommentDetail,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavController
import androidx.navigation.compose.rememberNavController
import coil.compose.AsyncImage
import coil.request.ImageRequest
import com.lanpet.core.auth.BasePreviewWrapper
Expand Down Expand Up @@ -95,7 +97,6 @@ import com.lanpet.free.viewmodel.FreeBoardDetailState
import com.lanpet.free.viewmodel.FreeBoardDetailViewModel
import com.lanpet.free.viewmodel.FreeBoardLikeEvent
import com.lanpet.free.viewmodel.FreeBoardLikesViewModel
import com.lanpet.free.viewmodel.FreeBoardSharedViewModel
import com.lanpet.free.widgets.CommentInput
import com.lanpet.free.widgets.FreeBoardCommentItem
import com.lanpet.free.widgets.LoadingUI
Expand All @@ -106,9 +107,9 @@ import com.lanpet.core.designsystem.R as DS_R
@Composable
fun FreeBoardDetailScreen(
onNavigateUp: () -> Unit,
navController: NavController,
modifier: Modifier = Modifier,
freeBoardDetailViewModel: FreeBoardDetailViewModel = hiltViewModel<FreeBoardDetailViewModel>(),
freeBoardSharedViewModel: FreeBoardSharedViewModel = hiltViewModel<FreeBoardSharedViewModel>(),
onNavigateToFreeBoardCommentDetail: (postId: String, freeBoardComment: FreeBoardComment) -> Unit = { _, _ -> },
) {
val state = freeBoardDetailViewModel.uiState.collectAsStateWithLifecycle()
Expand Down Expand Up @@ -183,7 +184,10 @@ fun FreeBoardDetailScreen(
onClick = {
deleteContentState = false
// TODO
freeBoardSharedViewModel.deletedPostId.tryEmit("testId")
navController.previousBackStackEntry?.savedStateHandle?.set(
"deletedPostId",
currentState.postDetail.id,
)
onNavigateUp()
},
) {
Expand Down Expand Up @@ -769,6 +773,7 @@ private fun FreeBoardDetailPreview() {
LanPetAppTheme {
FreeBoardDetailScreen(
onNavigateUp = {},
navController = rememberNavController(),
onNavigateToFreeBoardCommentDetail = { _, _ -> },
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import androidx.compose.material3.Text
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.key
import androidx.compose.runtime.remember
Expand All @@ -40,6 +39,8 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavController
import androidx.navigation.compose.rememberNavController
import com.lanpet.core.auth.LocalAuthManager
import com.lanpet.core.common.widget.FreeBoardListItem
import com.lanpet.core.common.widget.LanPetTopAppBar
Expand All @@ -59,26 +60,30 @@ import com.lanpet.domain.model.free.FreeBoardStat
import com.lanpet.domain.model.free.FreeBoardText
import com.lanpet.free.viewmodel.FreeBoardListState
import com.lanpet.free.viewmodel.FreeBoardListViewModel
import com.lanpet.free.viewmodel.FreeBoardSharedViewModel
import kotlinx.coroutines.flow.distinctUntilChanged
import timber.log.Timber

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun FreeBoardScreen(
navController: NavController,
modifier: Modifier = Modifier,
freeBoardListViewModel: FreeBoardListViewModel = hiltViewModel<FreeBoardListViewModel>(),
freeBoardSharedViewModel: FreeBoardSharedViewModel = hiltViewModel<FreeBoardSharedViewModel>(),
onNavigateToFreeBoardWrite: () -> Unit = {},
onNavigateToFreeBoardDetail: (String, String, String) -> Unit = { _, _, _ -> },
) {
val scrollState = rememberScrollState()
val uiState by freeBoardListViewModel.uiState.collectAsState()
val deletedPostId = freeBoardSharedViewModel.deletedPostId.collectAsStateWithLifecycle()
val uiState by freeBoardListViewModel.uiState.collectAsStateWithLifecycle()
val savedStateHandle =
navController.currentBackStackEntry
?.savedStateHandle

LaunchedEffect(Unit) {
Timber.i("deletedPostId: ${deletedPostId.value}")
freeBoardSharedViewModel.deletedPostId.tryEmit(null)
if (savedStateHandle?.contains("deletedPostId") == true) {
Timber.i("deletedPostId: ${savedStateHandle.get<String>("deletedPostId")}")
freeBoardListViewModel.removePostCache(savedStateHandle.get<String>("deletedPostId")!!)
savedStateHandle.remove<String>("deletedPostId")
}
}

Scaffold(
Expand Down Expand Up @@ -276,19 +281,18 @@ fun FreeBoardPostList(
LazyColumn(
state = state,
) {
items(freeBoardItemList.size) { index ->
key(freeBoardItemList[index].id) {
FreeBoardListItem(
freeBoardPostItem = freeBoardItemList[index],
onClick = {
onNavigateToFreeBoardDetail(
freeBoardItemList[index].id,
profileId,
nickname,
)
},
)
}
items(freeBoardItemList.size, key = { freeBoardItemList[it].id }) { index ->
FreeBoardListItem(
modifier = Modifier.animateItem(),
freeBoardPostItem = freeBoardItemList[index],
onClick = {
onNavigateToFreeBoardDetail(
freeBoardItemList[index].id,
profileId,
nickname,
)
},
)
}

if (isLoading) {
Expand All @@ -303,7 +307,9 @@ fun FreeBoardPostList(
@Composable
private fun FreeBoardScreenPreview() {
LanPetAppTheme {
FreeBoardScreen()
FreeBoardScreen(
navController = rememberNavController(),
)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@ class FreeBoardListViewModel
}
}

fun removePostCache(postId: String) {
_uiState.value =
when (val currentState = _uiState.value) {
is FreeBoardListState.Success -> {
val newData = currentState.data.filter { it.id != postId }
currentState.copy(data = newData)
}

else -> currentState
}
}

init {
getFreeBoardPostList()
}
Expand Down

0 comments on commit 56f9f31

Please sign in to comment.