Авторизация, нерабочий чат

This commit is contained in:
Халимов Рустам
2026-04-14 01:41:51 +03:00
parent 1fb1be47dd
commit dc051fa9ae
22 changed files with 160 additions and 49 deletions

View File

@@ -18,13 +18,14 @@ class AuthRepositoryImpl @Inject constructor(
return try {
val response = api.login(AuthRequest(userName, password))
val token = response.accessToken ?: return Result.failure(Exception("Token is null"))
val userId = response.userId ?: ""
tokenManager.saveToken(token)
tokenManager.saveToken(token, userId)
fetchConfig()
Result.success(
AuthResult(
token = token,
userId = response.userId ?: "",
userId = userId,
userName = response.username ?: userName,
displayName = response.displayName ?: response.username ?: userName,
avatarUrl = null
@@ -39,13 +40,14 @@ class AuthRepositoryImpl @Inject constructor(
return try {
val response = api.register(AuthRequest(userName, password))
val token = response.accessToken ?: return Result.failure(Exception("Token is null"))
val userId = response.userId ?: ""
tokenManager.saveToken(token)
tokenManager.saveToken(token, userId)
fetchConfig()
Result.success(
AuthResult(
token = token,
userId = response.userId ?: "",
userId = userId,
userName = response.username ?: userName,
displayName = response.displayName ?: response.username ?: userName,
avatarUrl = null
@@ -60,6 +62,10 @@ class AuthRepositoryImpl @Inject constructor(
tokenManager.deleteToken()
}
override fun isAuthenticated(): Boolean {
return tokenManager.getToken() != null
}
override suspend fun fetchConfig(): Result<Unit> {
return try {
val config = api.getConfig()

View File

@@ -7,4 +7,5 @@ interface AuthRepository {
suspend fun register(userName: String, password: String): Result<AuthResult>
suspend fun logout()
suspend fun fetchConfig(): Result<Unit>
fun isAuthenticated(): Boolean
}

View File

@@ -22,9 +22,13 @@ class AuthViewModel @Inject constructor(
private val repository: AuthRepository
) : ViewModel() {
private val _state = MutableStateFlow(AuthState())
private val _state = MutableStateFlow(AuthState(isAuthenticated = repository.isAuthenticated()))
val state: StateFlow<AuthState> = _state.asStateFlow()
fun checkAuth() {
_state.update { it.copy(isAuthenticated = repository.isAuthenticated()) }
}
fun login(userName: String, password: String) {
viewModelScope.launch {
_state.update { it.copy(isLoading = true, error = null) }