Skip to content

Commit 55fd006

Browse files
committed
feat: new funct for profile
1 parent 4726866 commit 55fd006

File tree

6 files changed

+25
-14
lines changed

6 files changed

+25
-14
lines changed

core/data/src/main/kotlin/com/espressodev/gptmap/core/data/AccountService.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,19 @@ typealias RevokeAccessResponse = Response<Boolean>
1111
typealias UpdatePasswordResponse = Response<Boolean>
1212

1313
interface AccountService {
14-
1514
val currentUser: FirebaseUser
16-
17-
suspend fun firebaseSignUpWithEmailAndPassword(email: String, password: String, fullName: String): AuthResult
15+
val userId: String
16+
suspend fun firebaseSignUpWithEmailAndPassword(
17+
email: String,
18+
password: String,
19+
fullName: String
20+
): AuthResult
1821

1922
suspend fun sendEmailVerification(): SendEmailVerificationResponse
20-
2123
suspend fun firebaseSignInWithEmailAndPassword(email: String, password: String): AuthResult
22-
2324
suspend fun reloadFirebaseUser(): ReloadUserResponse
24-
2525
suspend fun updatePassword(password: String): UpdatePasswordResponse
26-
2726
suspend fun sendPasswordResetEmail(email: String): SendPasswordResetEmailResponse
28-
2927
fun signOut()
30-
3128
suspend fun revokeAccess(): RevokeAccessResponse
3229
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.espressodev.gptmap.core.data
22

33
import com.espressodev.gptmap.core.model.User
4+
import kotlinx.coroutines.flow.Flow
45

56
interface FirestoreService {
67
fun saveUser(user: User)
78
suspend fun isUserInDatabase(email: String): Result<Boolean>
89
suspend fun getUser(userId: String): User
10+
fun getUserFlow(userId: String): Flow<User?>
911
}

core/data/src/main/kotlin/com/espressodev/gptmap/core/data/impl/AccountServiceImpl.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.espressodev.gptmap.core.data.RevokeAccessResponse
66
import com.espressodev.gptmap.core.data.SendEmailVerificationResponse
77
import com.espressodev.gptmap.core.data.SendPasswordResetEmailResponse
88
import com.espressodev.gptmap.core.data.UpdatePasswordResponse
9-
import com.espressodev.gptmap.core.model.Exceptions.FirebaseUserIdIsNullException
9+
import com.espressodev.gptmap.core.model.Exceptions.FirebaseUserIsNullException
1010
import com.espressodev.gptmap.core.model.Response
1111
import com.google.firebase.auth.AuthResult
1212
import com.google.firebase.auth.FirebaseAuth
@@ -18,7 +18,10 @@ class AccountServiceImpl @Inject constructor(
1818
private val auth: FirebaseAuth,
1919
) : AccountService {
2020
override val currentUser: FirebaseUser
21-
get() = auth.currentUser ?: throw FirebaseUserIdIsNullException()
21+
get() = auth.currentUser ?: throw FirebaseUserIsNullException()
22+
23+
override val userId: String
24+
get() = currentUser.uid
2225

2326
override suspend fun firebaseSignUpWithEmailAndPassword(
2427
email: String,
@@ -64,7 +67,7 @@ class AccountServiceImpl @Inject constructor(
6467
return try {
6568
auth.currentUser?.updatePassword(password)?.await()
6669
Response.Success(true)
67-
} catch (e: Exception) {
70+
} catch (e: Exception) {
6871
Response.Failure(e)
6972
}
7073
}

core/data/src/main/kotlin/com/espressodev/gptmap/core/data/impl/FirestoreServiceImpl.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@ package com.espressodev.gptmap.core.data.impl
33
import com.espressodev.gptmap.core.data.FirestoreService
44
import com.espressodev.gptmap.core.model.Exceptions.FirebaseUserIsNullException
55
import com.espressodev.gptmap.core.model.User
6+
import com.google.firebase.auth.FirebaseAuth
67
import com.google.firebase.firestore.FirebaseFirestore
78
import com.google.firebase.firestore.FirebaseFirestoreException
9+
import com.google.firebase.firestore.dataObjects
10+
import kotlinx.coroutines.flow.Flow
811
import kotlinx.coroutines.tasks.await
912
import java.util.concurrent.ExecutionException
1013
import javax.inject.Inject
1114

1215
class FirestoreServiceImpl @Inject constructor(
1316
private val firestore: FirebaseFirestore,
17+
private val auth: FirebaseAuth,
1418
) : FirestoreService {
1519

1620
override fun saveUser(user: User) {
@@ -33,6 +37,9 @@ class FirestoreServiceImpl @Inject constructor(
3337
getUserDocRef(userId).get().await().toObject(User::class.java)
3438
?: throw FirebaseUserIsNullException()
3539

40+
override fun getUserFlow(userId: String): Flow<User?> =
41+
getUserDocRef(userId).dataObjects<User>()
42+
3643
private val userColRef by lazy { firestore.collection(USERS) }
3744
private fun getUserDocRef(id: String) = userColRef.document(id)
3845

core/data/src/main/kotlin/com/espressodev/gptmap/core/data/impl/StorageServiceImpl.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.espressodev.gptmap.core.data.impl
22

33
import com.espressodev.gptmap.core.data.StorageService
4+
import com.espressodev.gptmap.core.model.User
45
import com.google.firebase.storage.FirebaseStorage
56
import com.google.firebase.storage.StorageException
7+
import kotlinx.coroutines.flow.Flow
68
import kotlinx.coroutines.tasks.await
79
import javax.inject.Inject
810

911
class StorageServiceImpl @Inject constructor(private val storage: FirebaseStorage) :
1012
StorageService {
11-
1213
override suspend fun uploadImage(
1314
image: ByteArray,
1415
imageId: String,

core/data/src/main/kotlin/com/espressodev/gptmap/core/data/module/FirebaseModule.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ object FirebaseModule {
2828
@Provides
2929
fun storage(): FirebaseStorage = Firebase.storage
3030

31+
@Singleton
3132
@Provides
32-
fun providesIoDispatcher(): CoroutineDispatcher = Dispatchers.IO
33+
fun providesIODispatcher(): CoroutineDispatcher = Dispatchers.IO
3334
}

0 commit comments

Comments
 (0)