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
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import org.dhis2.usescases.settings.domain.CheckVersionUpdate
import org.dhis2.usescases.settings.domain.DeleteLocalData
import org.dhis2.usescases.settings.domain.ExportDatabase
import org.dhis2.usescases.settings.domain.GetSettingsState
import org.dhis2.usescases.settings.domain.GetSyncErrors
import org.dhis2.usescases.settings.domain.LaunchSync
import org.dhis2.usescases.settings.domain.SettingsMessages
import org.dhis2.usescases.settings.domain.UpdateSmsModule
Expand All @@ -21,7 +20,6 @@ class SettingsViewModelFactory(
private val getSettingsState: GetSettingsState,
private val updateSyncSettings: UpdateSyncSettings,
private val updateSmsResponse: UpdateSmsResponse,
private val getSyncErrors: GetSyncErrors,
private val updateSmsModule: UpdateSmsModule,
private val deleteLocalData: DeleteLocalData,
private val exportDatabase: ExportDatabase,
Expand All @@ -37,7 +35,6 @@ class SettingsViewModelFactory(
getSettingsState = getSettingsState,
updateSyncSettings = updateSyncSettings,
updateSmsResponse = updateSmsResponse,
getSyncErrors = getSyncErrors,
updateSmsModule = updateSmsModule,
deleteLocalData = deleteLocalData,
exportDatabase = exportDatabase,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import org.dhis2.mobile.login.authentication.TwoFASettingsActivity
import org.dhis2.mobile.sync.data.SyncBackgroundJobAction
import org.dhis2.usescases.general.FragmentGlobalAbstract
import org.dhis2.usescases.reservedValue.ReservedValueActivity
import org.dhis2.usescases.settings.models.ErrorViewModel
import org.dhis2.usescases.settings.ui.SettingsScreen
import org.dhis2.usescases.settingsprogram.SettingsProgramActivity
import org.hisp.dhis.mobile.ui.designsystem.theme.DHIS2Theme
Expand Down Expand Up @@ -80,7 +79,6 @@ class SyncManagerFragment : FragmentGlobalAbstract() {
null,
)
},
showErrorLogs = ::showSyncErrors,
showShareActions = ::shareDB,
display2FASettingsScreen = ::display2FASettingsScreen,
)
Expand All @@ -101,12 +99,6 @@ class SyncManagerFragment : FragmentGlobalAbstract() {
presenter.closeChannel()
}

private fun showSyncErrors(data: List<ErrorViewModel>) {
ErrorDialog()
.setData(data)
.show(getChildFragmentManager().beginTransaction(), ErrorDialog.TAG)
}

