Skip to content

Commit

Permalink
Merge pull request #288 from 6QuizOnTheBlock/and/feat#268-student_posโ€ฆ
Browse files Browse the repository at this point in the history
โ€ฆt_announce

And/feat#268 ๏ฟฝํ•™์ƒ ์•Œ๋ฆผ์žฅ ์ž์œ ๊ฒŒ์‹œํŒ ๊ตฌํ˜„
  • Loading branch information
SteelZoo authored May 12, 2024
2 parents 33dd138 + 207e1aa commit 68c4130
Show file tree
Hide file tree
Showing 36 changed files with 2,526 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.sixkids.designsystem.theme.Green
import com.sixkids.designsystem.theme.Purple
import com.sixkids.designsystem.theme.Red
import com.sixkids.navigator.R
import com.sixkids.student.board.navigation.StudentBoardRoute
import com.sixkids.student.home.navigation.StudentHomeRoute
import com.sixkids.student.navigation.ChallengeRoute
import com.sixkids.teacher.board.navigation.BoardRoute
Expand Down Expand Up @@ -56,7 +57,7 @@ enum class MainNavigationTab(
iconId = R.drawable.board,
iconTint = Blue,
labelId = R.string.bottom_navigation_tab_label_board,
route = "",
route = StudentBoardRoute.defaultRoute,
),
STUDENT_RELAY(
iconId = R.drawable.folded_hands,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,13 @@ import com.sixkids.feature.signin.navigation.SignInRoute
import com.sixkids.feature.signin.navigation.navigateSignIn
import com.sixkids.feature.signin.navigation.navigateSignUp
import com.sixkids.feature.signin.navigation.navigateSignUpPhoto
import com.sixkids.student.board.navigation.StudentBoardRoute
import com.sixkids.student.board.navigation.navigateStudentBoard
import com.sixkids.student.board.navigation.navigateStudentBoardDetail
import com.sixkids.student.board.navigation.navigateStudentBoardWrite
import com.sixkids.student.home.navigation.StudentHomeRoute
import com.sixkids.student.home.navigation.navigateStudentAnnounceDetail
import com.sixkids.student.home.navigation.navigateStudentAnnounceList
import com.sixkids.student.home.navigation.navigateStudentHome
import com.sixkids.student.main.navigation.navigateJoinOrganization
import com.sixkids.student.main.navigation.navigateStudentOrganizationList
Expand Down Expand Up @@ -89,7 +95,7 @@ class MainNavigator(
MainNavigationTab.MANAGE_CLASS -> navController.navigateManageClass(teacherNavOptions)
// ํ•™์ƒ ๋ฐ”ํ…€ ๋„ค๋น„๊ฒŒ์ด์…˜ ํƒญ
MainNavigationTab.STUDENT_HOME -> navController.navigateStudentHome(studentNavOptions)
MainNavigationTab.STUDENT_BOARD -> {}
MainNavigationTab.STUDENT_BOARD -> navController.navigateStudentBoard(studentNavOptions)
MainNavigationTab.STUDENT_RELAY -> navController.navigateStudentRelayHistory(studentNavOptions)
MainNavigationTab.STUDENT_CHALLENGE -> navController.navigateStudentChallengeHistory(studentNavOptions)
}
Expand Down Expand Up @@ -193,6 +199,14 @@ class MainNavigator(
})
}

fun navigateStudentAnnounceList() {
navController.navigateStudentAnnounceList()
}

fun navigateStudentAnnounceDetail(announceId: Long) {
navController.navigateStudentAnnounceDetail(announceId)
}

/**
* Student Group Navigation
*/
Expand Down Expand Up @@ -287,6 +301,25 @@ class MainNavigator(
navController.navigateChatting()
}

/**
* Student Board Navigation
*/
fun navigateStudentBoard() {
navController.navigate(StudentBoardRoute.defaultRoute) {
popUpTo(navController.graph.id) {
inclusive = true
}
}
}

fun navigateStudentBoardWrite() {
navController.navigateStudentBoardWrite()
}

fun navigateStudentBoardDetail(postId: Long) {
navController.navigateStudentBoardDetail(postId)
}

