diff --git a/android/app/src/main/java/com/goliath/emojihub/RootActivity.kt b/android/app/src/main/java/com/goliath/emojihub/RootActivity.kt index 13920094..c956dd6e 100644 --- a/android/app/src/main/java/com/goliath/emojihub/RootActivity.kt +++ b/android/app/src/main/java/com/goliath/emojihub/RootActivity.kt @@ -150,11 +150,19 @@ class RootActivity : ComponentActivity() { } composable(NavigationDestination.MyEmojiList) { - CreatedEmojiListView() + val parentEntry = remember(it) { + navController.getBackStackEntry(NavigationDestination.MainPage) + } + val emojiViewModel = hiltViewModel(parentEntry) + CreatedEmojiListView(emojiViewModel) } composable(NavigationDestination.MySavedEmojiList) { - SavedEmojiListView() + val parentEntry = remember(it) { + navController.getBackStackEntry(NavigationDestination.MainPage) + } + val emojiViewModel = hiltViewModel(parentEntry) + SavedEmojiListView(emojiViewModel) } } } diff --git a/android/app/src/main/java/com/goliath/emojihub/views/components/CreatedEmojiListView.kt b/android/app/src/main/java/com/goliath/emojihub/views/components/CreatedEmojiListView.kt index 47dc3bc1..227814bb 100644 --- a/android/app/src/main/java/com/goliath/emojihub/views/components/CreatedEmojiListView.kt +++ b/android/app/src/main/java/com/goliath/emojihub/views/components/CreatedEmojiListView.kt @@ -1,18 +1,45 @@ package com.goliath.emojihub.views.components 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.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem +import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.paging.compose.collectAsLazyPagingItems import com.goliath.emojihub.LocalNavController +import com.goliath.emojihub.NavigationDestination import com.goliath.emojihub.ui.theme.Color +import com.goliath.emojihub.viewmodels.EmojiViewModel @Composable fun CreatedEmojiListView( - + emojiViewModel: EmojiViewModel ) { val navController = LocalNavController.current + val emojiList = emojiViewModel.myCreatedEmojiList.collectAsLazyPagingItems() + + var dropDownMenuExpanded by remember { mutableStateOf(false) } + Column ( Modifier.background(Color.White) ) { @@ -20,5 +47,62 @@ fun CreatedEmojiListView( title = "내가 만든 이모지", navigate = { navController.popBackStack() } ) + + Column(Modifier.padding(horizontal = 16.dp)) { + Spacer(Modifier.height(16.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Spacer(Modifier.weight(1f)) + Column { + Button( + onClick = { dropDownMenuExpanded = true }, + colors = ButtonDefaults.buttonColors( + backgroundColor = Color.Black, + contentColor = Color.White + ) + ) { + Text(text = "Sort by", fontSize = 12.sp) + } + + DropdownMenu( + expanded = dropDownMenuExpanded, + onDismissRequest = { dropDownMenuExpanded = false } + ) { + DropdownMenuItem(onClick = { + emojiViewModel.sortByDate = 1 + emojiViewModel.fetchEmojiList() + dropDownMenuExpanded = false + }) { + Text(text = "created date") + } + DropdownMenuItem(onClick = { + emojiViewModel.sortByDate = 0 + emojiViewModel.fetchEmojiList() + dropDownMenuExpanded = false + }) { + Text(text = "save count") + } + } + } + } + + LazyVerticalGrid( + columns = GridCells.Fixed(2), + modifier = Modifier.padding(top = 18.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalArrangement = Arrangement.spacedBy(4.dp), + ) { + items(emojiList.itemCount) { index -> + emojiList[index]?.let{ + EmojiCell(emoji = it, displayMode = EmojiCellDisplay.VERTICAL) { selectedEmoji -> + emojiViewModel.currentEmoji = selectedEmoji + navController.navigate(NavigationDestination.PlayEmojiVideo) + } + } + } + } + } } } \ No newline at end of file diff --git a/android/app/src/main/java/com/goliath/emojihub/views/components/CreatedPostListView.kt b/android/app/src/main/java/com/goliath/emojihub/views/components/CreatedPostListView.kt index c804c55a..f918dd5d 100644 --- a/android/app/src/main/java/com/goliath/emojihub/views/components/CreatedPostListView.kt +++ b/android/app/src/main/java/com/goliath/emojihub/views/components/CreatedPostListView.kt @@ -29,7 +29,6 @@ fun CreatedPostListView( val emojiViewModel = hiltViewModel() - val pagingPostList = postList.collectAsLazyPagingItems() Column (Modifier.background(Color.White)) { diff --git a/android/app/src/main/java/com/goliath/emojihub/views/components/SavedEmojiListView.kt b/android/app/src/main/java/com/goliath/emojihub/views/components/SavedEmojiListView.kt index e8fdf4c4..f3352c66 100644 --- a/android/app/src/main/java/com/goliath/emojihub/views/components/SavedEmojiListView.kt +++ b/android/app/src/main/java/com/goliath/emojihub/views/components/SavedEmojiListView.kt @@ -1,18 +1,45 @@ package com.goliath.emojihub.views.components 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.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem +import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.paging.compose.collectAsLazyPagingItems import com.goliath.emojihub.LocalNavController +import com.goliath.emojihub.NavigationDestination import com.goliath.emojihub.ui.theme.Color +import com.goliath.emojihub.viewmodels.EmojiViewModel @Composable fun SavedEmojiListView( - + emojiViewModel: EmojiViewModel ) { val navController = LocalNavController.current + val emojiList = emojiViewModel.mySavedEmojiList.collectAsLazyPagingItems() + + var dropDownMenuExpanded by remember { mutableStateOf(false) } + Column ( Modifier.background(Color.White) ) { @@ -20,5 +47,62 @@ fun SavedEmojiListView( title = "저장된 이모지", navigate = { navController.popBackStack() } ) + + Column(Modifier.padding(horizontal = 16.dp)) { + Spacer(Modifier.height(16.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Spacer(Modifier.weight(1f)) + Column { + Button( + onClick = { dropDownMenuExpanded = true }, + colors = ButtonDefaults.buttonColors( + backgroundColor = Color.Black, + contentColor = Color.White + ) + ) { + Text(text = "Sort by", fontSize = 12.sp) + } + + DropdownMenu( + expanded = dropDownMenuExpanded, + onDismissRequest = { dropDownMenuExpanded = false } + ) { + DropdownMenuItem(onClick = { + emojiViewModel.sortByDate = 1 + emojiViewModel.fetchEmojiList() + dropDownMenuExpanded = false + }) { + Text(text = "created date") + } + DropdownMenuItem(onClick = { + emojiViewModel.sortByDate = 0 + emojiViewModel.fetchEmojiList() + dropDownMenuExpanded = false + }) { + Text(text = "save count") + } + } + } + } + + LazyVerticalGrid( + columns = GridCells.Fixed(2), + modifier = Modifier.padding(top = 18.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalArrangement = Arrangement.spacedBy(4.dp), + ) { + items(emojiList.itemCount) { index -> + emojiList[index]?.let{ + EmojiCell(emoji = it, displayMode = EmojiCellDisplay.VERTICAL) { selectedEmoji -> + emojiViewModel.currentEmoji = selectedEmoji + navController.navigate(NavigationDestination.PlayEmojiVideo) + } + } + } + } + } } } \ No newline at end of file