@@ -11,54 +11,94 @@ package com.mifos.core.data.repositoryImp
1111
1212import com.mifos.core.common.utils.DataState
1313import com.mifos.core.common.utils.asDataStateFlow
14+ import com.mifos.core.data.mappers.client.note.toDomain
15+ import com.mifos.core.data.mappers.client.note.toDto
1416import com.mifos.core.data.repository.NoteRepository
15- import com.mifos.core.model.objects.notes.Note
16- import com.mifos.core.model.objects.payloads.NotesPayload
17- import com.mifos.core.network.GenericResponse
17+ import com.mifos.core.data.util.NetworkMonitor
18+ import com.mifos.core.data.util.runAsDataState
19+ import com.mifos.core.data.util.withNetworkCheck
20+ import com.mifos.core.model.objects.note.CreateNoteInput
21+ import com.mifos.core.model.objects.note.Note
22+ import com.mifos.core.model.objects.note.UpdateNoteInput
1823import com.mifos.core.network.datamanager.DataManagerNote
1924import kotlinx.coroutines.flow.Flow
25+ import kotlinx.coroutines.flow.flowOn
26+ import kotlinx.coroutines.flow.map
27+ import template.core.base.common.manager.DispatcherManager
2028
2129class NoteRepositoryImp (
2230 private val dataManagerNote : DataManagerNote ,
31+ private val networkMonitor : NetworkMonitor ,
32+ private val dispatcher : DispatcherManager ,
2333) : NoteRepository {
2434
2535 override suspend fun addNewNote (
2636 resourceType : String ,
2737 resourceId : Long ,
28- notesPayload : NotesPayload ,
29- ): GenericResponse {
30- return dataManagerNote.addNewNote(resourceType, resourceId, notesPayload)
38+ createNoteInput : CreateNoteInput ,
39+ ): DataState <Unit > {
40+ return runAsDataState(
41+ networkMonitor,
42+ dispatcher.io,
43+ ) {
44+ dataManagerNote.addNewNote(resourceType, resourceId, createNoteInput.toDto())
45+ }
3146 }
3247
3348 override suspend fun deleteNote (
3449 resourceType : String ,
3550 resourceId : Long ,
3651 noteId : Long ,
37- ): GenericResponse {
38- return dataManagerNote.deleteNote(resourceType, resourceId, noteId)
52+ ): DataState <Unit > {
53+ return runAsDataState(
54+ networkMonitor,
55+ dispatcher.io,
56+ ) {
57+ dataManagerNote.deleteNote(resourceType, resourceId, noteId)
58+ }
3959 }
4060
4161 override fun retrieveNote (
4262 resourceType : String ,
4363 resourceId : Long ,
4464 noteId : Long ,
45- ): Flow <DataState <Note >> {
46- return dataManagerNote.retrieveNote(resourceType, resourceId, noteId).asDataStateFlow()
47- }
65+ ): Flow <DataState <Note >> =
66+ networkMonitor.withNetworkCheck(
67+ dataManagerNote.retrieveNote(resourceType, resourceId, noteId).map { it.toDomain() }
68+ .asDataStateFlow(),
69+ ).flowOn(dispatcher.io)
4870
4971 override fun retrieveListNotes (
5072 resourceType : String ,
5173 resourceId : Long ,
52- ): Flow <DataState <List <Note >>> {
53- return dataManagerNote.retrieveListNotes(resourceType, resourceId).asDataStateFlow()
54- }
74+ ): Flow <DataState <List <Note >>> =
75+ networkMonitor.withNetworkCheck(
76+ dataManagerNote
77+ .retrieveListNotes(resourceType, resourceId)
78+ .map { dtoList ->
79+ dtoList.map { dto ->
80+ dto.toDomain()
81+ }
82+ }
83+ .asDataStateFlow(),
84+ ).flowOn(dispatcher.io)
5585
5686 override suspend fun updateNote (
5787 resourceType : String ,
5888 resourceId : Long ,
5989 noteId : Long ,
60- notesPayload : NotesPayload ,
61- ): GenericResponse {
62- return dataManagerNote.updateNote(resourceType, resourceId, noteId, notesPayload)
90+ updateNoteInput : UpdateNoteInput ,
91+ ): DataState <Unit > {
92+ return runAsDataState(
93+ networkMonitor,
94+ dispatcher.io,
95+ ) {
96+ dataManagerNote.updateNote(
97+ resourceType,
98+ resourceId,
99+ noteId,
100+ updateNoteInput.toDto(),
101+ )
102+ }
63103 }
64104}
0 commit comments