Skip to content

Commit 498586a

Browse files
committed
Move side menu counts to a 'Counters' screen
1 parent 6cdf69d commit 498586a

31 files changed

+393
-236
lines changed

android/engine/src/main/java/org/smartregister/fhircore/engine/data/local/register/AppRegisterRepository.kt

+1-4
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ constructor(
129129
}
130130

131131
override suspend fun countRegisterFiltered(
132-
appFeatureName: String?,
133132
healthModule: HealthModule,
134133
filters: RegisterFilter,
135134
): Long {
@@ -151,20 +150,18 @@ constructor(
151150
}
152151

153152
registerDaoFactory.registerDaoMap[healthModule]?.countRegisterFiltered(
154-
appFeatureName,
155153
filters,
156154
) ?: 0
157155
}
158156
}
159157
}
160158

161159
override suspend fun countRegisterData(
162-
appFeatureName: String?,
163160
healthModule: HealthModule,
164161
): Long =
165162
withContext(dispatcherProvider.io()) {
166163
tracer.traceSuspend("${healthModule.name.camelCase()}.countRegisterData") {
167-
registerDaoFactory.registerDaoMap[healthModule]?.countRegisterData(appFeatureName) ?: 0
164+
registerDaoFactory.registerDaoMap[healthModule]?.countRegisterData() ?: 0
168165
}
169166
}
170167

android/engine/src/main/java/org/smartregister/fhircore/engine/data/local/register/dao/AncPatientRegisterDao.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ constructor(
6868
sort(Patient.NAME, Order.ASCENDING)
6969
count =
7070
if (loadAll) {
71-
countRegisterData(appFeatureName).toInt()
71+
countRegisterData().toInt()
7272
} else PaginationConstant.DEFAULT_PAGE_SIZE + PaginationConstant.EXTRA_ITEM_COUNT
7373
from = currentPage * PaginationConstant.DEFAULT_PAGE_SIZE
7474
}
@@ -143,7 +143,7 @@ constructor(
143143
)
144144
}
145145

146-
override suspend fun countRegisterData(appFeatureName: String?) = 0L
146+
override suspend fun countRegisterData(): Long = 0L
147147
// fhirEngine.count<Condition> { getRegisterDataFilters().forEach { filterBy(it) } }
148148

