Skip to content

Commit d9d9ad7

Browse files
authored
Merge pull request #65 from Nexters/feature/alarm-setting
모임 상세 화면에서 모임 개설 여부에 따라 모임 주기 설정을 볼 수 있고 멤버 목록에서 본인인지 알 수 있습니다.
2 parents 78acf12 + 1b5ef53 commit d9d9ad7

File tree

5 files changed

+58
-15
lines changed

5 files changed

+58
-15
lines changed

core/data/src/main/java/com/plottwist/core/data/mapper/Gathering.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,17 @@ fun GatheringDetailData.toDomainModel() : GatheringDetail {
3838
gatheringIntervalDays = this.gatheringIntervalDays,
3939
sentProposalCount = this.sentProposalCount,
4040
receivedProposalCount = this.receivedProposalCount,
41-
members = this.members.map { it.toDomainModel() }
41+
members = this.members.map { it.toDomainModel() },
42+
isHost = this.isHost
4243
)
4344
}
4445

4546
fun GatheringMemberData.toDomainModel() : GatheringMember {
4647
return GatheringMember(
4748
memberId = this.memberId,
48-
memberName = this.memberName
49+
memberName = this.memberName,
50+
isHost = this.isHost,
51+
isMe = this.isMe
4952
)
5053
}
5154

core/domain/src/main/java/com/plottwist/core/domain/model/Gathering.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@ data class GatheringDetail(
1818
val gatheringIntervalDays: Long = 0,
1919
val sentProposalCount: Int = 0,
2020
val receivedProposalCount: Int = 0,
21-
val members: List<GatheringMember> = emptyList()
21+
val members: List<GatheringMember> = emptyList(),
22+
val isHost: Boolean = false
2223
)
2324

2425
data class GatheringMember(
2526
val memberId: Long = 0,
26-
val memberName: String = ""
27+
val memberName: String = "",
28+
val isHost: Boolean = false,
29+
val isMe: Boolean = false
2730
)
2831

2932
data class Purposes(

core/network/src/main/java/com/plottwist/core/network/model/gathering/GatheringDetailResponse.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@ data class GatheringDetailData(
1919
val gatheringIntervalDays: Long,
2020
val sentProposalCount: Int,
2121
val receivedProposalCount: Int,
22-
val members: List<GatheringMemberData>
22+
val members: List<GatheringMemberData>,
23+
val isHost: Boolean
2324
)
2425

2526
@Serializable
2627
data class GatheringMemberData(
2728
val memberId: Long,
28-
val memberName: String
29+
val memberName: String,
30+
val isHost: Boolean,
31+
val isMe: Boolean
2932
)

feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/GatheringDetailScreen.kt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import androidx.compose.foundation.layout.Arrangement
66
import androidx.compose.foundation.layout.Column
77
import androidx.compose.foundation.layout.PaddingValues
88
import androidx.compose.foundation.layout.Row
9+
import androidx.compose.foundation.layout.Spacer
910
import androidx.compose.foundation.layout.fillMaxSize
1011
import androidx.compose.foundation.layout.fillMaxWidth
12+
import androidx.compose.foundation.layout.height
1113
import androidx.compose.foundation.layout.padding
1214
import androidx.compose.foundation.layout.width
1315
import androidx.compose.foundation.lazy.LazyColumn
@@ -82,6 +84,7 @@ fun GatheringDetailScreen(
8284
lastAlarm = state.gatheringDetail.lastPushRelativeTime,
8385
sentProposalCount = state.gatheringDetail.sentProposalCount,
8486
receivedProposalCount = state.gatheringDetail.receivedProposalCount,
87+
isHost = state.gatheringDetail.isHost,
8588
onAlarmSettingClick = {
8689
viewModel.handleAction(GatheringDetailAction.ClickAlarmSetting)
8790
},
@@ -110,6 +113,7 @@ private fun GatheringDetailScreen(
110113
lastAlarm: String,
111114
sentProposalCount: Int,
112115
receivedProposalCount: Int,
116+
isHost: Boolean,
113117
onAlarmSettingClick: () -> Unit,
114118
onProposalClick: () -> Unit,
115119
onSentProposalClick: () -> Unit,
@@ -138,10 +142,14 @@ private fun GatheringDetailScreen(
138142
}
139143

140144
item(key = Items.ALARM_SETTING) {
141-
GatheringAlarmSetting(
142-
modifier = Modifier.padding(top = 24.dp),
143-
onClick = onAlarmSettingClick
144-
)
145+
if(isHost) {
146+
GatheringAlarmSetting(
147+
modifier = Modifier.padding(top = 24.dp),
148+
onClick = onAlarmSettingClick
149+
)
150+
} else {
151+
Spacer(modifier = Modifier.fillMaxWidth().height(44.dp))
152+
}
145153
}
146154

147155
item(key = Items.GATHERING_INFO) {
@@ -243,6 +251,7 @@ private fun GatheringDetailScreenPreview() {
243251
lastAlarm = "3달 전",
244252
sentProposalCount = 99,
245253
receivedProposalCount = 99,
254+
isHost = true,
246255
onAlarmSettingClick = {},
247256
onProposalClick = {},
248257
onSentProposalClick = {},

feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/component/GatheringMembers.kt

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
99
import androidx.compose.foundation.layout.height
1010
import androidx.compose.foundation.layout.padding
1111
import androidx.compose.foundation.layout.size
12+
import androidx.compose.foundation.shape.CircleShape
1213
import androidx.compose.foundation.shape.RoundedCornerShape
1314
import androidx.compose.material3.HorizontalDivider
1415
import androidx.compose.material3.Icon
@@ -22,7 +23,9 @@ import androidx.compose.ui.graphics.vector.ImageVector
2223
import androidx.compose.ui.res.stringResource
2324
import androidx.compose.ui.res.vectorResource
2425
import androidx.compose.ui.unit.dp
26+
import androidx.compose.ui.unit.sp
2527
import com.plottwist.core.designsystem.R
28+
import com.plottwist.core.designsystem.foundation.TukColorTokens.Gray300
2629
import com.plottwist.core.designsystem.foundation.type.TukPretendardTypography
2730
import com.plottwist.core.designsystem.foundation.type.TukSerifTypography
2831
import com.plottwist.core.domain.model.GatheringMember
@@ -59,15 +62,37 @@ fun GatheringMembers(
5962
)
6063

6164
members.forEach { member ->
62-
Text(
63-
text = member.memberName,
64-
style = TukPretendardTypography.body16R,
65-
color = Color(0xFF1f1f1f)
66-
)
65+
Row(
66+
verticalAlignment = Alignment.CenterVertically,
67+
horizontalArrangement = Arrangement.spacedBy(5.dp)
68+
){
69+
Text(
70+
text = member.memberName,
71+
style = TukPretendardTypography.body16R,
72+
color = Color(0xFF1f1f1f)
73+
)
74+
if(member.isMe){
75+
MemberMarkAsMe()
76+
}
77+
}
78+
6779
}
6880
}
6981
}
7082

83+
@Composable
84+
fun MemberMarkAsMe(modifier: Modifier = Modifier) {
85+
Text(
86+
modifier = modifier.background(
87+
color = Gray300,
88+
shape = CircleShape
89+
).padding(horizontal = 5.dp),
90+
text = "",
91+
style = TukPretendardTypography.body12M.copy(
92+
fontSize = 10.sp
93+
)
94+
)
95+
}
7196

7297
@Composable
7398
fun InvitationMemberText(

0 commit comments

Comments
 (0)