Skip to content

Commit 8fce79d

Browse files
authored
Merge pull request #92 from YAPP-admin/feature/#85-notices
Feature/#85 notices
2 parents ab7d297 + e22c4ac commit 8fce79d

File tree

32 files changed

+699
-244
lines changed

32 files changed

+699
-244
lines changed

app/src/main/java/com/yapp/app/official/navigation/YappNavHost.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.yapp.app.official.navigation
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.Modifier
5-
import androidx.navigation.NavOptions
65
import androidx.navigation.compose.NavHost
76
import com.yapp.app.official.ui.NavigatorState
87
import com.yapp.app.official.ui.clearBackStackNavOptions
@@ -53,7 +52,8 @@ fun YappNavHost(
5352
noticeNavGraph(
5453
navigateToNoticeDetail = { noticeId ->
5554
navigator.navigateToNoticeDetail(noticeId)
56-
}
55+
},
56+
navigateBack = {navigator.popBackStack()}
5757
)
5858
}
5959
}

app/src/main/java/com/yapp/app/official/ui/Navigator.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.navigation.NavHostController
77
import androidx.navigation.NavOptions
88
import androidx.navigation.compose.currentBackStackEntryAsState
99
import androidx.navigation.compose.rememberNavController
10-
import com.yapp.feature.home.navigation.HomeRoute
1110
import com.yapp.feature.home.navigation.navigateToHome
1211
import com.yapp.feature.home.navigation.navigateToSetting
1312
import com.yapp.feature.login.navigation.LoginRoute
@@ -34,7 +33,7 @@ class NavigatorState(
3433
@Composable get() = navController
3534
.currentBackStackEntryAsState().value?.destination
3635

37-
val startDestination = HomeRoute
36+
val startDestination = LoginRoute
3837

3938
fun navigateLoginScreen(navOptions: NavOptions? = null) {
4039
navController.navigateToLogin(navOptions)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.yapp.dataapi
2+
3+
import com.yapp.model.NoticeList
4+
import kotlinx.coroutines.flow.Flow
5+
6+
interface PostsRepository {
7+
suspend fun getNoticeList(
8+
lastNoticeId: String?,
9+
limit : Int,
10+
noticeType : String
11+
): Flow<NoticeList>
12+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.yapp.dataapi
22

33
import com.yapp.model.UserInfo
4+
import kotlinx.coroutines.flow.Flow
45

56
interface UserRepository {
67
suspend fun deleteAccount()
7-
suspend fun getUserProfile(): UserInfo
8+
suspend fun getUserProfile(): Flow<UserInfo>
89
}

core/data/src/main/java/com/yapp/core/data/data/di/RepositoryModule.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package com.yapp.core.data.data.di
22

33
import com.yapp.core.data.data.repository.AlarmRepositoryImpl
4-
import com.yapp.core.data.data.repository.UserRepositoryImpl
5-
import com.yapp.core.data.data.repository.ConfigRepositoryImpl
64
import com.yapp.core.data.data.repository.AuthRepositoryImpl
5+
import com.yapp.core.data.data.repository.ConfigRepositoryImpl
6+
import com.yapp.core.data.data.repository.PostsRepositoryImpl
7+
import com.yapp.core.data.data.repository.UserRepositoryImpl
78
import com.yapp.dataapi.AlarmRepository
8-
import com.yapp.dataapi.UserRepository
9-
import com.yapp.dataapi.ConfigRepository
109
import com.yapp.dataapi.AuthRepository
10+
import com.yapp.dataapi.ConfigRepository
11+
import com.yapp.dataapi.PostsRepository
12+
import com.yapp.dataapi.UserRepository
1113
import dagger.Binds
1214
import dagger.Module
1315
import dagger.hilt.InstallIn
@@ -36,4 +38,9 @@ internal abstract class RepositoryModule {
3638
abstract fun bindAlarmRepositoryImpl(
3739
repositoryImpl: AlarmRepositoryImpl,
3840
): AlarmRepository
41+
42+
@Binds
43+
abstract fun bindPostsRepositoryImpl(
44+
repositoryImpl: PostsRepositoryImpl,
45+
): PostsRepository
3946
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.yapp.core.data.data.repository
2+
3+
import com.yapp.core.data.remote.api.PostsApi
4+
import com.yapp.dataapi.PostsRepository
5+
import kotlinx.coroutines.flow.flow
6+
import javax.inject.Inject
7+
8+
internal class PostsRepositoryImpl @Inject constructor(
9+
private val postsApi: PostsApi,
10+
) : PostsRepository {
11+
override suspend fun getNoticeList(
12+
lastNoticeId: String?,
13+
limit: Int,
14+
noticeType: String,
15+
) = flow {
16+
val response = postsApi.getNoticeList(
17+
lastCursorId = lastNoticeId,
18+
limit = limit,
19+
noticeType = noticeType
20+
)
21+
emit(response.toNoticeListModel())
22+
}
23+
}

core/data/src/main/java/com/yapp/core/data/data/repository/UserRepositoryImpl.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.yapp.core.data.local.SecurityPreferences
44
import com.yapp.core.data.remote.api.UserApi
55
import com.yapp.dataapi.UserRepository
66
import com.yapp.model.UserInfo
7+
import kotlinx.coroutines.flow.flow
78
import javax.inject.Inject
89

910
internal class UserRepositoryImpl @Inject constructor(
@@ -16,5 +17,5 @@ internal class UserRepositoryImpl @Inject constructor(
1617
securityPreferences.clearAll()
1718
}
1819

19-
override suspend fun getUserProfile(): UserInfo = userApi.getUserProfile().toModel()
20+
override suspend fun getUserProfile() = flow<UserInfo> { emit(userApi.getUserProfile().toModel())}
2021
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.yapp.core.data.remote.api
2+
3+
import com.yapp.core.data.remote.model.response.NoticeListResponse
4+
import retrofit2.http.GET
5+
import retrofit2.http.Query
6+
7+
internal interface PostsApi {
8+
@GET("v1/posts/notices")
9+
suspend fun getNoticeList(
10+
@Query("lastCursorId") lastCursorId: String?,
11+
@Query("limit") limit: Int,
12+
@Query("noticeType") noticeType: String,
13+
) : NoticeListResponse
14+
}

core/data/src/main/java/com/yapp/core/data/remote/di/ApiModule.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.yapp.core.data.remote.di
22

33
import com.yapp.core.data.remote.api.AlarmApi
4-
import com.yapp.core.data.remote.api.ConfigApi
54
import com.yapp.core.data.remote.api.AuthApi
5+
import com.yapp.core.data.remote.api.ConfigApi
6+
import com.yapp.core.data.remote.api.PostsApi
67
import com.yapp.core.data.remote.api.UserApi
78
import dagger.Module
89
import dagger.Provides
@@ -38,4 +39,10 @@ internal object ApiModule {
3839
fun provideUserApi(@AuthRetrofit retrofit: Retrofit): UserApi {
3940
return retrofit.create(UserApi::class.java)
4041
}
42+
43+
@Singleton
44+
@Provides
45+
fun providePostsApi(retrofit: Retrofit): PostsApi {
46+
return retrofit.create(PostsApi::class.java)
47+
}
4148
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.yapp.core.data.remote.model.request
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
internal data class NoticeListRequest(
7+
val lastCursorId : String?,
8+
val limit : Int,
9+
val noticeType : String
10+
)

0 commit comments

Comments
 (0)