Skip to content

Commit 4d7e51e

Browse files
authored
πŸ”€ :: (#750) νˆ¬ν‘œ 및 μ‹ μ²­ κ΅¬ν˜„
πŸ”€ :: (#750) νˆ¬ν‘œ 및 μ‹ μ²­ κ΅¬ν˜„
2 parents 3865337 + c7e9bf0 commit 4d7e51e

File tree

37 files changed

+1896
-40
lines changed

37 files changed

+1896
-40
lines changed

β€Žapp/src/main/java/team/aliens/dms/android/app/DmsApp.ktβ€Ž

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import team.aliens.dms.android.feature.resetpassword.navigation.ResetPasswordNav
2626
import team.aliens.dms.android.feature.signup.SignUpViewModel
2727
import team.aliens.dms.android.feature.signup.TermsUrl
2828
import team.aliens.dms.android.feature.signup.navigation.SignUpNavGraph
29+
import team.aliens.dms.android.feature.voting.VotingViewModel
30+
import team.aliens.dms.android.feature.voting.navigation.VotingNavGraph
2931
import team.aliens.dms.android.network.BuildConfig
3032

3133
@Composable
@@ -74,6 +76,13 @@ fun DmsApp(
7476
}
7577
hiltViewModel<ResetPasswordViewModel>(parentEntry)
7678
}
79+
80+
dependency(VotingNavGraph) {
81+
val parentEntry = remember(navBackStackEntry) {
82+
navController.getBackStackEntry(VotingNavGraph.route)
83+
}
84+
hiltViewModel<VotingViewModel>(parentEntry)
85+
}
7786
},
7887
)
7988
}

β€Žapp/src/main/java/team/aliens/dms/android/app/navigation/DmsNavigator.ktβ€Ž

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,15 @@ import team.aliens.dms.android.feature.destinations.SignUpSetPasswordScreenDesti
3636
import team.aliens.dms.android.feature.destinations.StudyRoomDetailsScreenDestination
3737
import team.aliens.dms.android.feature.destinations.StudyRoomListScreenDestination
3838
import team.aliens.dms.android.feature.destinations.TermsScreenDestination
39+
import team.aliens.dms.android.feature.destinations.VotingApprovalScreenDestination
40+
import team.aliens.dms.android.feature.destinations.VotingModelStudentScreenDestination
41+
import team.aliens.dms.android.feature.destinations.VotingSelectedScreenDestination
42+
import team.aliens.dms.android.feature.destinations.VotingStudentScreenDestination
3943
import team.aliens.dms.android.feature.editpassword.navigation.EditPasswordNavGraph
4044
import team.aliens.dms.android.feature.outing.navigation.OutingNavGraph
4145
import team.aliens.dms.android.feature.resetpassword.navigation.ResetPasswordNavGraph
4246
import team.aliens.dms.android.feature.signup.navigation.SignUpNavGraph
47+
import team.aliens.dms.android.feature.voting.navigation.VotingNavGraph
4348
import java.util.UUID
4449

