diff --git a/collect_app/src/androidTest/java/org/odk/collect/android/support/rules/FormEntryActivityTestRule.kt b/collect_app/src/androidTest/java/org/odk/collect/android/support/rules/FormEntryActivityTestRule.kt index 19ab89287d7..c8bf44ca0ac 100644 --- a/collect_app/src/androidTest/java/org/odk/collect/android/support/rules/FormEntryActivityTestRule.kt +++ b/collect_app/src/androidTest/java/org/odk/collect/android/support/rules/FormEntryActivityTestRule.kt @@ -89,7 +89,7 @@ open class FormEntryActivityTestRule : val form = DaggerUtils.getComponent(application).formsRepositoryProvider().create() .getOneByPath(formPath) val projectId = DaggerUtils.getComponent(application).currentProjectProvider() - .getCurrentProject().uuid + .requireCurrentProject().uuid return FormFillingIntentFactory.newInstanceIntent( application, @@ -106,7 +106,7 @@ open class FormEntryActivityTestRule : val instance = DaggerUtils.getComponent(application).instancesRepositoryProvider().create() .getAllByFormId(form!!.formId).first() val projectId = DaggerUtils.getComponent(application).currentProjectProvider() - .getCurrentProject().uuid + .requireCurrentProject().uuid return FormFillingIntentFactory.editInstanceIntent( application, diff --git a/collect_app/src/main/java/org/odk/collect/android/activities/DeleteFormsActivity.kt b/collect_app/src/main/java/org/odk/collect/android/activities/DeleteFormsActivity.kt index 34824f22035..2c8444cbd4b 100644 --- a/collect_app/src/main/java/org/odk/collect/android/activities/DeleteFormsActivity.kt +++ b/collect_app/src/main/java/org/odk/collect/android/activities/DeleteFormsActivity.kt @@ -60,7 +60,7 @@ class DeleteFormsActivity : LocalizedActivity() { override fun onCreate(savedInstanceState: Bundle?) { DaggerUtils.getComponent(this).inject(this) - val projectId = projectsDataService.getCurrentProject().uuid + val projectId = projectsDataService.requireCurrentProject().uuid val projectDependencyModule = projectDependencyModuleFactory.create(projectId) val viewModelFactory = ViewModelFactory( diff --git a/collect_app/src/main/java/org/odk/collect/android/activities/FormDownloadListActivity.java b/collect_app/src/main/java/org/odk/collect/android/activities/FormDownloadListActivity.java index d5faebd28f5..655f4e069ec 100644 --- a/collect_app/src/main/java/org/odk/collect/android/activities/FormDownloadListActivity.java +++ b/collect_app/src/main/java/org/odk/collect/android/activities/FormDownloadListActivity.java @@ -395,7 +395,7 @@ private void startFormsDownload(@NonNull ArrayList filesToDow // show dialog box DialogFragmentUtils.showIfNotShowing(RefreshFormListDialogFragment.class, getSupportFragmentManager()); - downloadFormsTask = new DownloadFormsTask(projectsDataService.getCurrentProject().getUuid(), formsDataService); + downloadFormsTask = new DownloadFormsTask(projectsDataService.requireCurrentProject().getUuid(), formsDataService); downloadFormsTask.setDownloaderListener(this); if (viewModel.getUrl() != null) { diff --git a/collect_app/src/main/java/org/odk/collect/android/activities/FormEntryViewModelFactory.kt b/collect_app/src/main/java/org/odk/collect/android/activities/FormEntryViewModelFactory.kt index 484d0ab7ae2..88f02ebd42e 100644 --- a/collect_app/src/main/java/org/odk/collect/android/activities/FormEntryViewModelFactory.kt +++ b/collect_app/src/main/java/org/odk/collect/android/activities/FormEntryViewModelFactory.kt @@ -67,7 +67,7 @@ class FormEntryViewModelFactory( modelClass: Class, handle: SavedStateHandle ): T { - val projectId = projectsDataService.getCurrentProject().uuid + val projectId = projectsDataService.requireCurrentProject().uuid return when (modelClass) { FormEntryViewModel::class.java -> FormEntryViewModel( diff --git a/collect_app/src/main/java/org/odk/collect/android/activities/FormFillingActivity.java b/collect_app/src/main/java/org/odk/collect/android/activities/FormFillingActivity.java index f83cfc49b68..6393fe83560 100644 --- a/collect_app/src/main/java/org/odk/collect/android/activities/FormFillingActivity.java +++ b/collect_app/src/main/java/org/odk/collect/android/activities/FormFillingActivity.java @@ -2103,7 +2103,7 @@ private void finishAndReturnInstance() { String path = getAbsoluteInstancePath(); if (path != null) { if (formSaveViewModel.getInstance() != null) { - uri = InstancesContract.getUri(projectsDataService.getCurrentProject().getUuid(), formSaveViewModel.getInstance().getDbId()); + uri = InstancesContract.getUri(projectsDataService.requireCurrentProject().getUuid(), formSaveViewModel.getInstance().getDbId()); } } diff --git a/collect_app/src/main/java/org/odk/collect/android/activities/FormMapActivity.kt b/collect_app/src/main/java/org/odk/collect/android/activities/FormMapActivity.kt index 7a69362cdad..434a22e613f 100644 --- a/collect_app/src/main/java/org/odk/collect/android/activities/FormMapActivity.kt +++ b/collect_app/src/main/java/org/odk/collect/android/activities/FormMapActivity.kt @@ -88,9 +88,9 @@ class FormMapActivity : LocalizedActivity() { ) { _: String?, result: Bundle -> if (result.containsKey(SelectionMapFragment.RESULT_SELECTED_ITEM)) { val instanceId = result.getLong(SelectionMapFragment.RESULT_SELECTED_ITEM) - startActivity(FormFillingIntentFactory.editInstanceIntent(this, projectsDataService.getCurrentProject().uuid, instanceId)) + startActivity(FormFillingIntentFactory.editInstanceIntent(this, projectsDataService.requireCurrentProject().uuid, instanceId)) } else if (result.containsKey(SelectionMapFragment.RESULT_CREATE_NEW_ITEM)) { - startActivity(FormFillingIntentFactory.newInstanceIntent(this, FormsContract.getUri(projectsDataService.getCurrentProject().uuid, formId))) + startActivity(FormFillingIntentFactory.newInstanceIntent(this, FormsContract.getUri(projectsDataService.requireCurrentProject().uuid, formId))) } } } diff --git a/collect_app/src/main/java/org/odk/collect/android/activities/InstanceChooserList.java b/collect_app/src/main/java/org/odk/collect/android/activities/InstanceChooserList.java index 5415d91590c..53d6603a454 100644 --- a/collect_app/src/main/java/org/odk/collect/android/activities/InstanceChooserList.java +++ b/collect_app/src/main/java/org/odk/collect/android/activities/InstanceChooserList.java @@ -157,7 +157,7 @@ public void onCreate(Bundle savedInstanceState) { init(); BulkFinalizationViewModel bulkFinalizationViewModel = new BulkFinalizationViewModel( - projectsDataService.getCurrentProject().getUuid(), + projectsDataService.requireCurrentProject().getUuid(), scheduler, instancesDataService, settingsProvider @@ -198,7 +198,7 @@ public void onItemClick(AdapterView parent, View view, int position, long id) if (view.isEnabled()) { Cursor c = (Cursor) listView.getAdapter().getItem(position); long instanceId = c.getLong(c.getColumnIndex(DatabaseInstanceColumns._ID)); - Uri instanceUri = InstancesContract.getUri(projectsDataService.getCurrentProject().getUuid(), instanceId); + Uri instanceUri = InstancesContract.getUri(projectsDataService.requireCurrentProject().getUuid(), instanceId); String action = getIntent().getAction(); if (Intent.ACTION_PICK.equals(action)) { diff --git a/collect_app/src/main/java/org/odk/collect/android/application/Collect.java b/collect_app/src/main/java/org/odk/collect/android/application/Collect.java index d064066a8d9..bde0571e098 100644 --- a/collect_app/src/main/java/org/odk/collect/android/application/Collect.java +++ b/collect_app/src/main/java/org/odk/collect/android/application/Collect.java @@ -299,7 +299,7 @@ public EntitiesDependencyComponent getEntitiesDependencyComponent() { @NonNull @Override public EntitiesRepository providesEntitiesRepository() { - String projectId = applicationComponent.currentProjectProvider().getCurrentProject().getUuid(); + String projectId = applicationComponent.currentProjectProvider().requireCurrentProject().getUuid(); return applicationComponent.entitiesRepositoryProvider().create(projectId); } diff --git a/collect_app/src/main/java/org/odk/collect/android/application/initialization/JavaRosaInitializer.kt b/collect_app/src/main/java/org/odk/collect/android/application/initialization/JavaRosaInitializer.kt index 146409785d4..d586c4a8633 100644 --- a/collect_app/src/main/java/org/odk/collect/android/application/initialization/JavaRosaInitializer.kt +++ b/collect_app/src/main/java/org/odk/collect/android/application/initialization/JavaRosaInitializer.kt @@ -53,7 +53,7 @@ class JavaRosaInitializer( XFormUtils.setXFormParserFactory(dynamicPreloadXFormParserFactory) val localEntitiesExternalInstanceParserFactory = LocalEntitiesExternalInstanceParserFactory( - { entitiesRepositoryProvider.create(projectsDataService.getCurrentProject().uuid) }, + { entitiesRepositoryProvider.create(projectsDataService.requireCurrentProject().uuid) }, { settingsProvider.getUnprotectedSettings().getBoolean(ProjectKeys.KEY_LOCAL_ENTITIES) } ) diff --git a/collect_app/src/main/java/org/odk/collect/android/configure/qr/AppConfigurationGenerator.kt b/collect_app/src/main/java/org/odk/collect/android/configure/qr/AppConfigurationGenerator.kt index 91121ab5ce7..6582b951519 100644 --- a/collect_app/src/main/java/org/odk/collect/android/configure/qr/AppConfigurationGenerator.kt +++ b/collect_app/src/main/java/org/odk/collect/android/configure/qr/AppConfigurationGenerator.kt @@ -81,7 +81,7 @@ class AppConfigurationGenerator( } private fun getProjectDetailsAsJson(): JSONObject { - val currentProject = projectsDataService.getCurrentProject() + val currentProject = projectsDataService.requireCurrentProject() return JSONObject().apply { put(AppConfigurationKeys.PROJECT_NAME, currentProject.name) diff --git a/collect_app/src/main/java/org/odk/collect/android/configure/qr/QRCodeScannerFragment.kt b/collect_app/src/main/java/org/odk/collect/android/configure/qr/QRCodeScannerFragment.kt index a5026a1575e..1bb9baf6557 100644 --- a/collect_app/src/main/java/org/odk/collect/android/configure/qr/QRCodeScannerFragment.kt +++ b/collect_app/src/main/java/org/odk/collect/android/configure/qr/QRCodeScannerFragment.kt @@ -38,18 +38,18 @@ class QRCodeScannerFragment : BarCodeScannerFragment() { @Throws(IOException::class, DataFormatException::class) override fun handleScanningResult(result: BarcodeResult) { - val oldProjectName = projectsDataService.getCurrentProject().name + val oldProjectName = projectsDataService.requireCurrentProject().name val settingsImportingResult = settingsImporter.fromJSON( CompressionUtils.decompress(result.text), - projectsDataService.getCurrentProject() + projectsDataService.requireCurrentProject() ) when (settingsImportingResult) { SettingsImportingResult.SUCCESS -> { Analytics.log(AnalyticsEvents.RECONFIGURE_PROJECT) - val newProjectName = projectsDataService.getCurrentProject().name + val newProjectName = projectsDataService.requireCurrentProject().name if (newProjectName != oldProjectName) { File(storagePathProvider.getProjectRootDirPath() + File.separator + oldProjectName).delete() File(storagePathProvider.getProjectRootDirPath() + File.separator + newProjectName).createNewFile() diff --git a/collect_app/src/main/java/org/odk/collect/android/configure/qr/QRCodeTabsActivity.kt b/collect_app/src/main/java/org/odk/collect/android/configure/qr/QRCodeTabsActivity.kt index dbcaf79c589..2278b98207d 100644 --- a/collect_app/src/main/java/org/odk/collect/android/configure/qr/QRCodeTabsActivity.kt +++ b/collect_app/src/main/java/org/odk/collect/android/configure/qr/QRCodeTabsActivity.kt @@ -64,7 +64,7 @@ class QRCodeTabsActivity : LocalizedActivity() { this, settingsImporter, qrCodeDecoder, - projectsDataService.getCurrentProject() + projectsDataService.requireCurrentProject() ) val menuProvider = QRCodeMenuProvider( diff --git a/collect_app/src/main/java/org/odk/collect/android/dao/CursorLoaderFactory.java b/collect_app/src/main/java/org/odk/collect/android/dao/CursorLoaderFactory.java index c19ada34d27..358c6d7d669 100644 --- a/collect_app/src/main/java/org/odk/collect/android/dao/CursorLoaderFactory.java +++ b/collect_app/src/main/java/org/odk/collect/android/dao/CursorLoaderFactory.java @@ -119,7 +119,7 @@ public CursorLoader createCompletedUndeletedInstancesCursorLoader(CharSequence c } private CursorLoader getInstancesCursorLoader(String selection, String[] selectionArgs, String sortOrder) { - Uri uri = InstancesContract.getUri(projectsDataService.getCurrentProject().getUuid()); + Uri uri = InstancesContract.getUri(projectsDataService.requireCurrentProject().getUuid()); return new CursorLoader( Collect.getInstance(), diff --git a/collect_app/src/main/java/org/odk/collect/android/external/FormUriActivity.kt b/collect_app/src/main/java/org/odk/collect/android/external/FormUriActivity.kt index 7e2bd0a6601..0dc92919fe1 100644 --- a/collect_app/src/main/java/org/odk/collect/android/external/FormUriActivity.kt +++ b/collect_app/src/main/java/org/odk/collect/android/external/FormUriActivity.kt @@ -123,7 +123,7 @@ class FormUriActivity : LocalizedActivity() { val uri = intent.data!! val uriMimeType = contentResolver.getType(uri)!! if (uriMimeType == FormsContract.CONTENT_ITEM_TYPE) { - startForm(FormsContract.getUri(projectsDataService.getCurrentProject().uuid, savepoint.formDbId)) + startForm(FormsContract.getUri(projectsDataService.requireCurrentProject().uuid, savepoint.formDbId)) } else { startForm(intent.data!!) } @@ -224,7 +224,7 @@ private class FormUriViewModel( val uriProjectId = uri?.getQueryParameter("projectId") val projectId = uriProjectId ?: firstProject.uuid - return if (projectId != projectsDataService.getCurrentProject().uuid) { + return if (projectId != projectsDataService.requireCurrentProject().uuid) { resources.getString(string.wrong_project_selected_for_form) } else { null @@ -321,7 +321,7 @@ private class FormUriViewModel( private fun assertDoesNotUseEntitiesOrFormsUpdateNotInProgress(): String? { val uriMimeType = contentResolver.getType(uri!!) - val projectId = projectsDataService.getCurrentProject().uuid + val projectId = projectsDataService.requireCurrentProject().uuid if (intent.extras?.getString(ApplicationConstants.BundleKeys.FORM_MODE) == ApplicationConstants.FormModes.VIEW_SENT) { return null diff --git a/collect_app/src/main/java/org/odk/collect/android/formentry/saving/FormSaveViewModel.java b/collect_app/src/main/java/org/odk/collect/android/formentry/saving/FormSaveViewModel.java index 7b698702c6f..e454cd48e88 100644 --- a/collect_app/src/main/java/org/odk/collect/android/formentry/saving/FormSaveViewModel.java +++ b/collect_app/src/main/java/org/odk/collect/android/formentry/saving/FormSaveViewModel.java @@ -249,7 +249,7 @@ public void onComplete(SaveToDiskResult saveToDiskResult) { handleTaskResult(saveToDiskResult, saveRequest); clearMediaFiles(); } - }, new ArrayList<>(originalFiles.values()), projectsDataService.getCurrentProject().getUuid(), entitiesRepository, instancesRepository).execute(); + }, new ArrayList<>(originalFiles.values()), projectsDataService.requireCurrentProject().getUuid(), entitiesRepository, instancesRepository).execute(); } private void handleTaskResult(SaveToDiskResult taskResult, SaveRequest saveRequest) { @@ -273,7 +273,7 @@ private void handleTaskResult(SaveToDiskResult taskResult, SaveRequest saveReque formController.getAuditEventLogger().logEvent(AuditEvent.AuditEventType.FORM_EXIT, false, clock.get()); formController.getAuditEventLogger().logEvent(AuditEvent.AuditEventType.FORM_FINALIZE, true, clock.get()); - instancesDataService.instanceFinalized(projectsDataService.getCurrentProject().getUuid(), form); + instancesDataService.instanceFinalized(projectsDataService.requireCurrentProject().getUuid(), form); } else { formController.getAuditEventLogger().logEvent(AuditEvent.AuditEventType.FORM_EXIT, true, clock.get()); } diff --git a/collect_app/src/main/java/org/odk/collect/android/injection/config/AppDependencyModule.java b/collect_app/src/main/java/org/odk/collect/android/injection/config/AppDependencyModule.java index dc4ae97ab5a..e2dfbf89696 100644 --- a/collect_app/src/main/java/org/odk/collect/android/injection/config/AppDependencyModule.java +++ b/collect_app/src/main/java/org/odk/collect/android/injection/config/AppDependencyModule.java @@ -335,7 +335,7 @@ public QRCodeDecoder providesQRCodeDecoder() { @Provides public ServerFormsDetailsFetcher providesServerFormDetailsFetcher(FormsRepositoryProvider formsRepositoryProvider, FormSourceProvider formSourceProvider, ProjectsDataService projectsDataService) { - Project.Saved currentProject = projectsDataService.getCurrentProject(); + Project.Saved currentProject = projectsDataService.requireCurrentProject(); FormsRepository formsRepository = formsRepositoryProvider.create(currentProject.getUuid()); return new ServerFormsDetailsFetcher(formsRepository, formSourceProvider.create(currentProject.getUuid())); } @@ -425,7 +425,7 @@ public UUIDGenerator providesUUIDGenerator() { public InstancesDataService providesInstancesDataService(Application application, ProjectsDataService projectsDataService, InstanceSubmitScheduler instanceSubmitScheduler, ProjectDependencyModuleFactory projectsDependencyProviderFactory, Notifier notifier, PropertyManager propertyManager, OpenRosaHttpInterface httpInterface) { Function0 onUpdate = () -> { application.getContentResolver().notifyChange( - InstancesContract.getUri(projectsDataService.getCurrentProject().getUuid()), + InstancesContract.getUri(projectsDataService.requireCurrentProject().getUuid()), null ); @@ -551,7 +551,7 @@ public ProjectDeleter providesProjectDeleter(ProjectsRepository projectsReposito @Provides public ProjectResetter providesProjectResetter(StoragePathProvider storagePathProvider, PropertyManager propertyManager, SettingsProvider settingsProvider, FormsRepositoryProvider formsRepositoryProvider, SavepointsRepositoryProvider savepointsRepositoryProvider, InstancesDataService instancesDataService, ProjectsDataService projectsDataService) { - return new ProjectResetter(storagePathProvider, propertyManager, settingsProvider, formsRepositoryProvider, savepointsRepositoryProvider, instancesDataService, projectsDataService.getCurrentProject().getUuid()); + return new ProjectResetter(storagePathProvider, propertyManager, settingsProvider, formsRepositoryProvider, savepointsRepositoryProvider, instancesDataService, projectsDataService.requireCurrentProject().getUuid()); } @Provides @@ -603,7 +603,7 @@ public ImageLoader providesImageLoader() { @Provides public BlankFormListViewModel.Factory providesBlankFormListViewModel(FormsRepositoryProvider formsRepositoryProvider, InstancesRepositoryProvider instancesRepositoryProvider, Application application, FormsDataService formsDataService, Scheduler scheduler, SettingsProvider settingsProvider, ChangeLockProvider changeLockProvider, ProjectsDataService projectsDataService) { - return new BlankFormListViewModel.Factory(instancesRepositoryProvider.create(), application, formsDataService, scheduler, settingsProvider.getUnprotectedSettings(), projectsDataService.getCurrentProject().getUuid()); + return new BlankFormListViewModel.Factory(instancesRepositoryProvider.create(), application, formsDataService, scheduler, settingsProvider.getUnprotectedSettings(), projectsDataService.requireCurrentProject().getUuid()); } @Provides @@ -614,7 +614,7 @@ public ImageCompressionController providesImageCompressorManager() { @Provides public FormLoaderTask.FormEntryControllerFactory formEntryControllerFactory(ProjectsDataService projectsDataService, EntitiesRepositoryProvider entitiesRepositoryProvider, SettingsProvider settingsProvider) { - String projectId = projectsDataService.getCurrentProject().getUuid(); + String projectId = projectsDataService.requireCurrentProject().getUuid(); EntitiesRepository entitiesRepository = entitiesRepositoryProvider.create(projectId); return new CollectFormEntryControllerFactory(entitiesRepository, settingsProvider.getUnprotectedSettings(projectId)); } diff --git a/collect_app/src/main/java/org/odk/collect/android/instancemanagement/InstanceDiskSynchronizer.java b/collect_app/src/main/java/org/odk/collect/android/instancemanagement/InstanceDiskSynchronizer.java index 912c59e9455..de406e8e7c2 100644 --- a/collect_app/src/main/java/org/odk/collect/android/instancemanagement/InstanceDiskSynchronizer.java +++ b/collect_app/src/main/java/org/odk/collect/android/instancemanagement/InstanceDiskSynchronizer.java @@ -194,7 +194,7 @@ private void encryptInstance(Instance instance) throws EncryptionException, IOEx String instancePath = instance.getInstanceFilePath(); File instanceXml = new File(instancePath); if (!new File(instanceXml.getParentFile(), "submission.xml.enc").exists()) { - Uri uri = InstancesContract.getUri(projectsDataService.getCurrentProject().getUuid(), instance.getDbId()); + Uri uri = InstancesContract.getUri(projectsDataService.requireCurrentProject().getUuid(), instance.getDbId()); InstanceMetadata instanceMetadata = new InstanceMetadata(getInstanceIdFromInstance(instancePath), null, null); EncryptionUtils.EncryptedFormInformation formInfo = EncryptionUtils.getEncryptedFormInformation(uri, instanceMetadata); diff --git a/collect_app/src/main/java/org/odk/collect/android/instancemanagement/send/InstanceUploaderListActivity.java b/collect_app/src/main/java/org/odk/collect/android/instancemanagement/send/InstanceUploaderListActivity.java index b7339bb73a7..648c4950955 100644 --- a/collect_app/src/main/java/org/odk/collect/android/instancemanagement/send/InstanceUploaderListActivity.java +++ b/collect_app/src/main/java/org/odk/collect/android/instancemanagement/send/InstanceUploaderListActivity.java @@ -257,7 +257,7 @@ void init() { private void updateAutoSendStatus() { // This shouldn't use WorkManager directly but it's likely this code will be removed when // we eventually move sending forms to a Foreground Service (rather than a blocking AsyncTask) - String tag = ((FormUpdateAndInstanceSubmitScheduler) instanceSubmitScheduler).getAutoSendTag(projectsDataService.getCurrentProject().getUuid()); + String tag = ((FormUpdateAndInstanceSubmitScheduler) instanceSubmitScheduler).getAutoSendTag(projectsDataService.requireCurrentProject().getUuid()); LiveData> statuses = WorkManager.getInstance().getWorkInfosForUniqueWorkLiveData(tag); statuses.observe(this, workStatuses -> { if (workStatuses != null) { @@ -379,7 +379,7 @@ public void onItemClick(AdapterView parent, View view, int position, long row ToastUtils.showLongToast(this, org.odk.collect.strings.R.string.encrypted_form); } else { long instanceId = c.getLong(c.getColumnIndex(DatabaseInstanceColumns._ID)); - Intent intent = FormFillingIntentFactory.editInstanceIntent(this, projectsDataService.getCurrentProject().getUuid(), instanceId); + Intent intent = FormFillingIntentFactory.editInstanceIntent(this, projectsDataService.requireCurrentProject().getUuid(), instanceId); startActivity(intent); } } diff --git a/collect_app/src/main/java/org/odk/collect/android/mainmenu/CurrentProjectViewModel.kt b/collect_app/src/main/java/org/odk/collect/android/mainmenu/CurrentProjectViewModel.kt index 383a93749da..a0aaeff908c 100644 --- a/collect_app/src/main/java/org/odk/collect/android/mainmenu/CurrentProjectViewModel.kt +++ b/collect_app/src/main/java/org/odk/collect/android/mainmenu/CurrentProjectViewModel.kt @@ -15,7 +15,7 @@ class CurrentProjectViewModel( projectsDataService.update() } - val currentProject = projectsDataService.getCurrentProjectFlow().asLiveData() + val currentProject = projectsDataService.getCurrentProject().asLiveData() fun setCurrentProject(project: Project.Saved) { Analytics.log(AnalyticsEvents.SWITCH_PROJECT) @@ -23,12 +23,7 @@ class CurrentProjectViewModel( } fun hasCurrentProject(): Boolean { - return try { - projectsDataService.getCurrentProject() - true - } catch (e: IllegalStateException) { - false - } + return projectsDataService.getCurrentProject().value != null } fun refresh() { diff --git a/collect_app/src/main/java/org/odk/collect/android/mainmenu/MainMenuViewModel.kt b/collect_app/src/main/java/org/odk/collect/android/mainmenu/MainMenuViewModel.kt index 901f34018a2..322f330237a 100644 --- a/collect_app/src/main/java/org/odk/collect/android/mainmenu/MainMenuViewModel.kt +++ b/collect_app/src/main/java/org/odk/collect/android/mainmenu/MainMenuViewModel.kt @@ -111,12 +111,12 @@ class MainMenuViewModel( fun refreshInstances() { scheduler.immediate({ InstanceDiskSynchronizer(settingsProvider).doInBackground() - instancesDataService.update(projectsDataService.getCurrentProject().uuid) + instancesDataService.update(projectsDataService.requireCurrentProject().uuid) null }) { } } - private val currentProject = projectsDataService.getCurrentProjectFlow().asLiveData() + private val currentProject = projectsDataService.getCurrentProject().asLiveData() val editableInstancesCount: LiveData = currentProject.switchMap { instancesDataService.getEditableCount(it!!.uuid).asLiveData() } diff --git a/collect_app/src/main/java/org/odk/collect/android/preferences/screens/BaseAdminPreferencesFragment.java b/collect_app/src/main/java/org/odk/collect/android/preferences/screens/BaseAdminPreferencesFragment.java index 66a3fd832bf..99ca2e6f617 100644 --- a/collect_app/src/main/java/org/odk/collect/android/preferences/screens/BaseAdminPreferencesFragment.java +++ b/collect_app/src/main/java/org/odk/collect/android/preferences/screens/BaseAdminPreferencesFragment.java @@ -17,7 +17,7 @@ public abstract class BaseAdminPreferencesFragment extends BasePreferencesFragme @Override public void onAttach(@NonNull Context context) { super.onAttach(context); - projectId = projectsDataService.getCurrentProject().getUuid(); + projectId = projectsDataService.requireCurrentProject().getUuid(); adminSettings = settingsProvider.getProtectedSettings(projectId); } diff --git a/collect_app/src/main/java/org/odk/collect/android/preferences/screens/BaseProjectPreferencesFragment.java b/collect_app/src/main/java/org/odk/collect/android/preferences/screens/BaseProjectPreferencesFragment.java index 46b03df0d2b..b90ceaaa79c 100644 --- a/collect_app/src/main/java/org/odk/collect/android/preferences/screens/BaseProjectPreferencesFragment.java +++ b/collect_app/src/main/java/org/odk/collect/android/preferences/screens/BaseProjectPreferencesFragment.java @@ -39,7 +39,7 @@ public void onAttach(@NonNull Context context) { DaggerUtils.getComponent(context).inject(this); projectPreferencesViewModel = new ViewModelProvider(requireActivity(), factory).get(ProjectPreferencesViewModel.class); - projectId = projectsDataService.getCurrentProject().getUuid(); + projectId = projectsDataService.requireCurrentProject().getUuid(); settings = settingsProvider.getUnprotectedSettings(projectId); } diff --git a/collect_app/src/main/java/org/odk/collect/android/preferences/screens/FormManagementPreferencesFragment.java b/collect_app/src/main/java/org/odk/collect/android/preferences/screens/FormManagementPreferencesFragment.java index 7828144fba0..a72c67b59e0 100644 --- a/collect_app/src/main/java/org/odk/collect/android/preferences/screens/FormManagementPreferencesFragment.java +++ b/collect_app/src/main/java/org/odk/collect/android/preferences/screens/FormManagementPreferencesFragment.java @@ -83,7 +83,7 @@ public void onSettingChanged(@NotNull String key) { } if (key.equals(KEY_AUTOSEND) && !StringIdEnumUtils.getAutoSend(settingsProvider.getUnprotectedSettings(), requireContext()).equals(AutoSend.OFF)) { - instanceSubmitScheduler.scheduleAutoSend(projectsDataService.getCurrentProject().getUuid()); + instanceSubmitScheduler.scheduleAutoSend(projectsDataService.requireCurrentProject().getUuid()); } } diff --git a/collect_app/src/main/java/org/odk/collect/android/preferences/screens/ProjectDisplayPreferencesFragment.kt b/collect_app/src/main/java/org/odk/collect/android/preferences/screens/ProjectDisplayPreferencesFragment.kt index 79aef1da6a9..0659c07a050 100644 --- a/collect_app/src/main/java/org/odk/collect/android/preferences/screens/ProjectDisplayPreferencesFragment.kt +++ b/collect_app/src/main/java/org/odk/collect/android/preferences/screens/ProjectDisplayPreferencesFragment.kt @@ -49,7 +49,7 @@ class ProjectDisplayPreferencesFragment : { color: String -> Analytics.log(AnalyticsEvents.CHANGE_PROJECT_COLOR) - val (uuid, name, icon) = projectsDataService.getCurrentProject() + val (uuid, name, icon) = projectsDataService.requireCurrentProject() projectsRepository.save(Project.Saved(uuid, name, icon, color)) findPreference(PROJECT_COLOR_KEY)!!.summaryProvider = ProjectDetailsSummaryProvider( @@ -83,9 +83,9 @@ class ProjectDisplayPreferencesFragment : findPreference(PROJECT_NAME_KEY)!!.onPreferenceChangeListener = this findPreference(PROJECT_ICON_KEY)!!.onPreferenceChangeListener = this (findPreference(PROJECT_NAME_KEY) as EditTextPreference).text = - projectsDataService.getCurrentProject().name + projectsDataService.requireCurrentProject().name (findPreference(PROJECT_ICON_KEY) as EditTextPreference).text = - projectsDataService.getCurrentProject().icon + projectsDataService.requireCurrentProject().icon (findPreference(PROJECT_ICON_KEY) as EditTextPreference).setOnBindEditTextListener { editText: EditText -> editText.addTextChangedListener( OneSignTextWatcher(editText) @@ -99,14 +99,14 @@ class ProjectDisplayPreferencesFragment : ) : Preference.SummaryProvider { override fun provideSummary(preference: Preference): CharSequence { return when (key) { - PROJECT_NAME_KEY -> projectsDataService.getCurrentProject().name - PROJECT_ICON_KEY -> projectsDataService.getCurrentProject().icon + PROJECT_NAME_KEY -> projectsDataService.requireCurrentProject().name + PROJECT_ICON_KEY -> projectsDataService.requireCurrentProject().icon PROJECT_COLOR_KEY -> { val summary: Spannable = SpannableString("■") summary.setSpan( ForegroundColorSpan( Color.parseColor( - projectsDataService.getCurrentProject().color + projectsDataService.requireCurrentProject().color ) ), 0, @@ -124,7 +124,7 @@ class ProjectDisplayPreferencesFragment : if (MultiClickGuard.allowClick(javaClass.name)) { when (preference.key) { PROJECT_COLOR_KEY -> { - val (_, _, icon, color) = projectsDataService.getCurrentProject() + val (_, _, icon, color) = projectsDataService.requireCurrentProject() val bundle = Bundle() bundle.putString(ColorPickerDialog.CURRENT_COLOR, color) bundle.putString(ColorPickerDialog.CURRENT_ICON, icon) @@ -141,7 +141,7 @@ class ProjectDisplayPreferencesFragment : } override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean { - val (uuid, name, icon, color) = projectsDataService.getCurrentProject() + val (uuid, name, icon, color) = projectsDataService.requireCurrentProject() when (preference.key) { PROJECT_NAME_KEY -> { Analytics.log(AnalyticsEvents.CHANGE_PROJECT_NAME) diff --git a/collect_app/src/main/java/org/odk/collect/android/projects/ManualProjectCreatorDialog.kt b/collect_app/src/main/java/org/odk/collect/android/projects/ManualProjectCreatorDialog.kt index 9426d973860..1d0a695ea94 100644 --- a/collect_app/src/main/java/org/odk/collect/android/projects/ManualProjectCreatorDialog.kt +++ b/collect_app/src/main/java/org/odk/collect/android/projects/ManualProjectCreatorDialog.kt @@ -133,7 +133,7 @@ class ManualProjectCreatorDialog : ActivityUtils.startActivityAndCloseAllOthers(activity, MainMenuActivity::class.java) ToastUtils.showLongToast( requireContext(), - getString(org.odk.collect.strings.R.string.switched_project, projectsDataService.getCurrentProject().name) + getString(org.odk.collect.strings.R.string.switched_project, projectsDataService.requireCurrentProject().name) ) } @@ -144,7 +144,7 @@ class ManualProjectCreatorDialog : requireContext(), getString( org.odk.collect.strings.R.string.switched_project, - projectsDataService.getCurrentProject().name + projectsDataService.requireCurrentProject().name ) ) } diff --git a/collect_app/src/main/java/org/odk/collect/android/projects/ProjectDeleter.kt b/collect_app/src/main/java/org/odk/collect/android/projects/ProjectDeleter.kt index c99e8760e26..c7660c1151e 100644 --- a/collect_app/src/main/java/org/odk/collect/android/projects/ProjectDeleter.kt +++ b/collect_app/src/main/java/org/odk/collect/android/projects/ProjectDeleter.kt @@ -22,7 +22,7 @@ class ProjectDeleter( private val changeLockProvider: ChangeLockProvider, private val settingsProvider: SettingsProvider ) { - fun deleteProject(projectId: String = projectsDataService.getCurrentProject().uuid): DeleteProjectResult { + fun deleteProject(projectId: String = projectsDataService.requireCurrentProject().uuid): DeleteProjectResult { return when { unsentInstancesDetected(projectId) -> DeleteProjectResult.UnsentInstances runningBackgroundJobsDetected(projectId) -> DeleteProjectResult.RunningBackgroundJobs @@ -65,7 +65,7 @@ class ProjectDeleter( DatabaseConnection.cleanUp() return try { - projectsDataService.getCurrentProject() + projectsDataService.requireCurrentProject() DeleteProjectResult.DeletedSuccessfullyInactiveProject } catch (e: IllegalStateException) { if (projectsRepository.getAll().isEmpty()) { diff --git a/collect_app/src/main/java/org/odk/collect/android/projects/ProjectsDataService.kt b/collect_app/src/main/java/org/odk/collect/android/projects/ProjectsDataService.kt index eeaed7af174..f69e79265e2 100644 --- a/collect_app/src/main/java/org/odk/collect/android/projects/ProjectsDataService.kt +++ b/collect_app/src/main/java/org/odk/collect/android/projects/ProjectsDataService.kt @@ -21,36 +21,36 @@ class ProjectsDataService( private val currentProject by data(DataKeys.PROJECT, null) { val currentProjectId = getCurrentProjectId() + if (currentProjectId != null) { projectsRepository.get(currentProjectId) } else { - null + val projects = projectsRepository.getAll() + + if (projects.isNotEmpty()) { + projects[0] + } else { + null + } } } - fun getCurrentProjectFlow(): StateFlow { + fun getCurrentProject(): StateFlow { return currentProject.flow() } - fun getCurrentProject(): Project.Saved { - val currentProjectId = getCurrentProjectId() - - if (currentProjectId != null) { - val currentProject = projectsRepository.get(currentProjectId) + @Deprecated( + "Most components should be passed project ID/project as a value", + replaceWith = ReplaceWith("getCurrentProject().value!!") + ) + fun requireCurrentProject(): Project.Saved { + update() + val project = getCurrentProject().value - if (currentProject != null) { - return currentProject - } else { - throw IllegalStateException("Current project does not exist!") - } + if (project != null) { + return project } else { - val projects = projectsRepository.getAll() - - if (projects.isNotEmpty()) { - return projects[0] - } else { - throw IllegalStateException("No current project!") - } + throw IllegalStateException("No current project!") } } diff --git a/collect_app/src/main/java/org/odk/collect/android/projects/QrCodeProjectCreatorDialog.kt b/collect_app/src/main/java/org/odk/collect/android/projects/QrCodeProjectCreatorDialog.kt index 51fd7ba724a..835a6230233 100644 --- a/collect_app/src/main/java/org/odk/collect/android/projects/QrCodeProjectCreatorDialog.kt +++ b/collect_app/src/main/java/org/odk/collect/android/projects/QrCodeProjectCreatorDialog.kt @@ -298,7 +298,7 @@ class QrCodeProjectCreatorDialog : requireContext(), getString( org.odk.collect.strings.R.string.switched_project, - projectsDataService.getCurrentProject().name + projectsDataService.requireCurrentProject().name ) ) } @@ -326,7 +326,7 @@ class QrCodeProjectCreatorDialog : requireContext(), getString( org.odk.collect.strings.R.string.switched_project, - projectsDataService.getCurrentProject().name + projectsDataService.requireCurrentProject().name ) ) } diff --git a/collect_app/src/main/java/org/odk/collect/android/storage/StoragePathProvider.kt b/collect_app/src/main/java/org/odk/collect/android/storage/StoragePathProvider.kt index 36f0a1a3751..1f8909e7f0f 100644 --- a/collect_app/src/main/java/org/odk/collect/android/storage/StoragePathProvider.kt +++ b/collect_app/src/main/java/org/odk/collect/android/storage/StoragePathProvider.kt @@ -19,7 +19,7 @@ class StoragePathProvider( @JvmOverloads @Deprecated(message = "Use create() instead") fun getProjectRootDirPath(projectId: String? = null): String { - val uuid = projectId ?: projectsDataService.getCurrentProject().uuid + val uuid = projectId ?: projectsDataService.requireCurrentProject().uuid val path = getOdkDirPath(StorageSubdirectory.PROJECTS) + File.separator + uuid if (!File(path).exists()) { diff --git a/collect_app/src/main/java/org/odk/collect/android/tasks/DownloadFormListTask.java b/collect_app/src/main/java/org/odk/collect/android/tasks/DownloadFormListTask.java index 80549160f10..608ea44d891 100644 --- a/collect_app/src/main/java/org/odk/collect/android/tasks/DownloadFormListTask.java +++ b/collect_app/src/main/java/org/odk/collect/android/tasks/DownloadFormListTask.java @@ -68,7 +68,7 @@ public DownloadFormListTask(ServerFormsDetailsFetcher serverFormsDetailsFetcher) @Override protected Pair, FormSourceException> doInBackground(Void... values) { - formsDataService.refresh(projectsDataService.getCurrentProject().getUuid()); + formsDataService.refresh(projectsDataService.requireCurrentProject().getUuid()); if (webCredentialsUtils != null) { setTemporaryCredentials(); diff --git a/collect_app/src/main/java/org/odk/collect/android/tasks/InstanceUploaderTask.java b/collect_app/src/main/java/org/odk/collect/android/tasks/InstanceUploaderTask.java index b788d041e25..f21a87c94a4 100644 --- a/collect_app/src/main/java/org/odk/collect/android/tasks/InstanceUploaderTask.java +++ b/collect_app/src/main/java/org/odk/collect/android/tasks/InstanceUploaderTask.java @@ -153,7 +153,7 @@ public Outcome doInBackground(Long... instanceIdsToUpload) { InstanceDeleter instanceDeleter = new InstanceDeleter(instancesRepository, formsRepository); instanceDeleter.delete(instancesToDelete.map(Instance::getDbId).toArray(Long[]::new)); - instancesDataService.update(projectsDataService.getCurrentProject().getUuid()); + instancesDataService.update(projectsDataService.requireCurrentProject().getUuid()); return outcome; } diff --git a/collect_app/src/main/java/org/odk/collect/android/utilities/FormsRepositoryProvider.kt b/collect_app/src/main/java/org/odk/collect/android/utilities/FormsRepositoryProvider.kt index f7fd79625a4..d19f0b2bdba 100644 --- a/collect_app/src/main/java/org/odk/collect/android/utilities/FormsRepositoryProvider.kt +++ b/collect_app/src/main/java/org/odk/collect/android/utilities/FormsRepositoryProvider.kt @@ -37,7 +37,7 @@ class FormsRepositoryProvider @JvmOverloads constructor( fun create(): FormsRepository { val currentProject = DaggerUtils.getComponent(Collect.getInstance()).currentProjectProvider() - .getCurrentProject() + .requireCurrentProject() return create(currentProject.uuid) } } diff --git a/collect_app/src/main/java/org/odk/collect/android/utilities/InstancesRepositoryProvider.kt b/collect_app/src/main/java/org/odk/collect/android/utilities/InstancesRepositoryProvider.kt index 04cb531d8f7..89cb951ccc8 100644 --- a/collect_app/src/main/java/org/odk/collect/android/utilities/InstancesRepositoryProvider.kt +++ b/collect_app/src/main/java/org/odk/collect/android/utilities/InstancesRepositoryProvider.kt @@ -28,7 +28,7 @@ class InstancesRepositoryProvider @JvmOverloads constructor( fun create(): InstancesRepository { val currentProject = DaggerUtils.getComponent(Collect.getInstance()).currentProjectProvider() - .getCurrentProject() + .requireCurrentProject() return create(currentProject.uuid) } } diff --git a/collect_app/src/main/java/org/odk/collect/android/utilities/SavepointsRepositoryProvider.kt b/collect_app/src/main/java/org/odk/collect/android/utilities/SavepointsRepositoryProvider.kt index c77a1880e1b..4edea6bbad3 100644 --- a/collect_app/src/main/java/org/odk/collect/android/utilities/SavepointsRepositoryProvider.kt +++ b/collect_app/src/main/java/org/odk/collect/android/utilities/SavepointsRepositoryProvider.kt @@ -27,7 +27,7 @@ class SavepointsRepositoryProvider( fun create(): SavepointsRepository { val currentProject = DaggerUtils.getComponent(Collect.getInstance()).currentProjectProvider() - .getCurrentProject() + .requireCurrentProject() return create(currentProject.uuid) } } diff --git a/collect_app/src/test/java/org/odk/collect/android/external/FormUriActivityTest.kt b/collect_app/src/test/java/org/odk/collect/android/external/FormUriActivityTest.kt index fedcc644b15..9064c407777 100644 --- a/collect_app/src/test/java/org/odk/collect/android/external/FormUriActivityTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/external/FormUriActivityTest.kt @@ -166,7 +166,7 @@ class FormUriActivityTest { val secondProject = Project.Saved("345", "Second project", "A", "#cccccc") projectsRepository.save(firstProject) projectsRepository.save(secondProject) - whenever(projectsDataService.getCurrentProject()).thenReturn(firstProject) + whenever(projectsDataService.requireCurrentProject()).thenReturn(firstProject) val form = formsRepository.save( FormUtils.buildForm( @@ -196,7 +196,7 @@ class FormUriActivityTest { val secondProject = Project.Saved("345", "Second project", "A", "#cccccc") projectsRepository.save(firstProject) projectsRepository.save(secondProject) - whenever(projectsDataService.getCurrentProject()).thenReturn(secondProject) + whenever(projectsDataService.requireCurrentProject()).thenReturn(secondProject) val form = formsRepository.save( FormUtils.buildForm( @@ -220,7 +220,7 @@ class FormUriActivityTest { fun `When uri is null then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -247,7 +247,7 @@ class FormUriActivityTest { fun `When uri is invalid then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -274,7 +274,7 @@ class FormUriActivityTest { fun `When uri represents a blank form that does not exist then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val scenario = launcherRule.launchForResult(getBlankFormIntent(project.uuid, 1)) @@ -287,7 +287,7 @@ class FormUriActivityTest { fun `When uri represents a blank form with non existing form file then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -313,7 +313,7 @@ class FormUriActivityTest { fun `When uri represents a saved form that does not exist then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val scenario = launcherRule.launchForResult(getSavedIntent(project.uuid, 1)) @@ -326,7 +326,7 @@ class FormUriActivityTest { fun `When attempting to edit a form with non existing instance file then display alert dialog and remove the instance from the database`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm("1", "1", TempFiles.createTempDir().absolutePath).build() @@ -362,7 +362,7 @@ class FormUriActivityTest { fun `When attempting to edit a form with zero form definitions then display alert dialog with formId if version does not exist`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val instance = instancesRepository.save( Instance.Builder() @@ -392,7 +392,7 @@ class FormUriActivityTest { fun `When attempting to edit a form with zero form definitions then display alert dialog with formId and version if both exist`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val instance = instancesRepository.save( Instance.Builder() @@ -425,7 +425,7 @@ class FormUriActivityTest { fun `When attempting to edit a form with multiple form definitions then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm( @@ -471,7 +471,7 @@ class FormUriActivityTest { fun `When attempting to edit a form with only one non-deleted form definitions then start form`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form1 = formsRepository.save( FormUtils.buildForm( @@ -516,7 +516,7 @@ class FormUriActivityTest { fun `When attempting to edit an encrypted form then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm( @@ -555,7 +555,7 @@ class FormUriActivityTest { fun `When attempting to edit an incomplete form with disabled editing then start form for view only`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) settingsProvider.getProtectedSettings().save(ProtectedProjectKeys.KEY_EDIT_SAVED, false) @@ -582,7 +582,7 @@ class FormUriActivityTest { fun `When attempting to start a new form then there should be no form mode passed with the intent even if editing saved forms is disabled`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) settingsProvider.getProtectedSettings().save(ProtectedProjectKeys.KEY_EDIT_SAVED, false) @@ -604,7 +604,7 @@ class FormUriActivityTest { fun `When attempting to edit a finalized form then start form for view only`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm("1", "1", TempFiles.createTempDir().absolutePath).build() @@ -629,7 +629,7 @@ class FormUriActivityTest { fun `When attempting to edit a submitted form then start form for view only`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm("1", "1", TempFiles.createTempDir().absolutePath).build() @@ -654,7 +654,7 @@ class FormUriActivityTest { fun `When attempting to edit a form that failed to submit then start form for view only`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm("1", "1", TempFiles.createTempDir().absolutePath).build() @@ -679,7 +679,7 @@ class FormUriActivityTest { fun `Form filling should not be started again after recreating the activity`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -702,7 +702,7 @@ class FormUriActivityTest { fun `Form filling should not be started again after recreating the activity before starting`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -724,7 +724,7 @@ class FormUriActivityTest { fun `When there is project id specified in uri that represents a blank form and it matches current project id then start form filling`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -744,7 +744,7 @@ class FormUriActivityTest { fun `When there is project id specified in uri that represents an incomplete form and it matches current project id then start form filling`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm("1", "1", TempFiles.createTempDir().absolutePath).build() @@ -769,7 +769,7 @@ class FormUriActivityTest { fun `When there is project id specified in uri that represents an invalid form and it matches current project id then start form filling`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm("1", "1", TempFiles.createTempDir().absolutePath).build() @@ -794,7 +794,7 @@ class FormUriActivityTest { fun `When there is no project id specified in uri that represents a blank form and first available project id matches current project id then start form filling`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -814,7 +814,7 @@ class FormUriActivityTest { fun `When there is no project id specified in uri that represents a saved form and first available project id matches current project id then start form filling`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm("1", "1", TempFiles.createTempDir().absolutePath).build() @@ -850,7 +850,7 @@ class FormUriActivityTest { fun `If there is a savepoint, display a recovery dialog before starting a blank form`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -873,7 +873,7 @@ class FormUriActivityTest { fun `If there is a savepoint, display a recovery dialog before starting a saved form`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -905,7 +905,7 @@ class FormUriActivityTest { fun `If there is a savepoint for older version of the blank form, display a recovery dialog and start the old version of the blank form if a user accepts`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val formV1 = formsRepository.save( FormUtils.buildForm( @@ -939,7 +939,7 @@ class FormUriActivityTest { fun `If there is a savepoint for older version of the blank form, display a recovery dialog and start the new version of the blank form if a user declines`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val formV1 = formsRepository.save( FormUtils.buildForm( @@ -974,7 +974,7 @@ class FormUriActivityTest { fun `An existing savepoint for a blank form should be removed when a user declines`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -1004,7 +1004,7 @@ class FormUriActivityTest { fun `An existing savepoint for a saved form should be removed when a user declines`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -1043,7 +1043,7 @@ class FormUriActivityTest { fun `When attempting to start a new form that does not use entities and the forms database is locked then start form filling`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -1064,7 +1064,7 @@ class FormUriActivityTest { fun `When attempting to start a new form that uses entities and the forms database is locked then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) val form = formsRepository.save( FormUtils.buildForm( @@ -1089,7 +1089,7 @@ class FormUriActivityTest { fun `When attempting to edit a form that does not use entities and the forms database is locked then start form filling`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm("1", "1", TempFiles.createTempDir().absolutePath).build() @@ -1115,7 +1115,7 @@ class FormUriActivityTest { fun `When attempting to edit a form that uses entities and the forms database is locked then display alert dialog`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm( @@ -1149,7 +1149,7 @@ class FormUriActivityTest { fun `When attempting to view a non-editable form that uses entities and the forms database is locked then start form for view only`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm( @@ -1180,7 +1180,7 @@ class FormUriActivityTest { fun `When attempting to view a non-editable form that uses entities then do not lock the forms database`() { val project = Project.Saved("123", "First project", "A", "#cccccc") projectsRepository.save(project) - whenever(projectsDataService.getCurrentProject()).thenReturn(project) + whenever(projectsDataService.requireCurrentProject()).thenReturn(project) formsRepository.save( FormUtils.buildForm( diff --git a/collect_app/src/test/java/org/odk/collect/android/formentry/audit/FormSaveViewModelTest.java b/collect_app/src/test/java/org/odk/collect/android/formentry/audit/FormSaveViewModelTest.java index 86c18791d57..6437c5eb0c6 100644 --- a/collect_app/src/test/java/org/odk/collect/android/formentry/audit/FormSaveViewModelTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/formentry/audit/FormSaveViewModelTest.java @@ -98,7 +98,7 @@ public void setup() { audioRecorder = mock(AudioRecorder.class); projectsDataService = mock(ProjectsDataService.class); - when(projectsDataService.getCurrentProject()).thenReturn(Project.Companion.getDEMO_PROJECT()); + when(projectsDataService.requireCurrentProject()).thenReturn(Project.Companion.getDEMO_PROJECT()); formSession = new MutableLiveData<>(new FormSession(formController, form)); viewModel = new FormSaveViewModel(savedStateHandle, () -> CURRENT_TIME, formSaver, mediaUtils, scheduler, audioRecorder, projectsDataService, formSession, entitiesRepository, instancesRepository, savepointsRepository, mock()); diff --git a/collect_app/src/test/java/org/odk/collect/android/mainmenu/CurrentProjectViewModelTest.kt b/collect_app/src/test/java/org/odk/collect/android/mainmenu/CurrentProjectViewModelTest.kt index 4f3d9960851..3c99ae87ba9 100644 --- a/collect_app/src/test/java/org/odk/collect/android/mainmenu/CurrentProjectViewModelTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/mainmenu/CurrentProjectViewModelTest.kt @@ -19,7 +19,7 @@ class CurrentProjectViewModelTest { var instantTaskExecutorRule = InstantTaskExecutorRule() private val projectsDataService = mock { - on { getCurrentProjectFlow() } doReturn MutableStateFlow( + on { getCurrentProject() } doReturn MutableStateFlow( Project.Saved( "123", "Project X", @@ -50,7 +50,7 @@ class CurrentProjectViewModelTest { @Test fun `hasCurrentProject returns false when there is no current project`() { - whenever(projectsDataService.getCurrentProject()).thenThrow(IllegalStateException()) + whenever(projectsDataService.getCurrentProject()).thenReturn(MutableStateFlow(null)) val currentProjectViewModel = CurrentProjectViewModel( projectsDataService ) diff --git a/collect_app/src/test/java/org/odk/collect/android/mainmenu/MainMenuViewModelTest.kt b/collect_app/src/test/java/org/odk/collect/android/mainmenu/MainMenuViewModelTest.kt index 33da9ac3e90..4f9fe11adaf 100644 --- a/collect_app/src/test/java/org/odk/collect/android/mainmenu/MainMenuViewModelTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/mainmenu/MainMenuViewModelTest.kt @@ -45,8 +45,8 @@ class MainMenuViewModelTest { private val settingsProvider = InMemSettingsProvider() private val projectsDataService = mock { - on { getCurrentProject() } doReturn Project.DEMO_PROJECT - on { getCurrentProjectFlow() } doReturn MutableStateFlow(Project.DEMO_PROJECT) + on { requireCurrentProject() } doReturn Project.DEMO_PROJECT + on { getCurrentProject() } doReturn MutableStateFlow(Project.DEMO_PROJECT) } private val instancesDataService = mock { diff --git a/collect_app/src/test/java/org/odk/collect/android/preferences/AppConfigurationGeneratorTest.kt b/collect_app/src/test/java/org/odk/collect/android/preferences/AppConfigurationGeneratorTest.kt index 5eec401e3ad..8925b8f4baf 100644 --- a/collect_app/src/test/java/org/odk/collect/android/preferences/AppConfigurationGeneratorTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/preferences/AppConfigurationGeneratorTest.kt @@ -23,7 +23,7 @@ class AppConfigurationGeneratorTest { private val settingsProvider = InMemSettingsProvider() private val projectsDataService: ProjectsDataService = mock { - on { getCurrentProject() } doReturn Project.Saved("1", "Project X", "X", "#cccccc") + on { requireCurrentProject() } doReturn Project.Saved("1", "Project X", "X", "#cccccc") } val projectDetails = mapOf( diff --git a/collect_app/src/test/java/org/odk/collect/android/preferences/screens/MapsPreferencesFragmentTest.kt b/collect_app/src/test/java/org/odk/collect/android/preferences/screens/MapsPreferencesFragmentTest.kt index fe2a061d18e..965b9bb6be6 100644 --- a/collect_app/src/test/java/org/odk/collect/android/preferences/screens/MapsPreferencesFragmentTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/preferences/screens/MapsPreferencesFragmentTest.kt @@ -38,7 +38,7 @@ class MapsPreferencesFragmentTest { private val project = Project.DEMO_PROJECT private val projectsDataService = mock().apply { - whenever(getCurrentProject()).thenReturn(project) + whenever(requireCurrentProject()).thenReturn(project) } private val projectsRepository = mock().apply { whenever(get(project.uuid)).thenReturn(project) diff --git a/collect_app/src/test/java/org/odk/collect/android/preferences/screens/ProjectDisplayPreferencesFragmentTest.kt b/collect_app/src/test/java/org/odk/collect/android/preferences/screens/ProjectDisplayPreferencesFragmentTest.kt index cc5d3913acf..ef7f701646f 100644 --- a/collect_app/src/test/java/org/odk/collect/android/preferences/screens/ProjectDisplayPreferencesFragmentTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/preferences/screens/ProjectDisplayPreferencesFragmentTest.kt @@ -42,7 +42,7 @@ class ProjectDisplayPreferencesFragmentTest { projectsDataService = mock(ProjectsDataService::class.java) projectsRepository = mock(ProjectsRepository::class.java) - `when`(projectsDataService.getCurrentProject()) + `when`(projectsDataService.requireCurrentProject()) .thenReturn(Project.Saved("123", "Project X", "X", "#cccccc")) CollectHelpers.overrideAppDependencyModule(object : AppDependencyModule() { diff --git a/collect_app/src/test/java/org/odk/collect/android/projects/ExistingProjectMigratorTest.kt b/collect_app/src/test/java/org/odk/collect/android/projects/ExistingProjectMigratorTest.kt index 1381c470f40..bf9c6ef016b 100644 --- a/collect_app/src/test/java/org/odk/collect/android/projects/ExistingProjectMigratorTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/projects/ExistingProjectMigratorTest.kt @@ -69,7 +69,7 @@ class ExistingProjectMigratorTest { } existingProjectMigrator.run() - val existingProject = currentProjectProvider.getCurrentProject() + val existingProject = currentProjectProvider.requireCurrentProject() legacyRootDirs.forEach { assertThat(it.exists(), `is`(false)) @@ -92,7 +92,7 @@ class ExistingProjectMigratorTest { TempFiles.createTempFile(cacheDir, "file", ".temp") existingProjectMigrator.run() - val existingProject = currentProjectProvider.getCurrentProject() + val existingProject = currentProjectProvider.requireCurrentProject() assertThat(cacheDir.exists(), `is`(false)) @@ -119,7 +119,7 @@ class ExistingProjectMigratorTest { } existingProjectMigrator.run() - val existingProject = currentProjectProvider.getCurrentProject() + val existingProject = currentProjectProvider.requireCurrentProject() getProjectDirPaths(existingProject.uuid).forEach { val dir = File(it) assertThat(dir.exists(), `is`(true)) @@ -141,7 +141,7 @@ class ExistingProjectMigratorTest { oldAdminSettings.edit().putString("adminKey", "adminValue").apply() existingProjectMigrator.run() - val existingProject = currentProjectProvider.getCurrentProject() + val existingProject = currentProjectProvider.requireCurrentProject() val generalSettings = settingsProvider.getUnprotectedSettings(existingProject.uuid) assertThat( diff --git a/collect_app/src/test/java/org/odk/collect/android/projects/ManualProjectCreatorDialogTest.kt b/collect_app/src/test/java/org/odk/collect/android/projects/ManualProjectCreatorDialogTest.kt index 99ec41a07d1..dbd2ef8a48e 100644 --- a/collect_app/src/test/java/org/odk/collect/android/projects/ManualProjectCreatorDialogTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/projects/ManualProjectCreatorDialogTest.kt @@ -114,7 +114,7 @@ class ManualProjectCreatorDialogTest { fun `Server project creation should be triggered after clicking on the 'Add' button`() { val projectCreator = mock {} val projectsDataService = mock { - on { getCurrentProject() } doReturn Project.DEMO_PROJECT + on { requireCurrentProject() } doReturn Project.DEMO_PROJECT } CollectHelpers.overrideAppDependencyModule(object : AppDependencyModule() { diff --git a/collect_app/src/test/java/org/odk/collect/android/projects/ProjectCreatorTest.kt b/collect_app/src/test/java/org/odk/collect/android/projects/ProjectCreatorTest.kt index 82ddcf03f28..2eb6cec0a0d 100644 --- a/collect_app/src/test/java/org/odk/collect/android/projects/ProjectCreatorTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/projects/ProjectCreatorTest.kt @@ -26,7 +26,7 @@ class ProjectCreatorTest { } private var projectsDataService = mock { - on { getCurrentProject() } doReturn savedProject + on { requireCurrentProject() } doReturn savedProject } private var settingsImporter = mock {} diff --git a/collect_app/src/test/java/org/odk/collect/android/projects/ProjectDeleterTest.kt b/collect_app/src/test/java/org/odk/collect/android/projects/ProjectDeleterTest.kt index 4675a8b1e4c..e687d1fde01 100644 --- a/collect_app/src/test/java/org/odk/collect/android/projects/ProjectDeleterTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/projects/ProjectDeleterTest.kt @@ -222,7 +222,7 @@ class ProjectDeleterTest { val result = deleter.deleteProject(project1.uuid) - assertThat(projectsDataService.getCurrentProject().uuid, equalTo(project2.uuid)) + assertThat(projectsDataService.requireCurrentProject().uuid, equalTo(project2.uuid)) assertThat((result as DeleteProjectResult.DeletedSuccessfullyCurrentProject).newCurrentProject, equalTo(project2)) } @@ -234,7 +234,7 @@ class ProjectDeleterTest { val result = deleter.deleteProject(project1.uuid) - assertThat(projectsDataService.getCurrentProject().uuid, equalTo(project2.uuid)) + assertThat(projectsDataService.requireCurrentProject().uuid, equalTo(project2.uuid)) assertThat(result, instanceOf(DeleteProjectResult.DeletedSuccessfullyInactiveProject::class.java)) } diff --git a/collect_app/src/test/java/org/odk/collect/android/projects/ProjectsDataServiceTest.kt b/collect_app/src/test/java/org/odk/collect/android/projects/ProjectsDataServiceTest.kt index 164021dee4d..2f7946624cd 100644 --- a/collect_app/src/test/java/org/odk/collect/android/projects/ProjectsDataServiceTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/projects/ProjectsDataServiceTest.kt @@ -28,11 +28,11 @@ class ProjectsDataServiceTest { ) @Test - fun `A project should be returned after calling getCurrentProject() if there is a project for given id`() { + fun `A project should be returned after calling requireCurrentProject if there is a project for given id`() { val project = projectsRepository.save(Project.New("ProjectX", "X", "#00FF00")) metaSettings.save(MetaKeys.CURRENT_PROJECT_ID, project.uuid) - assertThat(projectsDataService.getCurrentProject(), `is`(project)) + assertThat(projectsDataService.requireCurrentProject(), `is`(project)) } @Test @@ -42,21 +42,21 @@ class ProjectsDataServiceTest { } @Test(expected = IllegalStateException::class) - fun `getCurrentProject throws IllegalStateException when there is no current project`() { - projectsDataService.getCurrentProject() + fun `requireCurrentProject throws IllegalStateException when there is no current project`() { + projectsDataService.requireCurrentProject() } @Test - fun `getCurrentProject returns first project when there is no current project but there are projects`() { + fun `requireCurrentProject returns first project when there is no current project but there are projects`() { val firstProject = projectsRepository.save(Project.New("ProjectX", "X", "#00FF00")) projectsRepository.save(Project.New("ProjectY", "Y", "#00FF00")) - assertThat(projectsDataService.getCurrentProject(), `is`(firstProject)) + assertThat(projectsDataService.requireCurrentProject(), `is`(firstProject)) } @Test(expected = IllegalStateException::class) - fun `getCurrentProject throws IllegalStateException when current project does not exist`() { + fun `requireCurrentProject throws IllegalStateException when current project does not exist`() { projectsDataService.setCurrentProject("123e4567") - projectsDataService.getCurrentProject() + projectsDataService.requireCurrentProject() } @Test diff --git a/collect_app/src/test/java/org/odk/collect/android/storage/StoragePathProviderTest.kt b/collect_app/src/test/java/org/odk/collect/android/storage/StoragePathProviderTest.kt index bbf9a54c0f2..b19e61e26d4 100644 --- a/collect_app/src/test/java/org/odk/collect/android/storage/StoragePathProviderTest.kt +++ b/collect_app/src/test/java/org/odk/collect/android/storage/StoragePathProviderTest.kt @@ -20,7 +20,7 @@ class StoragePathProviderTest { @Before fun setup() { val projectsDataService = mock(ProjectsDataService::class.java) - `when`(projectsDataService.getCurrentProject()).thenReturn( + `when`(projectsDataService.requireCurrentProject()).thenReturn( Project.Saved( "123", "Project",