#44 use interface for DAO's
This commit is contained in:
parent
cdc29c1674
commit
0e2b5f3c7d
8 changed files with 3 additions and 95 deletions
|
@ -19,7 +19,7 @@ package be.ugent.sel.studeez.domain.account
|
|||
import be.ugent.sel.studeez.data.local.models.User
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface AccountService {
|
||||
interface AccountDAO {
|
||||
val currentUserId: String
|
||||
val hasUser: Boolean
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
package be.ugent.sel.studeez.domain.account
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import kotlinx.coroutines.tasks.await
|
||||
import javax.inject.Inject
|
||||
|
||||
class AuthenticateUseCase @Inject constructor(
|
||||
private val auth: FirebaseAuth,
|
||||
) {
|
||||
suspend operator fun invoke(email: String, password: String) {
|
||||
auth.signInWithEmailAndPassword(email, password).await()
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
package be.ugent.sel.studeez.domain.account
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import kotlinx.coroutines.tasks.await
|
||||
import javax.inject.Inject
|
||||
|
||||
class CreateAnonymousAccountUseCase @Inject constructor(
|
||||
private val auth: FirebaseAuth,
|
||||
) {
|
||||
suspend operator fun invoke() {
|
||||
auth.signInAnonymously().await()
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
package be.ugent.sel.studeez.domain.account
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import kotlinx.coroutines.tasks.await
|
||||
import javax.inject.Inject
|
||||
|
||||
class DeleteAccountUseCase @Inject constructor(
|
||||
private val auth: FirebaseAuth,
|
||||
) {
|
||||
suspend operator fun invoke() {
|
||||
auth.currentUser!!.delete().await()
|
||||
}
|
||||
}
|
|
@ -26,9 +26,9 @@ import kotlinx.coroutines.flow.callbackFlow
|
|||
import kotlinx.coroutines.tasks.await
|
||||
import javax.inject.Inject
|
||||
|
||||
class AccountServiceImpl @Inject constructor(
|
||||
class FirebaseAccountDAO @Inject constructor(
|
||||
private val auth: FirebaseAuth
|
||||
) : AccountService {
|
||||
) : AccountDAO {
|
||||
|
||||
override val currentUserId: String
|
||||
get() = auth.currentUser?.uid.orEmpty()
|
|
@ -1,22 +0,0 @@
|
|||
package be.ugent.sel.studeez.domain.account
|
||||
|
||||
import be.ugent.sel.studeez.domain.trace
|
||||
import com.google.firebase.auth.EmailAuthProvider
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import kotlinx.coroutines.tasks.await
|
||||
import javax.inject.Inject
|
||||
|
||||
class LinkAccountUseCase @Inject constructor(
|
||||
private val auth: FirebaseAuth,
|
||||
) {
|
||||
|
||||
suspend operator fun invoke(email: String, password: String): Unit =
|
||||
trace(LINK_ACCOUNT_TRACE) {
|
||||
val credential = EmailAuthProvider.getCredential(email, password)
|
||||
auth.currentUser!!.linkWithCredential(credential).await()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val LINK_ACCOUNT_TRACE = "linkAccount"
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
package be.ugent.sel.studeez.domain.account
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import kotlinx.coroutines.tasks.await
|
||||
import javax.inject.Inject
|
||||
|
||||
class SendRecoveryEmailUseCase @Inject constructor(
|
||||
private val auth: FirebaseAuth,
|
||||
) {
|
||||
suspend operator fun invoke(email: String) {
|
||||
auth.sendPasswordResetEmail(email).await()
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package be.ugent.sel.studeez.domain.account
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import javax.inject.Inject
|
||||
|
||||
class SignOutUseCase @Inject constructor(
|
||||
private val auth: FirebaseAuth,
|
||||
private val createAnonymousAccountUseCase: CreateAnonymousAccountUseCase,
|
||||
) {
|
||||
suspend operator fun invoke() {
|
||||
if (auth.currentUser!!.isAnonymous) {
|
||||
auth.currentUser!!.delete()
|
||||
}
|
||||
auth.signOut()
|
||||
|
||||
createAnonymousAccountUseCase()
|
||||
}
|
||||
}
|
Reference in a new issue