diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000..f16cb85 Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ 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..fdc525a 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 targetList = mutableListOf() + result?.forEach { documentSnapshop -> + targetList.add(documentSnapshop.toObject(T::class.java)) + } + return Result.build { + targetList + } +} \ 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()