feat(auth): 手机号验证码登录(会话模型 + 登录页 + 导航接入)
This commit is contained in:
@@ -1,11 +1,30 @@
|
||||
package com.mingyuan.android_client.core.domain.repository
|
||||
|
||||
import com.mingyuan.android_client.core.model.Session
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
||||
sealed interface SmsCodeResult {
|
||||
data object Success : SmsCodeResult
|
||||
data class Failure(val message: String) : SmsCodeResult
|
||||
}
|
||||
|
||||
sealed interface LoginResult {
|
||||
data object Success : LoginResult
|
||||
data class Failure(val message: String) : LoginResult
|
||||
}
|
||||
|
||||
interface SessionRepository {
|
||||
val isLoggedIn: Flow<Boolean>
|
||||
/** The current session, or `null` when logged out. */
|
||||
val session: Flow<Session?>
|
||||
|
||||
suspend fun login()
|
||||
/** Derived convenience kept for the existing feature ViewModels (home/checkin/plan/profile). */
|
||||
val isLoggedIn: Flow<Boolean>
|
||||
get() = session.map { it != null }
|
||||
|
||||
suspend fun requestSmsCode(phone: String): SmsCodeResult
|
||||
|
||||
suspend fun login(phone: String, code: String): LoginResult
|
||||
|
||||
suspend fun logout()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user