#44 use interface for DAO's

This commit is contained in:
reyniersbram 2023-04-06 22:52:00 +02:00
parent cdc29c1674
commit 0e2b5f3c7d
8 changed files with 3 additions and 95 deletions

View file

@ -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

View file

@ -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()
}
}

View file

@ -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()
}
}

View file

@ -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()
}
}

View file

@ -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()

View file

@ -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"
}
}

View file

@ -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()
}
}

View file

@ -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()
}
}