149149
private fun getVisitStatus(carePlans: List<CarePlan>): VisitStatus {

android/engine/src/main/java/org/smartregister/fhircore/engine/data/local/register/dao/AppointmentRegisterDao.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ constructor(
8585
private fun applicationConfiguration(): ApplicationConfiguration =
8686
configurationRegistry.getAppConfigs()
8787

88-
override suspend fun countRegisterData(appFeatureName: String?): Long {
88+
override suspend fun countRegisterData(): Long {
8989
val dateOfAppointment = Calendar.getInstance().time
9090
return fhirEngine
9191
.search<Appointment> { genericFilter(dateOfAppointment) }
@@ -94,7 +94,7 @@ constructor(
9494
.toLong()
9595
}
9696

97-
override suspend fun countRegisterFiltered(appFeatureName: String?, filters: RegisterFilter) =
97+
override suspend fun countRegisterFiltered(filters: RegisterFilter): Long =
9898
searchAppointments(filters, loadAll = true).count().toLong()
9999

100100
private suspend fun patientCategoryMatches(

android/engine/src/main/java/org/smartregister/fhircore/engine/data/local/register/dao/FamilyRegisterDao.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ constructor(
7878
getRegisterDataFilters(FAMILY.name).forEach { filterBy(it) }
7979
count =
8080
if (loadAll) {
81-
countRegisterData(appFeatureName).toInt()
81+
countRegisterData().toInt()
8282
} else PaginationConstant.DEFAULT_PAGE_SIZE + PaginationConstant.EXTRA_ITEM_COUNT
8383
from = currentPage * PaginationConstant.DEFAULT_PAGE_SIZE
8484
}
@@ -140,7 +140,7 @@ constructor(
140140
)
141141
}
142142

143-
override suspend fun countRegisterData(appFeatureName: String?): Long {
143+
override suspend fun countRegisterData(): Long {
144144
// TODO fix this workaround for groups count
145145
return fhirEngine
146146
.search<Group> { getRegisterDataFilters(FAMILY.name).forEach { filterBy(it) } }

android/engine/src/main/java/org/smartregister/fhircore/engine/data/local/register/dao/HivRegisterDao.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ constructor(
239239
)
240240
}
241241

242-
override suspend fun countRegisterData(appFeatureName: String?): Long {
242+
override suspend fun countRegisterData(): Long {
243243
return fhirEngine
244244
.search<Patient> { filter(Patient.ACTIVE, { value = of(true) }) }
245245
.map { it.resource }

android/engine/src/main/java/org/smartregister/fhircore/engine/data/local/register/dao/TracingRegisterDao.kt

+2-5
Original file line numberDiff line numberDiff line change
@@ -401,14 +401,11 @@ abstract class TracingRegisterDao(
401401
}
402402
.map { defaultRepository.loadResource(it.other) }
403403

404-
override suspend fun countRegisterFiltered(
405-
appFeatureName: String?,
406-
filters: RegisterFilter,
407-
): Long {
404+
override suspend fun countRegisterFiltered(filters: RegisterFilter): Long {
408405
return searchRegister(filters, loadAll = true).count().toLong()
409406
}
410407

411-
override suspend fun countRegisterData(appFeatureName: String?): Long {
408+
override suspend fun countRegisterData(): Long {
412409
val patients =
413410
fhirEngine
414411
.search<Patient> { has<Task>(Task.SUBJECT) { filtersForValidTask() } }

android/engine/src/main/java/org/smartregister/fhircore/engine/domain/model/SideMenuOption.kt

+2-5
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@ data class SideMenuOption(
3434
val healthModule: HealthModule = HealthModule.DEFAULT,
3535
val iconResource: Int,
3636
val titleResource: Int,
37-
val count: Long = SIDE_MENU_COUNT_NOT_SET,
38-
val getCount: suspend () -> Long = { count },
39-
val showCount: Boolean = true,
37+
val count: Int = 0,
38+
val showCount: Boolean = false,
4039
)
41-
42-
const val SIDE_MENU_COUNT_NOT_SET = -1L

android/engine/src/main/java/org/smartregister/fhircore/engine/domain/repository/RegisterDao.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ interface RegisterDao {
4545
TODO("default")
4646
}
4747

48-
suspend fun countRegisterFiltered(appFeatureName: String? = null, filters: RegisterFilter): Long {
48+
suspend fun countRegisterFiltered(filters: RegisterFilter): Long {
4949
TODO("default")
5050
}
5151

52-
suspend fun countRegisterData(appFeatureName: String?): Long = 0
52+
suspend fun countRegisterData(): Long = 0
5353

5454
suspend fun loadProfileData(appFeatureName: String?, resourceId: String): ProfileData? = null
5555
}

android/engine/src/main/java/org/smartregister/fhircore/engine/domain/repository/RegisterRepository.kt

-2
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,11 @@ interface RegisterRepository {
3939
): List<RegisterData>
4040

4141
suspend fun countRegisterFiltered(
42-
appFeatureName: String? = null,
4342
healthModule: HealthModule,
4443
filters: RegisterFilter,
4544
): Long
4645

4746
suspend fun countRegisterData(
48-
appFeatureName: String? = null,
4947
healthModule: HealthModule = HealthModule.DEFAULT,
5048
): Long
5149

android/engine/src/main/java/org/smartregister/fhircore/engine/sync/OnSyncListener.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import com.google.android.fhir.sync.SyncJobStatus
2222
* An interface the exposes a callback method [onSync] which accepts an application level FHIR Sync
2323
* [State].
2424
*/
25-
interface OnSyncListener {
25+
fun interface OnSyncListener {
2626
/** Callback method invoked to handle sync [state] */
2727
fun onSync(state: SyncJobStatus)
2828
}

android/engine/src/main/java/org/smartregister/fhircore/engine/sync/SyncBroadcaster.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ constructor(
121121
is SyncJobStatus.Failed,
122122
is SyncJobStatus.Succeeded, -> {
123123
if (syncJobStatus is SyncJobStatus.Failed) {
124-
syncJobStatus.exceptions.forEachIndexed { _, resourceSyncException ->
124+
syncJobStatus.exceptions?.forEachIndexed { _, resourceSyncException ->
125125
Firebase.crashlytics.recordException(resourceSyncException.exception)
126126
}
127127
}

android/engine/src/test/java/org/smartregister/fhircore/engine/data/local/register/AppRegisterRepositoryTest.kt

+5-9
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,11 @@ class AppRegisterRepositoryTest : RobolectricTest() {
150150
mutableMapOf(healthModule to registerDao)
151151

152152
every { registerDaoFactory.registerDaoMap } returns registerDaoMap
153-
coEvery { registerDao.countRegisterData(appFeatureName) } returns count
153+
coEvery { registerDao.countRegisterData() } returns count
154154

155-
val result = repository.countRegisterData(appFeatureName, healthModule)
155+
val result = repository.countRegisterData(healthModule)
156156

157-
coVerify { registerDao.countRegisterData(appFeatureName) }
157+
coVerify { registerDao.countRegisterData() }
158158
assertEquals(count, result)
159159
}
160160

@@ -286,19 +286,17 @@ class AppRegisterRepositoryTest : RobolectricTest() {
286286
val healthModule = HealthModule.HOME_TRACING
287287
val homeTracingRegisterDao =
288288
mockk<HomeTracingRegisterDao>(relaxed = true) {
289-
coEvery { countRegisterFiltered(any(), any()) } returns 0
289+
coEvery { countRegisterFiltered(any()) } returns 0
290290
}
291291

292292
every { registerDaoFactory.registerDaoMap } returns
293293
mapOf(healthModule to homeTracingRegisterDao)
294294
repository.countRegisterFiltered(
295-
null,
296295
healthModule,
297296
TracingRegisterFilter(true, null, null, null),
298297
)
299298
coVerify {
300299
homeTracingRegisterDao.countRegisterFiltered(
301-
null,
302300
TracingRegisterFilter(true, null, null, null),
303301
)
304302
}
@@ -309,20 +307,18 @@ class AppRegisterRepositoryTest : RobolectricTest() {
309307
val healthModule = HealthModule.APPOINTMENT
310308
val appointmentRegisterDao =
311309
mockk<AppointmentRegisterDao>(relaxed = true) {
312-
coEvery { countRegisterFiltered(any(), any()) } returns 0
310+
coEvery { countRegisterFiltered(any()) } returns 0
313311
}
314312

315313
every { registerDaoFactory.registerDaoMap } returns
316314
mapOf(healthModule to appointmentRegisterDao)
317315
val today = Date()
318316
repository.countRegisterFiltered(
319-
null,
320317
healthModule,
321318
AppointmentRegisterFilter(today, true, null, null),
322319
)
323320
coVerify {
324321
appointmentRegisterDao.countRegisterFiltered(
325-
null,
326322
AppointmentRegisterFilter(today, true, null, null),
327323
)
328324
}

android/engine/src/test/java/org/smartregister/fhircore/engine/data/local/register/dao/TracingRegisterDaoTest.kt

+1-4
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class TracingRegisterDaoTest : RobolectricTest() {
144144
else -> emptyList()
145145
}
146146
}
147-
Assert.assertEquals(1, tracingRegisterDao.countRegisterData(appFeatureName = null))
147+
Assert.assertEquals(1, tracingRegisterDao.countRegisterData())
148148
}
149149

150150
@Test
@@ -295,7 +295,6 @@ class TracingRegisterDaoTest : RobolectricTest() {
295295
Assert.assertEquals(
296296
1,
297297
tracingRegisterDao.countRegisterFiltered(
298-
appFeatureName = null,
299298
filters =
300299
TracingRegisterFilter(
301300
isAssignedToMe = false,
@@ -308,7 +307,6 @@ class TracingRegisterDaoTest : RobolectricTest() {
308307
Assert.assertEquals(
309308
1,
310309
tracingRegisterDao.countRegisterFiltered(
311-
appFeatureName = null,
312310
filters =
313311
TracingRegisterFilter(
314312
isAssignedToMe = false,
@@ -321,7 +319,6 @@ class TracingRegisterDaoTest : RobolectricTest() {
321319
Assert.assertEquals(
322320
1,
323321
tracingRegisterDao.countRegisterFiltered(
324-
appFeatureName = null,
325322
filters =
326323
TracingRegisterFilter(
327324
isAssignedToMe = false,

android/quest/src/main/java/org/smartregister/fhircore/quest/navigation/MainNavigationScreen.kt

+22-14
Original file line numberDiff line numberDiff line change
@@ -24,70 +24,78 @@ sealed class MainNavigationScreen(
2424
val route: String,
2525
val showInBottomNav: Boolean = false,
2626
) {
27-
object Home :
27+
data object Home :
2828
MainNavigationScreen(
2929
org.smartregister.fhircore.engine.R.string.clients,
3030
org.smartregister.fhircore.engine.R.drawable.ic_home,
3131
"homeRoute",
3232
true,
3333
)
3434

35-
object Tasks :
35+
data object Counters :
36+
MainNavigationScreen(
37+
R.string.counters,
38+
org.smartregister.fhircore.engine.R.drawable.ic_reports,
39+
"countersRoute",
40+
)
41+
42+
data object Tasks :
3643
MainNavigationScreen(
3744
org.smartregister.fhircore.engine.R.string.tasks,
3845
org.smartregister.fhircore.engine.R.drawable.ic_tasks,
3946
"tasksRoute",
4047
true,
4148
)
4249

43-
object Reports :
50+
data object Reports :
4451
MainNavigationScreen(
4552
org.smartregister.fhircore.engine.R.string.reports,
4653
org.smartregister.fhircore.engine.R.drawable.ic_reports,
4754
"reportsRoute",
4855
true,
4956
)
5057

51-
object Settings :
58+
data object Settings :
5259
MainNavigationScreen(
5360
org.smartregister.fhircore.engine.R.string.settings,
5461
R.drawable.ic_settings,
5562
"settingsRoute",
5663
true,
5764
)
5865

59-
object PatientProfile :
66+
data object PatientProfile :
6067
MainNavigationScreen(
6168
titleResource = org.smartregister.fhircore.engine.R.string.profile,
6269
route = "patientProfileRoute",
6370
)
6471

65-
object TracingProfile :
72+
data object TracingProfile :
6673
MainNavigationScreen(
6774
titleResource = org.smartregister.fhircore.engine.R.string.profile,
6875
route = "tracingProfileRoute",
6976
)
7077

71-
object TransferOut : MainNavigationScreen(route = "transferOut")
78+
data object TransferOut : MainNavigationScreen(route = "transferOut")
7279

73-
object PatientGuardians : MainNavigationScreen(route = "patientProfileGuardians")
80+
data object PatientGuardians : MainNavigationScreen(route = "patientProfileGuardians")
7481

75-
object FamilyProfile : MainNavigationScreen(route = "familyProfileRoute")
82+
data object FamilyProfile : MainNavigationScreen(route = "familyProfileRoute")
7683

77-
object ViewChildContacts : MainNavigationScreen(route = "viewChildContacts")
84+
data object ViewChildContacts : MainNavigationScreen(route = "viewChildContacts")
7885

79-
object GuardianProfile : MainNavigationScreen(route = "guardianProfile")
86+
data object GuardianProfile : MainNavigationScreen(route = "guardianProfile")
8087

81-
object TracingHistory : MainNavigationScreen(route = "tracingHistory")
88+
data object TracingHistory : MainNavigationScreen(route = "tracingHistory")
8289

83-
object TracingOutcomes : MainNavigationScreen(route = "tracingOutcome")
90+
data object TracingOutcomes : MainNavigationScreen(route = "tracingOutcome")
8491

85-
object TracingHistoryDetails : MainNavigationScreen(route = "tracingHistoryDetails ")
92+
data object TracingHistoryDetails : MainNavigationScreen(route = "tracingHistoryDetails ")
8693

8794
companion object {
8895
val appScreens =
8996
listOf(
9097
Home,
98+
Counters,
9199
Tasks,
92100
Reports,
93101
Settings,

android/quest/src/main/java/org/smartregister/fhircore/quest/navigation/SideMenuOptionFactory.kt

+2-16
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,7 @@ constructor(
3838
healthModule = HealthModule.DEFAULT,
3939
iconResource = org.smartregister.fhircore.engine.R.drawable.ic_baby_mother,
4040
titleResource = R.string.all_clients,
41-
showCount = true,
42-
getCount =
43-
suspend {
44-
registerRepository.countRegisterData(
45-
appFeatureName = AppFeature.PatientManagement.name,
46-
healthModule = HealthModule.DEFAULT,
47-
)
48-
},
41+
showCount = false,
4942
)
5043

5144
fun retrieveSideMenuOptions(): List<SideMenuOption> {
@@ -81,14 +74,7 @@ constructor(
8174
HealthModule.FAMILY_PLANNING -> R.string.family_planning_clients
8275
else -> 0
8376
},
84-
showCount = true,
85-
getCount =
86-
suspend {
87-
registerRepository.countRegisterData(
88-
appFeatureName = it.feature,
89-
healthModule = it.healthModule!!,
90-
)
91-
},
77+
showCount = false,
9278
)
9379
}
9480
return sideMenuOptions.ifEmpty { listOf(defaultSideMenu) }

0 commit comments

Comments
 (0)