private fun shareDB(fileToShare: File) {
val contentUri =
FileProvider.getUriForFile(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ class SyncManagerModule(
getSettingsState: GetSettingsState,
updateSyncSettings: UpdateSyncSettings,
updateSmsResponse: UpdateSmsResponse,
getSyncErrors: GetSyncErrors,
updateSmsModule: UpdateSmsModule,
deleteLocalData: DeleteLocalData,
exportDatabase: ExportDatabase,
Expand All @@ -60,7 +59,6 @@ class SyncManagerModule(
getSettingsState,
updateSyncSettings,
updateSmsResponse,
getSyncErrors,
updateSmsModule,
deleteLocalData,
exportDatabase,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,13 @@ import org.dhis2.usescases.settings.domain.CheckVersionUpdate
import org.dhis2.usescases.settings.domain.DeleteLocalData
import org.dhis2.usescases.settings.domain.ExportDatabase
import org.dhis2.usescases.settings.domain.GetSettingsState
import org.dhis2.usescases.settings.domain.GetSyncErrors
import org.dhis2.usescases.settings.domain.LaunchSync
import org.dhis2.usescases.settings.domain.SettingsMessages
import org.dhis2.usescases.settings.domain.UpdateSmsModule
import org.dhis2.usescases.settings.domain.UpdateSmsResponse
import org.dhis2.usescases.settings.domain.UpdateSyncSettings
import org.dhis2.usescases.settings.models.AccountType
import org.dhis2.usescases.settings.models.DeleteDataState
import org.dhis2.usescases.settings.models.ErrorViewModel
import org.dhis2.usescases.settings.models.SettingsState
import org.dhis2.usescases.settings.models.SyncStateInput
import org.hisp.dhis.android.core.settings.LimitScope
Expand All @@ -39,7 +37,6 @@ class SyncManagerPresenter(
private val getSettingsState: GetSettingsState,
private val updateSyncSettings: UpdateSyncSettings,
private val updateSmsResponse: UpdateSmsResponse,
private val getSyncErrors: GetSyncErrors,
private val updateSmsModule: UpdateSmsModule,
private val deleteLocalData: DeleteLocalData,
private val exportDatabase: ExportDatabase,
Expand Down Expand Up @@ -67,9 +64,6 @@ class SyncManagerPresenter(

val messageChannel = settingsMessages.messageChannel

private val _errorLogChannel = Channel<List<ErrorViewModel>>(Channel.RENDEZVOUS)
val errorLogChannel = _errorLogChannel.receiveAsFlow()

private val _fileToShareChannel = Channel<File>()
val fileToShareChannel = _fileToShareChannel.receiveAsFlow()

Expand Down Expand Up @@ -350,13 +344,6 @@ class SyncManagerPresenter(
}
}

fun checkSyncErrors() {
onItemClick(SettingItem.ERROR_LOG)
viewModelScope.launch(dispatcherProvider.io()) {
_errorLogChannel.send(getSyncErrors.invokeLegacy())
}
}

fun onExportAndShareDB() {
exportDB(ExportDatabase.ExportType.Share)
}
Expand Down Expand Up @@ -392,7 +379,6 @@ class SyncManagerPresenter(

fun closeChannel() {
settingsMessages.close()
_errorLogChannel.close()
}

private fun getTwoFAStatus() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
Expand All @@ -28,7 +30,6 @@ import org.dhis2.usescases.settings.SettingItem
import org.dhis2.usescases.settings.SyncManagerPresenter
import org.dhis2.usescases.settings.models.AccountType
import org.dhis2.usescases.settings.models.DeleteDataState
import org.dhis2.usescases.settings.models.ErrorViewModel
import org.dhis2.usescases.settings.models.SettingsState
import org.dhis2.usescases.settings.models.SettingsUiAction
import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing
Expand All @@ -46,24 +47,20 @@ fun SettingsScreen(
viewmodel: SyncManagerPresenter,
checkProgramSpecificSettings: () -> Unit,
manageReserveValues: () -> Unit,
showErrorLogs: (List<ErrorViewModel>) -> Unit,
showShareActions: (file: File) -> Unit,
display2FASettingsScreen: () -> Unit,
) {
val settingsUIModel by viewmodel.settingsState.collectAsState()
val exportingDatabase by viewmodel.exporting.observeAsState(false)
val snackbarHostState = remember { SnackbarHostState() }
var showErrorLog by remember { mutableStateOf(false) }

LaunchedEffect(viewmodel.messageChannel) {
viewmodel.messageChannel.collect { message ->
snackbarHostState.showSnackbar(message)
}
}

LaunchedEffect(viewmodel.errorLogChannel) {
viewmodel.errorLogChannel.collect { showErrorLogs(it) }
}

LaunchedEffect(viewmodel.fileToShareChannel) {
viewmodel.fileToShareChannel.collect { showShareActions(it) }
}
Expand Down Expand Up @@ -104,7 +101,9 @@ fun SettingsScreen(

SettingsUiAction.OnSpecificProgramSettingsClick -> checkProgramSpecificSettings()
SettingsUiAction.OnManageReserveValues -> manageReserveValues()
SettingsUiAction.OnOpenErrorLog -> viewmodel.checkSyncErrors()
SettingsUiAction.OnOpenErrorLog -> {
showErrorLog = true
}
SettingsUiAction.OnOpenTwoFASettings -> {
viewmodel.onItemClick(SettingItem.TWO_FACTOR_AUTH)
display2FASettingsScreen()
Expand Down Expand Up @@ -160,6 +159,12 @@ fun SettingsScreen(
}
}
}

if (showErrorLog) {
SyncErrorLogDialog {
showErrorLog = false
}
}
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ class SettingsIntegrationTest {
getSettingsState = getSettingsState,
updateSyncSettings = updateSyncSettings,
updateSmsResponse = updateSmsResponse,
getSyncErrors = getSyncErrors,
updateSmsModule = updateSmsModule,
deleteLocalData = deleteLocalData,
exportDatabase = exportDatabase,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.setMain
import org.dhis2.bindings.toDate
import org.dhis2.commons.Constants
import org.dhis2.commons.network.NetworkUtils
import org.dhis2.commons.viewmodel.DispatcherProvider
Expand All @@ -22,15 +21,13 @@ import org.dhis2.usescases.settings.domain.CheckVersionUpdate
import org.dhis2.usescases.settings.domain.DeleteLocalData
import org.dhis2.usescases.settings.domain.ExportDatabase
import org.dhis2.usescases.settings.domain.GetSettingsState
import org.dhis2.usescases.settings.domain.GetSyncErrors
import org.dhis2.usescases.settings.domain.LaunchSync
import org.dhis2.usescases.settings.domain.SettingsMessages
import org.dhis2.usescases.settings.domain.UpdateSmsModule
import org.dhis2.usescases.settings.domain.UpdateSmsResponse
import org.dhis2.usescases.settings.domain.UpdateSyncSettings
import org.dhis2.usescases.settings.models.AccountType
import org.dhis2.usescases.settings.models.DataSettingsViewModel
import org.dhis2.usescases.settings.models.ErrorViewModel
import org.dhis2.usescases.settings.models.MetadataSettingsViewModel
import org.dhis2.usescases.settings.models.ReservedValueSettingsViewModel
import org.dhis2.usescases.settings.models.SMSSettingsViewModel
Expand Down Expand Up @@ -68,7 +65,6 @@ class SyncManagerPresenterTest {
private val getSettingsState: GetSettingsState = mock()
private val updateSyncSettings: UpdateSyncSettings = mock()
private val updateSmsResponse: UpdateSmsResponse = mock()
private val getSyncErrors: GetSyncErrors = mock()
private val settingMessages: SettingsMessages =
mock {
on { messageChannel } doReturn Channel<String>().receiveAsFlow()
Expand Down Expand Up @@ -100,7 +96,6 @@ class SyncManagerPresenterTest {
getSettingsState = getSettingsState,
updateSyncSettings = updateSyncSettings,
updateSmsResponse = updateSmsResponse,
getSyncErrors = getSyncErrors,
updateSmsModule = updateSmsModule,
deleteLocalData = deleteLocalData,
exportDatabase = exportDatabase,
Expand Down Expand Up @@ -435,40 +430,6 @@ class SyncManagerPresenterTest {
verify(exportDatabase, times(1)).invoke()
}

@Test
fun `Should load sync errors`() =
runTest {
val testingList =
listOf(
ErrorViewModel(
creationDate = "2025-03-02T00:00:00.00Z".toDate(),
errorCode = "1",
errorDescription = "d2 error",
errorComponent = null,
),
ErrorViewModel(
creationDate = "2025-03-05T00:00:00.00Z".toDate(),
errorCode = "2",
errorDescription = "conflict",
errorComponent = null,
),
ErrorViewModel(
creationDate = "2025-03-01T00:00:00.00Z".toDate(),
errorCode = "3",
errorDescription = "fk",
errorComponent = null,
),
)
whenever(getSyncErrors.invokeLegacy()) doReturn testingList

presenter.errorLogChannel.test {
presenter.checkSyncErrors()
val item = awaitItem()
assertTrue(item == testingList)
cancelAndIgnoreRemainingEvents()
}
}

@Test
fun shouldUpdateSyncStatus() =
runTest {
Expand Down
Loading