Skip to content

Commit

Permalink
Merge pull request #99 from pknu-wap/feature/jaino/#86
Browse files Browse the repository at this point in the history
Feature/jaino/#86
  • Loading branch information
jeongjaino authored Jan 12, 2024
2 parents aa06536 + 942757e commit 2ba4f34
Show file tree
Hide file tree
Showing 11 changed files with 64 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ interface ManagementRepository {
suspend fun postManager(userId: String): Result<Unit>

suspend fun getManagementCode(code: String): Result<Boolean>

suspend fun deleteManager(userId: String): Result<Unit>
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,7 @@ class ManagementRepositoryImpl @Inject constructor(

override suspend fun getManagementCode(code: String): Result<Boolean> =
managementDataSource.getManagementCode(code)

override suspend fun deleteManager(userId: String): Result<Unit> =
managementDataSource.deleteManager(userId)
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ interface UserRepository {
studentId: String,
registeredAt: String,
): Result<Unit>

suspend fun deleteUserProfile(userId: String): Result<Unit>
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,7 @@ class UserRepositoryImpl @Inject constructor(
registeredAt = registeredAt,
),
)

override suspend fun deleteUserProfile(userId: String): Result<Unit> =
userDataSource.deleteUserProfile(userId)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,35 @@
package com.wap.wapp.core.domain.usecase.auth

import com.wap.wapp.core.data.repository.auth.AuthRepository
import com.wap.wapp.core.data.repository.management.ManagementRepository
import com.wap.wapp.core.data.repository.user.UserRepository
import com.wap.wapp.core.domain.usecase.user.GetUserRoleUseCase
import com.wap.wapp.core.model.user.UserRole
import javax.inject.Inject
import javax.inject.Singleton

@Singleton
class DeleteUserUseCase @Inject constructor(
private val authRepository: AuthRepository,
private val userRepository: UserRepository,
private val managementRepository: ManagementRepository,
private val getUserRoleUseCase: GetUserRoleUseCase,
) {
suspend operator fun invoke(): Result<Unit> =
authRepository.deleteUser()
suspend operator fun invoke(userId: String): Result<Unit> = runCatching {
val userRole = getUserRoleUseCase().getOrThrow()
when (userRole) {
UserRole.GUEST -> { return@runCatching }

UserRole.MEMBER -> {
userRepository.deleteUserProfile(userId)
}

UserRole.MANAGER -> {
userRepository.deleteUserProfile(userId)
managementRepository.deleteManager(userId)
}
}

authRepository.deleteUser().getOrThrow()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ interface ManagementDataSource {
suspend fun postManager(userId: String): Result<Unit>

suspend fun getManagementCode(code: String): Result<Boolean>

suspend fun deleteManager(userId: String): Result<Unit>
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,11 @@ class ManagementDataSourceImpl @Inject constructor(

result.isEmpty.not()
}

override suspend fun deleteManager(userId: String): Result<Unit> = runCatching {
firebaseFirestore.collection(MANAGER_COLLECTION)
.document(userId)
.delete()
.await()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ interface UserDataSource {
suspend fun getUserProfile(userId: String): Result<UserProfileResponse>

suspend fun getUserId(): Result<String>

suspend fun deleteUserProfile(userId: String): Result<Unit>
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,11 @@ class UserDataSourceImpl @Inject constructor(
checkNotNull(userProfile)
}
}

override suspend fun deleteUserProfile(userId: String): Result<Unit> = runCatching {
firebaseFirestore.collection(USER_COLLECTION)
.document(userId)
.delete()
.await()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ internal fun SplashRoute(
LaunchedEffect(true) {
viewModel.splashUiEvent.collect { event ->
when (event) {
is SplashViewModel.SplashEvent.SignInUser -> { navigateToNotice() }
is SplashViewModel.SplashEvent.NonSignInUser -> { navigateToAuth() }
is SplashViewModel.SplashEvent.SignInUser -> navigateToNotice()
is SplashViewModel.SplashEvent.NonSignInUser -> navigateToAuth()
is SplashViewModel.SplashEvent.Failure -> {
navigateToAuth()
context.showToast(event.throwable.toSupportingText())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,17 @@ class SplashViewModel @Inject constructor(
}
}

private fun isUserSignIn() {
viewModelScope.launch {
isUserSignInUseCase()
.onSuccess { isSignIn ->
if (isSignIn) {
_splashUiEvent.emit(SplashEvent.SignInUser)
} else {
_splashUiEvent.emit(SplashEvent.NonSignInUser)
}
}.onFailure { throwable ->
_splashUiEvent.emit(SplashEvent.Failure(throwable))
private suspend fun isUserSignIn() {
isUserSignInUseCase()
.onSuccess { isSignIn ->
if (isSignIn) {
_splashUiEvent.emit(SplashEvent.SignInUser)
} else {
_splashUiEvent.emit(SplashEvent.NonSignInUser)
}
}
}.onFailure { throwable ->
_splashUiEvent.emit(SplashEvent.Failure(throwable))
}
}

sealed class SplashEvent {
Expand Down

0 comments on commit 2ba4f34

Please sign in to comment.