Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .idea/caches/build_file_checksums.ser
Binary file not shown.
116 changes: 116 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/runConfigurations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions data/src/main/java/com/wiseassblog/data/DataExt.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -24,6 +26,7 @@ suspend fun <T> awaitTaskResult(task: Task<T>): T = suspendCoroutine { continuat
}
}
}

//Wraps Firebase/GMS calls
suspend fun <T> awaitTaskCompletable(task: Task<T>): Unit = suspendCoroutine { continuation ->
task.addOnCompleteListener { task ->
Expand Down Expand Up @@ -150,3 +153,14 @@ internal fun List<RegisteredRoomNote>.toNoteListFromRegistered(): List<Note> = t
internal fun List<RegisteredRoomTransaction>.toNoteTransactionListFromRegistered(): List<NoteTransaction> = this.flatMap {
listOf(it.toTransaction)
}


internal inline fun <reified T> resultToList(result: QuerySnapshot?): Result<Exception, List<T>> {
val targetList = mutableListOf<T>()
result?.forEach { documentSnapshop ->
targetList.add(documentSnapshop.toObject(T::class.java))
}
return Result.build {
targetList
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -13,6 +12,7 @@ import com.wiseassblog.domain.repository.IPublicNoteRepository


const val COLLECTION_PUBLIC = "public_notes"

object FirestoreRemoteNoteImpl : IPublicNoteRepository {
override suspend fun getNotes(): Result<Exception, List<Note>> {
val firestore = FirebaseFirestore.getInstance()
Expand All @@ -22,7 +22,7 @@ object FirestoreRemoteNoteImpl : IPublicNoteRepository {
return try {
val task = awaitTaskResult(reference.get())

return resultToNoteList(task)
return resultToList<Note>(task)
} catch (exception: Exception) {
Result.build { throw exception }
}
Expand Down Expand Up @@ -77,15 +77,4 @@ object FirestoreRemoteNoteImpl : IPublicNoteRepository {
}
}

private fun resultToNoteList(result: QuerySnapshot?): Result<Exception, List<Note>> {
val noteList = mutableListOf<Note>()

result?.forEach { documentSnapshop ->
noteList.add(documentSnapshop.toObject(FirebaseNote::class.java).toNote)
}

return Result.build {
noteList
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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<Exception, List<Note>> {
val noteList = mutableListOf<Note>()

result?.forEach { documentSnapshop ->
noteList.add(documentSnapshop.toObject(FirebaseNote::class.java).toNote)
}

return Result.build {
noteList
}
}


override suspend fun getNote(id: String): Result<Exception, Note?> {
var reference = firestore.collection(COLLECTION_NAME)
.document(id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ fun Note.toTransaction(type: TransactionType): NoteTransaction = NoteTransaction
imageUrl,
creator,
type
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ sealed class SpaceNotesError: Exception() {
object AuthError: SpaceNotesError()
object TransactionIOException : SpaceNotesError()



}

const val ERROR_UPDATE_FAILED = "Update operation unsuccessful."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.wiseassblog.domain.domainmodel.Result


class PublicNoteSource {

suspend fun getNotes(locator: NoteServiceLocator): Result<Exception, List<Note>> = locator
.remotePublic
.getNotes()
Expand Down