@Composable
fun shouldShowBottomBar(): Boolean {
val currentRoute = currentDestination?.route ?: return false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import com.google.accompanist.permissions.rememberPermissionState
import com.sixkids.designsystem.component.snackbar.UlbanSnackbar
import com.sixkids.designsystem.theme.Cream
import com.sixkids.feature.signin.navigation.signInNavGraph
import com.sixkids.student.board.navigation.studentBoardNavGraph
import com.sixkids.student.home.navigation.studentHomeNavGraph
import com.sixkids.student.main.navigation.studentOrganizationListNavGraph
import com.sixkids.student.navigation.studentChallengeNavGraph
Expand Down Expand Up @@ -146,7 +147,11 @@ fun MainScreen(

studentHomeNavGraph(
padding = innerPadding,
onShowSnackbar = viewModel::onShowSnackbar,
navigateToStudentAnnounceList = navigator::navigateStudentAnnounceList,
navigateToStudentAnnounceDetail = navigator::navigateStudentAnnounceDetail,
)

studentChallengeNavGraph(
navigateChallengeDetail = navigator::navigateChallengeDetail,
navigateToCreateGroup = navigator::navigateStudentGroupCreate,
Expand Down Expand Up @@ -175,6 +180,14 @@ fun MainScreen(
onBackClick = navigator::popBackStack,
)

studentBoardNavGraph(
padding = innerPadding,
onShowSnackBar = viewModel::onShowSnackbar,
navigateToStudentBoardDetail = navigator::navigateStudentBoardDetail,
navigateToStudentBoardWrite = navigator::navigateStudentBoardWrite,
navigateBack = navigator::popBackStack,
)

}
with(uiState) {
UlbanSnackbar(
Expand Down
1 change: 1 addition & 0 deletions android/feature/student/board/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ android {
}

dependencies {
implementation(libs.bundles.paging)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.sixkids.student.board.component

import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import com.sixkids.designsystem.theme.UlbanTypography
import com.sixkids.designsystem.R as UlbanRes

@Composable
fun CommentCount(
count: Int
) {
Row {
Icon(
imageVector = ImageVector.vectorResource(id = UlbanRes.drawable.ic_chat_bubble),
contentDescription = null
)
Text(
text = count.toString(),
style = UlbanTypography.bodyMedium
)
}
}


@Preview(showBackground = true)
@Composable
fun CommentCountPreview() {
CommentCount(10)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
package com.sixkids.student.board.component

import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Card
import androidx.compose.material3.CardColors
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage
import com.sixkids.designsystem.theme.Blue
import com.sixkids.designsystem.theme.Gray
import com.sixkids.designsystem.theme.GrayLight
import com.sixkids.designsystem.theme.UlbanTypography
import com.sixkids.designsystem.R as UlbanRes

@Composable
fun CommentItem(
modifier: Modifier = Modifier,
selected: Boolean = false,
writer: String = "",
dateString: String = "00/00 00:00",
writerImageUrl: String = "",
commentString: String = "",
isRecomment: Boolean = false,
recommentOnclick: () -> Unit = {},
deleteOnclick: (() -> Unit)? = null
){
Card(
colors = CardDefaults.cardColors(
containerColor =
if (selected) { Blue}
else if (isRecomment) {GrayLight}
else {Color.Transparent}
),
) {
Column(
modifier = modifier
.padding(start = 10.dp)
) {
Row(
verticalAlignment = Alignment.CenterVertically,
) {
AsyncImage(
modifier = Modifier
.height(36.dp)
.aspectRatio(1f),
model = writerImageUrl,
contentScale = ContentScale.Crop,
contentDescription = "์ž‘์„ฑ์ž ํ”„๋กœํ•„ ์‚ฌ์ง„"
)
Spacer(modifier = Modifier.width(4.dp))
Text(
text = writer,
style = UlbanTypography.bodyMedium
)
Spacer(modifier = Modifier.weight(1f))
if (!isRecomment) {
Icon(
modifier = Modifier.clickable{recommentOnclick()},
imageVector = ImageVector.vectorResource(id = UlbanRes.drawable.ic_chat_bubble_outline),
contentDescription = null
)
}
if (deleteOnclick != null) {
Icon(
modifier = Modifier.clickable{deleteOnclick()},
imageVector = ImageVector.vectorResource(id = UlbanRes.drawable.ic_delete),
contentDescription = null
)
}
}
Spacer(modifier = Modifier.height(4.dp))
Text(
text = commentString,
style = UlbanTypography.bodyMedium
)
Spacer(modifier = Modifier.height(4.dp))
Text(
text = dateString,
style = UlbanTypography.bodySmall.copy(
color = Gray
)
)
Spacer(modifier = Modifier.height(4.dp))
}
}
}

@Preview(showBackground = true)
@Composable
fun CommentItemPreview() {
Column {
CommentItem(
writer = "์˜คํ•˜๋นˆ",
dateString = "09/01 12:00",
writerImageUrl = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png",
commentString = "๋Œ“๊ธ€ ๋‚ด์šฉ",
deleteOnclick = {},
selected = true
)
CommentItem(
writer = "์˜คํ•˜๋นˆ",
dateString = "09/01 12:00",
commentString = "๋Œ“๊ธ€ ๋‚ด์šฉ",
writerImageUrl = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png",
)
CommentItem(
writer = "์˜คํ•˜๋นˆ",
dateString = "09/01 12:00",
commentString = "๋Œ“๊ธ€ ๋‚ด์šฉ",
writerImageUrl = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png",
isRecomment = true,
deleteOnclick = {}
)
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.sixkids.student.board.component

import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.Send
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
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.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.sixkids.designsystem.component.textfield.UlbanBasicTextField
import com.sixkids.designsystem.theme.GrayLight
import com.sixkids.designsystem.theme.UlbanTypography
import com.sixkids.student.board.R


@Composable
fun CommentTextField(
msg: String = "",
onTextIuputChange: (String) -> Unit = {},
onSendClick: (String) -> Unit = {},
) {
Card(
modifier = Modifier
.padding(6.dp),
colors = CardDefaults.cardColors(
containerColor = GrayLight
)
) {
Row(
modifier = Modifier
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically
) {
UlbanBasicTextField(
text = msg,
onTextChange = onTextIuputChange,
modifier = Modifier
.padding(10.dp, 0.dp)
.weight(1f)
.wrapContentHeight(),
maxLines = 3,
textStyle = UlbanTypography.bodyMedium.copy(fontWeight = FontWeight.Normal),
hint = stringResource(id = R.string.student_board_detail_comment_hint)
)

Icon(
Icons.AutoMirrored.Outlined.Send,
contentDescription = "",
modifier = Modifier
.size(30.dp)
.padding(end = 4.dp)
.clickable {
onSendClick(msg)
}
)

}
}

}

@Preview(showBackground = true)
@Composable
fun CommentTextFieldPreview() {
CommentTextField()
}
Loading

0 comments on commit 68c4130

Please sign in to comment.