4550
class DmsNavigator(
@@ -235,6 +240,22 @@ class DmsNavigator(
235240
override fun openOutingApplication() {
236241
navController.navigateSingleTop(OutingApplicationScreenDestination within OutingNavGraph)
237242
}
243+
244+
override fun openVotingApproval(voteOptionId: UUID, voteTopicTitle: String) {
245+
navController.navigateSingleTop(VotingApprovalScreenDestination(voteOptionId, voteTopicTitle) within VotingNavGraph)
246+
}
247+
248+
override fun openVotingModelStudent(voteOptionId: UUID, voteTopicTitle: String) {
249+
navController.navigateSingleTop(VotingModelStudentScreenDestination(voteOptionId, voteTopicTitle) within VotingNavGraph)
250+
}
251+
252+
override fun openVotingSelected(voteOptionId: UUID, voteTopicTitle: String) {
253+
navController.navigateSingleTop(VotingSelectedScreenDestination(voteOptionId, voteTopicTitle) within VotingNavGraph)
254+
}
255+
256+
override fun openVotingStudent(voteOptionId: UUID, voteTopicTitle: String) {
257+
navController.navigateSingleTop(VotingStudentScreenDestination(voteOptionId, voteTopicTitle) within VotingNavGraph)
258+
}
238259
}
239260

240261
private fun NavController.navigateSingleTop(

β€Žapp/src/main/java/team/aliens/dms/android/app/navigation/authorized/AuthorizedNavGraph.ktβ€Ž

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,14 @@ import team.aliens.dms.android.feature.destinations.PointHistoryScreenDestinatio
1414
import team.aliens.dms.android.feature.destinations.RemainsApplicationScreenDestination
1515
import team.aliens.dms.android.feature.destinations.StudyRoomDetailsScreenDestination
1616
import team.aliens.dms.android.feature.destinations.StudyRoomListScreenDestination
17+
import team.aliens.dms.android.feature.destinations.VotingApprovalScreenDestination
18+
import team.aliens.dms.android.feature.destinations.VotingModelStudentScreenDestination
19+
import team.aliens.dms.android.feature.destinations.VotingSelectedScreenDestination
20+
import team.aliens.dms.android.feature.destinations.VotingStudentScreenDestination
1721
import team.aliens.dms.android.feature.editpassword.navigation.EditPasswordNavGraph
1822
import team.aliens.dms.android.feature.outing.navigation.OutingNavGraph
1923
import team.aliens.dms.android.feature.studyroom.navigation.StudyRoomNavGraph
24+
import team.aliens.dms.android.feature.voting.navigation.VotingNavGraph
2025

2126
object AuthorizedNavGraph : NavGraphSpec {
2227
override val route: String = "authorized"
@@ -26,6 +31,7 @@ object AuthorizedNavGraph : NavGraphSpec {
2631
EditPasswordNavGraph,
2732
StudyRoomNavGraph,
2833
OutingNavGraph,
34+
VotingNavGraph,
2935
)
3036

3137
override val destinationsByRoute: Map<String, DestinationSpec<*>> =
@@ -40,6 +46,10 @@ object AuthorizedNavGraph : NavGraphSpec {
4046
NotificationBoxScreenDestination,
4147
NotificationSettingsScreenDestination,
4248
PointHistoryScreenDestination,
49+
VotingModelStudentScreenDestination,
50+
VotingStudentScreenDestination,
51+
VotingSelectedScreenDestination,
52+
VotingApprovalScreenDestination,
4353
)
4454
.routedIn(navGraphSpec = this)
4555
.associateBy { it.route }

β€Žapp/src/main/java/team/aliens/dms/android/app/navigation/authorized/AuthorizedNavigator.ktβ€Ž

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import team.aliens.dms.android.feature.outing.navigation.OutingNavigator
1010
import team.aliens.dms.android.feature.point.navigation.PointHistoryNavigator
1111
import team.aliens.dms.android.feature.remains.navigator.RemainsNavigator
1212
import team.aliens.dms.android.feature.studyroom.navigation.StudyRoomNavigator
13+
import team.aliens.dms.android.feature.voting.navigation.VotingNavigator
1314

1415
interface AuthorizedNavigator :
1516
MainNavigator,
@@ -21,4 +22,5 @@ interface AuthorizedNavigator :
2122
PointHistoryNavigator,
2223
RemainsNavigator,
2324
StudyRoomNavigator,
24-
OutingNavigator
25+
OutingNavigator,
26+
VotingNavigator
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24">
6+
<path
7+
android:pathData="M7.156,11.704C7.156,11.967 7.254,12.193 7.465,12.389L13.326,18.13C13.491,18.295 13.702,18.386 13.951,18.386C14.448,18.386 14.847,17.994 14.847,17.489C14.847,17.241 14.742,17.022 14.576,16.849L9.295,11.704L14.576,6.558C14.742,6.385 14.847,6.159 14.847,5.918C14.847,5.413 14.448,5.021 13.951,5.021C13.702,5.021 13.491,5.112 13.326,5.278L7.465,11.011C7.254,11.214 7.156,11.44 7.156,11.704Z"
8+
android:fillColor="#1C1C1E"/>
9+
</vector>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="94dp"
3+
android:height="94dp"
4+
android:viewportWidth="94"
5+
android:viewportHeight="94">
6+
<path
7+
android:pathData="M47,47m-39,0a39,39 0,1 1,78 0a39,39 0,1 1,-78 0"
8+
android:strokeWidth="16"
9+
android:fillColor="#00000000"
10+
android:strokeColor="#4C93FF"/>
11+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="94dp"
3+
android:height="94dp"
4+
android:viewportWidth="74"
5+
android:viewportHeight="74">
6+
<path
7+
android:pathData="M71.334,13.519L58.481,0.666L36,23.147L13.519,0.666L0.667,13.519L23.148,35.999L0.667,58.48L13.519,71.333L36,48.852L58.481,71.333L71.334,58.48L48.853,35.999L71.334,13.519Z"
8+
android:fillColor="#FF4646"/>
9+
</vector>

β€Žcore/ui/src/main/java/team/aliens/dms/android/core/ui/PaddingDefaults.ktβ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,5 @@ val LargeVerticalSpace = PaddingDefaults.Medium
104104
val DefaultHorizontalSpace = PaddingDefaults.Small
105105

106106
val LargeHorizontalSpace = PaddingDefaults.Medium
107+
108+
val ExtraLargeVerticalSpace = PaddingDefaults.ExtraLarge
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package team.aliens.dms.android.data.voting.di
2+
3+
import dagger.Binds
4+
import dagger.Module
5+
import dagger.hilt.InstallIn
6+
import dagger.hilt.components.SingletonComponent
7+
import team.aliens.dms.android.data.voting.repository.VotingRepository
8+
import team.aliens.dms.android.data.voting.repository.VotingRepositoryImpl
9+
import javax.inject.Singleton
10+
11+
@Module
12+
@InstallIn(SingletonComponent::class)
13+
internal abstract class RepositoryModule {
14+
15+
@Binds
16+
@Singleton
17+
abstract fun bindVotingRepository(impl: VotingRepositoryImpl): VotingRepository
18+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package team.aliens.dms.android.data.voting.mapper
2+
3+
import java.util.UUID
4+
import team.aliens.dms.android.data.voting.model.AllVoteSearch
5+
import team.aliens.dms.android.data.voting.model.VotingItem
6+
import team.aliens.dms.android.data.voting.model.ModelStudentCandidates
7+
import team.aliens.dms.android.data.voting.model.Vote
8+
import team.aliens.dms.android.network.voting.model.FetchAllVoteSearchResponse
9+
import team.aliens.dms.android.network.voting.model.FetchCheckVotingItemResponse
10+
import team.aliens.dms.android.network.voting.model.FetchModelStudentCandidatesResponse
11+
import team.aliens.dms.android.shared.date.toLocalDateTime
12+
13+
internal fun FetchAllVoteSearchResponse.toModel(): List<AllVoteSearch> =
14+
this.votingTopics.map(FetchAllVoteSearchResponse.VoteSearchResponse::toModel)
15+
16+
private fun FetchAllVoteSearchResponse.VoteSearchResponse.toModel(): AllVoteSearch =
17+
AllVoteSearch(
18+
id = UUID.fromString(this.id),
19+
topicName = this.topicName,
20+
description = this.description,
21+
startTime = this.startTime.toLocalDateTime(),
22+
endTime = this.endTime.toLocalDateTime(),
23+
voteType = Vote.valueOf(this.voteType),
24+
)
25+
26+
internal fun FetchCheckVotingItemResponse.toModel(): List<VotingItem> =
27+
this.votingOptions.map(FetchCheckVotingItemResponse.VotingItemResponse::toModel)
28+
29+
private fun FetchCheckVotingItemResponse.VotingItemResponse.toModel(): VotingItem =
30+
VotingItem(
31+
id = id,
32+
votingOptionName = votingOptionName,
33+
)
34+
35+
internal fun FetchModelStudentCandidatesResponse.toModel(): List<ModelStudentCandidates> =
36+
this.students.map(FetchModelStudentCandidatesResponse.ModelStudentCandidatesResponse::toModel)
37+
38+
private fun FetchModelStudentCandidatesResponse.ModelStudentCandidatesResponse.toModel(): ModelStudentCandidates =
39+
ModelStudentCandidates(
40+
id = this.id,
41+
studentGcn = this.studentGcn,
42+
name = this.name,
43+
profileImageUrl = this.profileImageUrl,
44+
)

0 commit comments

Comments
Β (0)