#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
	
	 reyniersbram
						reyniersbram