#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 be.ugent.sel.studeez.data.local.models.User
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
interface AccountService {
|
interface AccountDAO {
|
||||||
val currentUserId: String
|
val currentUserId: String
|
||||||
val hasUser: Boolean
|
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 kotlinx.coroutines.tasks.await
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class AccountServiceImpl @Inject constructor(
|
class FirebaseAccountDAO @Inject constructor(
|
||||||
private val auth: FirebaseAuth
|
private val auth: FirebaseAuth
|
||||||
) : AccountService {
|
) : AccountDAO {
|
||||||
|
|
||||||
override val currentUserId: String
|
override val currentUserId: String
|
||||||
get() = auth.currentUser?.uid.orEmpty()
|
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