From 4a3ab6c3bbdbd15903a59d3ab3b168bbe37291bb Mon Sep 17 00:00:00 2001 From: Ch8n Date: Fri, 25 Oct 2019 17:39:12 +0530 Subject: [PATCH 1/2] added/DataExt extension that will help in converting any query snapshot result to list of its pojos --- .idea/caches/build_file_checksums.ser | Bin 0 -> 635 bytes .idea/codeStyles/Project.xml | 116 ++++++++++++++++++ .idea/gradle.xml | 21 ++++ .idea/misc.xml | 4 + .idea/runConfigurations.xml | 12 ++ .idea/vcs.xml | 6 + .../main/java/com/wiseassblog/data/DataExt.kt | 14 +++ .../FirestorePublicNoteRepositoryImpl.kt | 17 +-- .../FirestorePrivateRemoteNoteImpl.kt | 19 +-- .../domain/domainmodel/NoteTransaction.kt | 2 +- .../domain/error/SpaceNotesError.kt | 2 - .../domain/interactor/PublicNoteSource.kt | 1 + 12 files changed, 181 insertions(+), 33 deletions(-) create mode 100644 .idea/caches/build_file_checksums.ser create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000000000000000000000000000000000000..f16cb8532fd6925ab4c9ee7d768e1cf4e39e22dc GIT binary patch literal 635 zcmZ4UmVvdnh`~NNKUXg?FQq6yGexf?KR>5fFEb@IQ7^qHF(oHeub?PDD>b=9F91S2 zm1gFoxMk*~I%lLNXBU^|7Q2L-Ts|(GuF1r}uGBYr_F>vMNC#JY1CYR(Fc`|U8WE7K-A7;uGKH z8glDcrk5}Xr{w1*X6ET9fx-_%{n3ApRUhygI(c`Nt?pA-%jck zeS4$jbew>H34=gResW?CD4Jl-hr8nX^5avUd*s-yxBA=LK0W4X34>rtBGBj9jn-E+ zPVX>yXK63x_^RP${Ar+S%%Fjr-NJEXyaR_;80ByZ;I PAZKBt*-z8_jlik literal 0 HcmV?d00001 diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..81aaf37 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..f5c6d9e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/data/src/main/java/com/wiseassblog/data/DataExt.kt b/data/src/main/java/com/wiseassblog/data/DataExt.kt index 7fa6efb..4e45743 100644 --- a/data/src/main/java/com/wiseassblog/data/DataExt.kt +++ b/data/src/main/java/com/wiseassblog/data/DataExt.kt @@ -2,12 +2,14 @@ package com.wiseassblog.data import android.net.Uri import com.google.android.gms.tasks.Task +import com.google.firebase.firestore.QuerySnapshot import com.wiseassblog.data.datamodels.AnonymousRoomNote import com.wiseassblog.data.datamodels.RegisteredRoomNote import com.wiseassblog.data.datamodels.RegisteredRoomTransaction import com.wiseassblog.data.datamodels.FirebaseNote import com.wiseassblog.domain.domainmodel.Note import com.wiseassblog.domain.domainmodel.NoteTransaction +import com.wiseassblog.domain.domainmodel.Result import com.wiseassblog.domain.domainmodel.TransactionType import com.wiseassblog.domain.domainmodel.User import kotlin.coroutines.resume @@ -24,6 +26,7 @@ suspend fun awaitTaskResult(task: Task): T = suspendCoroutine { continuat } } } + //Wraps Firebase/GMS calls suspend fun awaitTaskCompletable(task: Task): Unit = suspendCoroutine { continuation -> task.addOnCompleteListener { task -> @@ -150,3 +153,14 @@ internal fun List.toNoteListFromRegistered(): List = t internal fun List.toNoteTransactionListFromRegistered(): List = this.flatMap { listOf(it.toTransaction) } + + +internal inline fun resultToList(result: QuerySnapshot?): Result> { + val noteList = mutableListOf() + result?.forEach { documentSnapshop -> + noteList.add(documentSnapshop.toObject(T::class.java)) + } + return Result.build { + noteList + } +} \ No newline at end of file diff --git a/data/src/main/java/com/wiseassblog/data/note/public/FirestorePublicNoteRepositoryImpl.kt b/data/src/main/java/com/wiseassblog/data/note/public/FirestorePublicNoteRepositoryImpl.kt index 62fc17e..ebe4f81 100644 --- a/data/src/main/java/com/wiseassblog/data/note/public/FirestorePublicNoteRepositoryImpl.kt +++ b/data/src/main/java/com/wiseassblog/data/note/public/FirestorePublicNoteRepositoryImpl.kt @@ -2,8 +2,7 @@ package com.wiseassblog.data.note.public import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.QuerySnapshot -import com.wiseassblog.data.awaitTaskCompletable -import com.wiseassblog.data.awaitTaskResult +import com.wiseassblog.data.* import com.wiseassblog.data.datamodels.FirebaseNote import com.wiseassblog.data.toFirebaseNote import com.wiseassblog.data.toNote @@ -13,6 +12,7 @@ import com.wiseassblog.domain.repository.IPublicNoteRepository const val COLLECTION_PUBLIC = "public_notes" + object FirestoreRemoteNoteImpl : IPublicNoteRepository { override suspend fun getNotes(): Result> { val firestore = FirebaseFirestore.getInstance() @@ -22,7 +22,7 @@ object FirestoreRemoteNoteImpl : IPublicNoteRepository { return try { val task = awaitTaskResult(reference.get()) - return resultToNoteList(task) + return resultToList(task) } catch (exception: Exception) { Result.build { throw exception } } @@ -77,15 +77,4 @@ object FirestoreRemoteNoteImpl : IPublicNoteRepository { } } - private fun resultToNoteList(result: QuerySnapshot?): Result> { - val noteList = mutableListOf() - - result?.forEach { documentSnapshop -> - noteList.add(documentSnapshop.toObject(FirebaseNote::class.java).toNote) - } - - return Result.build { - noteList - } - } } \ No newline at end of file diff --git a/data/src/main/java/com/wiseassblog/data/note/registered/FirestorePrivateRemoteNoteImpl.kt b/data/src/main/java/com/wiseassblog/data/note/registered/FirestorePrivateRemoteNoteImpl.kt index 3d1ed79..a47b3ad 100644 --- a/data/src/main/java/com/wiseassblog/data/note/registered/FirestorePrivateRemoteNoteImpl.kt +++ b/data/src/main/java/com/wiseassblog/data/note/registered/FirestorePrivateRemoteNoteImpl.kt @@ -2,9 +2,9 @@ package com.wiseassblog.data.note.registered import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.QuerySnapshot -import com.wiseassblog.data.awaitTaskCompletable -import com.wiseassblog.data.awaitTaskResult +import com.wiseassblog.data.* import com.wiseassblog.data.datamodels.FirebaseNote +import com.wiseassblog.data.resultToList import com.wiseassblog.data.toFirebaseNote import com.wiseassblog.data.toNote import com.wiseassblog.domain.domainmodel.Note @@ -28,25 +28,12 @@ class FirestorePrivateRemoteNoteImpl( return try { val task = awaitTaskResult(reference.get()) - return resultToNoteList(task) + return resultToList(task) } catch (exception: Exception) { Result.build { throw exception } } } - private fun resultToNoteList(result: QuerySnapshot?): Result> { - val noteList = mutableListOf() - - result?.forEach { documentSnapshop -> - noteList.add(documentSnapshop.toObject(FirebaseNote::class.java).toNote) - } - - return Result.build { - noteList - } - } - - override suspend fun getNote(id: String): Result { var reference = firestore.collection(COLLECTION_NAME) .document(id) diff --git a/domain/src/main/java/com/wiseassblog/domain/domainmodel/NoteTransaction.kt b/domain/src/main/java/com/wiseassblog/domain/domainmodel/NoteTransaction.kt index c25d0d4..eacef3d 100644 --- a/domain/src/main/java/com/wiseassblog/domain/domainmodel/NoteTransaction.kt +++ b/domain/src/main/java/com/wiseassblog/domain/domainmodel/NoteTransaction.kt @@ -21,4 +21,4 @@ fun Note.toTransaction(type: TransactionType): NoteTransaction = NoteTransaction imageUrl, creator, type -) + ) diff --git a/domain/src/main/java/com/wiseassblog/domain/error/SpaceNotesError.kt b/domain/src/main/java/com/wiseassblog/domain/error/SpaceNotesError.kt index af82a34..029c9ea 100644 --- a/domain/src/main/java/com/wiseassblog/domain/error/SpaceNotesError.kt +++ b/domain/src/main/java/com/wiseassblog/domain/error/SpaceNotesError.kt @@ -10,8 +10,6 @@ sealed class SpaceNotesError: Exception() { object AuthError: SpaceNotesError() object TransactionIOException : SpaceNotesError() - - } const val ERROR_UPDATE_FAILED = "Update operation unsuccessful." diff --git a/domain/src/main/java/com/wiseassblog/domain/interactor/PublicNoteSource.kt b/domain/src/main/java/com/wiseassblog/domain/interactor/PublicNoteSource.kt index ac666ea..85521b3 100644 --- a/domain/src/main/java/com/wiseassblog/domain/interactor/PublicNoteSource.kt +++ b/domain/src/main/java/com/wiseassblog/domain/interactor/PublicNoteSource.kt @@ -6,6 +6,7 @@ import com.wiseassblog.domain.domainmodel.Result class PublicNoteSource { + suspend fun getNotes(locator: NoteServiceLocator): Result> = locator .remotePublic .getNotes() From 1a60a993062aaea05c1e8961d1b2e3cf2a5c9733 Mon Sep 17 00:00:00 2001 From: Ch8n Date: Fri, 25 Oct 2019 17:41:46 +0530 Subject: [PATCH 2/2] added/DataExt extension that will help in converting any query snapshot result to list of its pojos --- data/src/main/java/com/wiseassblog/data/DataExt.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/src/main/java/com/wiseassblog/data/DataExt.kt b/data/src/main/java/com/wiseassblog/data/DataExt.kt index 4e45743..fdc525a 100644 --- a/data/src/main/java/com/wiseassblog/data/DataExt.kt +++ b/data/src/main/java/com/wiseassblog/data/DataExt.kt @@ -156,11 +156,11 @@ internal fun List.toNoteTransactionListFromRegistered internal inline fun resultToList(result: QuerySnapshot?): Result> { - val noteList = mutableListOf() + val targetList = mutableListOf() result?.forEach { documentSnapshop -> - noteList.add(documentSnapshop.toObject(T::class.java)) + targetList.add(documentSnapshop.toObject(T::class.java)) } return Result.build { - noteList + targetList } } \ No newline at end of file