diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/BiometricsDetailsApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/BiometricsDetailsApi.java index e7b580b90..7d958892d 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/BiometricsDetailsApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/BiometricsDetailsApi.java @@ -686,6 +686,12 @@ public void getListOfDevices(@NonNull String modality, @NonNull BiometricsPigeon } } + @Override + public void getOperatorOnboardingBioattributes(@NonNull BiometricsPigeon.Result result) { + String response = globalParamRepository.getCachedStringOperatorOnboardingBioAttributes(); + result.success(response == null ? "" : response); + } + public void handleDeviceInfoResponseForList(Bundle bundle) { try { byte[] infoBytes = bundle.getByteArray(RegistrationConstants.SBI_INTENT_RESPONSE_KEY); diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/CommonDetailsApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/CommonDetailsApi.java index 83e6e1849..4e7cd2e00 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/CommonDetailsApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/CommonDetailsApi.java @@ -94,4 +94,70 @@ public void saveScreenHeaderToGlobalParam(@NonNull String id, @NonNull String va } result.success(response); } + + @Override + public void getOnboardYourselfUrl(@NonNull CommonDetailsPigeon.Result result) { + String response = ""; + try { + response = masterDataService.getCachedStringOnboardYourselfUrl(); + } catch (Exception e) { + Log.e(getClass().getSimpleName(), "Error fetching Onboard Yourself URL", e); + } + result.success(response); + } + + @Override + public void getRegisteringIndividualUrl(@NonNull CommonDetailsPigeon.Result result) { + String response = ""; + try { + response = masterDataService.getCachedStringRegisteringIndividualUrl(); + } catch (Exception e) { + Log.e(getClass().getSimpleName(), "Error fetching Registering Individual URL", e); + } + result.success(response); + } + + @Override + public void getSyncDataUrl(@NonNull CommonDetailsPigeon.Result result) { + String response = ""; + try { + response = masterDataService.getCachedStringSyncDataUrl(); + } catch (Exception e) { + Log.e(getClass().getSimpleName(), "Error fetching Sync Data URL", e); + } + result.success(response); + } + + @Override + public void getMappingDevicesUrl(@NonNull CommonDetailsPigeon.Result result) { + String response = ""; + try { + response = masterDataService.getCachedStringMappingDevicesUrl(); + } catch (Exception e) { + Log.e(getClass().getSimpleName(), "Error fetching Mapping Devices URL", e); + } + result.success(response); + } + + @Override + public void getUploadingDataUrl(@NonNull CommonDetailsPigeon.Result result) { + String response = ""; + try { + response = masterDataService.getCachedStringUploadingDataUrl(); + } catch (Exception e) { + Log.e(getClass().getSimpleName(), "Error fetching Uploading Data URL", e); + } + result.success(response); + } + + @Override + public void getUpdatingBiometricsUrl(@NonNull CommonDetailsPigeon.Result result) { + String response = ""; + try { + response = masterDataService.getCachedStringUpdatingBiometricsUrl(); + } catch (Exception e) { + Log.e(getClass().getSimpleName(), "Error fetching Updating Biometrics URL", e); + } + result.success(response); + } } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java index 9aeaf7c57..a1d30f495 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java @@ -274,9 +274,9 @@ Biometrics095Service provideBiometrics095Service(ObjectMapper objectMapper, Audi @Singleton UserOnboardService provideUserOnboardService(ObjectMapper objectMapper, AuditManagerService auditManagerService, CertificateManagerService certificateManagerService, - SyncRestService syncRestService, CryptoManagerService cryptoManagerService, RegistrationService registrationService, UserBiometricRepository userBiometricRepository, ClientCryptoManagerService clientCryptoManagerService, UserDetailRepository userDetailRepository) { + SyncRestService syncRestService, CryptoManagerService cryptoManagerService, RegistrationService registrationService, UserBiometricRepository userBiometricRepository, ClientCryptoManagerService clientCryptoManagerService, UserDetailRepository userDetailRepository, GlobalParamRepository globalParamRepository) { return new UserOnboardService(appContext, objectMapper, auditManagerService, certificateManagerService, syncRestService, - cryptoManagerService, registrationService, userBiometricRepository, clientCryptoManagerService, userDetailRepository); + cryptoManagerService, registrationService, userBiometricRepository, clientCryptoManagerService, userDetailRepository, globalParamRepository); } @Provides diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java index 055ca03f2..5e112785e 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java @@ -117,6 +117,14 @@ public class RegistrationConstants { public static final String JOB_TRIGGER_POINT_USER = "User"; public static final String GPS_DEVICE_ENABLE_FLAG = "mosip.registration.gps_device_enable_flag"; public static final String DIST_FRM_MACHINE_TO_CENTER = "mosip.registration.distance.from.machine.to.center"; + public static final String OPERATOR_ONBOARDING_BIO_ATTRIBUTES = "mosip.registration.operator.onboarding.bioattributes"; + public static final String SERVER_ACTIVE_PROFILE = "mosip.registration.server_profile"; + public static final String ONBOARD_YOURSELF_URL = "mosip.registration.onboard_yourself_url"; + public static final String REGISTERING_INDIVIDUAL_URL = "mosip.registration.registering_individual_url"; + public static final String SYNC_DATA_URL = "mosip.registration.sync_data_url"; + public static final String MAPPING_DEVICES_URL = "mosip.registration.mapping_devices_url"; + public static final String UPLOADING_DATA_URL = "mosip.registration.uploading_data_url"; + public static final String UPDATING_BIOMETRICS_URL = "mosip.registration.updating_biometrics_url"; public static final String PWORD_LENGTH = "mosip.registration.username_pwd_length"; public static final String DOC_SIZE = "mosip.registration.document_size"; public static final String MAX_AGE = "mosip.registration.max_age"; diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java index 1045c07d4..976672c6d 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java @@ -158,6 +158,34 @@ public String getCachedStringMachineToCenterDistance() { return globalParamMap.get(RegistrationConstants.DIST_FRM_MACHINE_TO_CENTER); } + public String getCachedStringOperatorOnboardingBioAttributes() { + return globalParamMap.get(RegistrationConstants.OPERATOR_ONBOARDING_BIO_ATTRIBUTES); + } + + public String getCachedStringOnboardYourselfUrl() { + return globalParamMap.get(RegistrationConstants.ONBOARD_YOURSELF_URL); + } + + public String getCachedStringRegisteringIndividualUrl() { + return globalParamMap.get(RegistrationConstants.REGISTERING_INDIVIDUAL_URL); + } + + public String getCachedStringSyncDataUrl() { + return globalParamMap.get(RegistrationConstants.SYNC_DATA_URL); + } + + public String getCachedStringMappingDevicesUrl() { + return globalParamMap.get(RegistrationConstants.MAPPING_DEVICES_URL); + } + + public String getCachedStringUploadingDataUrl() { + return globalParamMap.get(RegistrationConstants.UPLOADING_DATA_URL); + } + + public String getCachedStringUpdatingBiometricsUrl() { + return globalParamMap.get(RegistrationConstants.UPDATING_BIOMETRICS_URL); + } + public String getCachedStringPasswordLength() { return globalParamMap.get(RegistrationConstants.PWORD_LENGTH); } @@ -177,7 +205,6 @@ public long getCachedWriteTimeout() { return parseLongWithDefault(RegistrationConstants.HTTP_API_WRITE_TIMEOUT); } - /** * Refresh configuration cache by merging global params with local preferences */ diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/Biometrics095Service.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/Biometrics095Service.java index b22bc55a9..de8a277d6 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/Biometrics095Service.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/Biometrics095Service.java @@ -54,6 +54,7 @@ public class Biometrics095Service extends BiometricsService { private static final String TAG = Biometrics095Service.class.getSimpleName(); private static final String TRUST_DOMAIN_DEVICE = "DEVICE"; + private static final String DEFAULT_SERVER_ACTIVE_PROFILE = "Staging"; private String rCaptureTrustDomain = TRUST_DOMAIN_DEVICE; private String deviceInfoTrustDomain = TRUST_DOMAIN_DEVICE; @@ -90,7 +91,7 @@ public Biometrics095Service(Context context, ObjectMapper objectMapper, public CaptureRequest getRCaptureRequest(Modality modality, String deviceId, List exceptionAttributes) { CaptureRequest captureRequest = new CaptureRequest(); - captureRequest.setEnv("Developer"); + captureRequest.setEnv(getServerActiveProfile()); captureRequest.setPurpose("Registration"); captureRequest.setTimeout(10000); captureRequest.setSpecVersion("0.9.5"); @@ -313,4 +314,14 @@ public void addBioDevice(Modality modality, String deviceCode, DigitalId digital registeredDevice.put("deviceCode", deviceCode); BIO_DEVICES.put(modality, registeredDevice); } + + private String getServerActiveProfile() { + if (globalParamRepository != null) { + String value = globalParamRepository.getCachedStringGlobalParam(RegistrationConstants.SERVER_ACTIVE_PROFILE); + if (value != null && !value.trim().isEmpty()) { + return value.trim(); + } + } + return DEFAULT_SERVER_ACTIVE_PROFILE; + } } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/MasterDataServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/MasterDataServiceImpl.java index 73de638fe..d4c89ff20 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/MasterDataServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/MasterDataServiceImpl.java @@ -1082,4 +1082,40 @@ public Map getRegistrationParams() { return globalParamRepository.getGlobalParamsByPattern("mosip.registration%"); } + @Override + public String getCachedStringOnboardYourselfUrl() { + String value = globalParamRepository.getCachedStringOnboardYourselfUrl(); + return value == null ? "" : value; + } + + @Override + public String getCachedStringRegisteringIndividualUrl() { + String value = globalParamRepository.getCachedStringRegisteringIndividualUrl(); + return value == null ? "" : value; + } + + @Override + public String getCachedStringSyncDataUrl() { + String value = globalParamRepository.getCachedStringSyncDataUrl(); + return value == null ? "" : value; + } + + @Override + public String getCachedStringMappingDevicesUrl() { + String value = globalParamRepository.getCachedStringMappingDevicesUrl(); + return value == null ? "" : value; + } + + @Override + public String getCachedStringUploadingDataUrl() { + String value = globalParamRepository.getCachedStringUploadingDataUrl(); + return value == null ? "" : value; + } + + @Override + public String getCachedStringUpdatingBiometricsUrl() { + String value = globalParamRepository.getCachedStringUpdatingBiometricsUrl(); + return value == null ? "" : value; + } + } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/UserOnboardService.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/UserOnboardService.java index 61d029795..61392af87 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/UserOnboardService.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/UserOnboardService.java @@ -18,6 +18,7 @@ import io.mosip.registration.clientmanager.dto.registration.BiometricsDto; import io.mosip.registration.clientmanager.exception.ClientCheckedException; import io.mosip.registration.clientmanager.repository.UserBiometricRepository; +import io.mosip.registration.clientmanager.repository.GlobalParamRepository; import io.mosip.registration.clientmanager.repository.UserDetailRepository; import io.mosip.registration.clientmanager.spi.AuditManagerService; import io.mosip.registration.clientmanager.spi.RegistrationService; @@ -81,7 +82,7 @@ public class UserOnboardService { public static final String BIO = "bio"; public static final String REQUEST_AUTH = "requestedAuth"; public static final String PACKET_SYNC_VERSION = "1.0"; - public static final String SERVER_ACTIVE_PROFILE = "Staging"; + private static final String DEFAULT_SERVER_ACTIVE_PROFILE = "Staging"; public static final String TRANSACTION_ID_VALUE = "1234567890"; public static final String USER_ID_CODE = "USERID"; public static final String ON_BOARD_BIO_TYPE = "bioType"; @@ -103,6 +104,7 @@ public class UserOnboardService { private AuditManagerService auditManagerService; private ObjectMapper objectMapper; private ClientCryptoManagerService clientCryptoManagerService; + private GlobalParamRepository globalParamRepository; SharedPreferences sharedPreferences; public static final String USER_ID = "user_id"; public static final String USER_TOKEN = "user_token"; @@ -138,7 +140,7 @@ public void setIdaResponse(boolean idaResponse) { @Inject public UserOnboardService(Context context, ObjectMapper objectMapper, AuditManagerService auditManagerService, CertificateManagerService certificateManagerService, - SyncRestService syncRestService, CryptoManagerService cryptoManagerService, RegistrationService registrationService, UserBiometricRepository userBiometricRepository, ClientCryptoManagerService clientCryptoManagerService, UserDetailRepository userDetailRepository) { + SyncRestService syncRestService, CryptoManagerService cryptoManagerService, RegistrationService registrationService, UserBiometricRepository userBiometricRepository, ClientCryptoManagerService clientCryptoManagerService, UserDetailRepository userDetailRepository, GlobalParamRepository globalParamRepository) { this.context = context; this.userDetailRepository=userDetailRepository; this.certificateManagerService = certificateManagerService; @@ -149,11 +151,22 @@ public UserOnboardService(Context context, ObjectMapper objectMapper, AuditManag this.registrationService = registrationService; this.userBiometricRepository = userBiometricRepository; this.clientCryptoManagerService = clientCryptoManagerService; + this.globalParamRepository = globalParamRepository; sharedPreferences = this.context.getSharedPreferences( this.context.getString(R.string.app_name), Context.MODE_PRIVATE); } + private String getServerActiveProfile() { + if (globalParamRepository != null) { + String value = globalParamRepository.getCachedStringGlobalParam(RegistrationConstants.SERVER_ACTIVE_PROFILE); + if (value != null && !value.trim().isEmpty()) { + return value.trim(); + } + } + return DEFAULT_SERVER_ACTIVE_PROFILE; + } + public void onboardOperator(List biometrics, Runnable onFinish) throws ClientCheckedException { Log.i(TAG, "validateWithIDAuthAndSave invoked "); @@ -184,7 +197,7 @@ public void validateWithIDA(String userId, List biometrics, Runna idaRequestMap.put(VERSION, PACKET_SYNC_VERSION); idaRequestMap.put(REQUEST_TIME, DateUtils.formatToISOString(ZonedDateTime.now(ZoneOffset.UTC).toLocalDateTime())); - idaRequestMap.put(ENV, SERVER_ACTIVE_PROFILE); + idaRequestMap.put(ENV, getServerActiveProfile()); idaRequestMap.put(DOMAIN_URI, BuildConfig.BASE_URL); idaRequestMap.put(TRANSACTION_ID, TRANSACTION_ID_VALUE); idaRequestMap.put(CONSENT_OBTAINED, true); @@ -242,7 +255,7 @@ private LinkedHashMap buildDataBlock(String bioType, String bioS data.put(ON_BOARD_BIO_VALUE, splitEncryptedData.getEncryptedData()); data.put(TRANSACTION_UNIQUE_ID, TRANSACTION_ID_VALUE); data.put(PURPOSE, PURPOSE_AUTH); - data.put(ENV, SERVER_ACTIVE_PROFILE); + data.put(ENV, getServerActiveProfile()); data.put(DOMAIN_URI, BuildConfig.BASE_URL); String dataBlockJsonString = this.objectMapper.writeValueAsString(data); dataBlock.put(ON_BOARD_BIO_DATA, CryptoUtil.encodeToURLSafeBase64(dataBlockJsonString.getBytes())); diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/spi/MasterDataService.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/spi/MasterDataService.java index 85dce0d45..d44f4e2be 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/spi/MasterDataService.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/spi/MasterDataService.java @@ -150,4 +150,16 @@ public interface MasterDataService { Map getRegistrationParams(); // void downloadUrlData(Path path, JSONObject jsonObject); + + String getCachedStringOnboardYourselfUrl(); + + String getCachedStringRegisteringIndividualUrl(); + + String getCachedStringSyncDataUrl(); + + String getCachedStringMappingDevicesUrl(); + + String getCachedStringUploadingDataUrl(); + + String getCachedStringUpdatingBiometricsUrl(); } diff --git a/android/clientmanager/src/test/java/io/mosip/registration/clientmanager/config/AppModuleTest.java b/android/clientmanager/src/test/java/io/mosip/registration/clientmanager/config/AppModuleTest.java index 77ba35fe9..074a92f43 100644 --- a/android/clientmanager/src/test/java/io/mosip/registration/clientmanager/config/AppModuleTest.java +++ b/android/clientmanager/src/test/java/io/mosip/registration/clientmanager/config/AppModuleTest.java @@ -262,7 +262,7 @@ public void testProvideBiometrics095Service() { public void testProvideUserOnboardService() { UserOnboardService service = appModule.provideUserOnboardService( objectMapper, auditManagerService, certificateManagerService, syncRestService, cryptoManagerService, - mock(RegistrationService.class), userBiometricRepository, clientCryptoManagerService, userDetailRepository + mock(RegistrationService.class), userBiometricRepository, clientCryptoManagerService, userDetailRepository, globalParamRepository ); assertNotNull(service); assertTrue(service instanceof UserOnboardService); diff --git a/android/clientmanager/src/test/java/io/mosip/registration/clientmanager/service/UserOnboardServiceTest.java b/android/clientmanager/src/test/java/io/mosip/registration/clientmanager/service/UserOnboardServiceTest.java index 726eead0d..bab8bcabf 100644 --- a/android/clientmanager/src/test/java/io/mosip/registration/clientmanager/service/UserOnboardServiceTest.java +++ b/android/clientmanager/src/test/java/io/mosip/registration/clientmanager/service/UserOnboardServiceTest.java @@ -24,6 +24,7 @@ import io.mosip.registration.clientmanager.dto.registration.BiometricsDto; import io.mosip.registration.clientmanager.repository.UserBiometricRepository; import io.mosip.registration.clientmanager.repository.UserDetailRepository; +import io.mosip.registration.clientmanager.repository.GlobalParamRepository; import io.mosip.registration.clientmanager.spi.AuditManagerService; import io.mosip.registration.clientmanager.spi.RegistrationService; import io.mosip.registration.clientmanager.spi.SyncRestService; @@ -61,6 +62,8 @@ public class UserOnboardServiceTest { @Mock private RegistrationService registrationService; @Mock + private GlobalParamRepository globalParamRepository; + @Mock private UserBiometricRepository userBiometricRepository; @Mock private ClientCryptoManagerService clientCryptoManagerService; @@ -79,6 +82,7 @@ public void setUp() { when(context.getString(anyInt())).thenReturn("app_name"); when(context.getSharedPreferences(anyString(), anyInt())).thenReturn(sharedPreferences); when(sharedPreferences.getString(anyString(), anyString())).thenReturn("testUserToken"); + when(globalParamRepository.getCachedStringGlobalParam(anyString())).thenReturn("Staging"); userOnboardService = new UserOnboardService( context, objectMapper, @@ -89,7 +93,8 @@ public void setUp() { registrationService, userBiometricRepository, clientCryptoManagerService, - userDetailRepository + userDetailRepository, + globalParamRepository ); // Patch for cases where constructor didn't set sharedPreferences ReflectionTestUtils.setField(userOnboardService, "sharedPreferences", sharedPreferences); @@ -354,7 +359,7 @@ public void testBuildDataBlock_ObjectMapperException() throws Exception { UserOnboardService realService = new UserOnboardService( context, objectMapper, auditManagerService, certificateManagerService, syncRestService, cryptoManagerService, - registrationService, userBiometricRepository, clientCryptoManagerService, userDetailRepository + registrationService, userBiometricRepository, clientCryptoManagerService, userDetailRepository, globalParamRepository ); when(objectMapper.writeValueAsString(any())).thenThrow(new RuntimeException("fail")); ReflectionTestUtils.invokeMethod(realService, "buildDataBlock", "FINGER", "LEFT", "abc".getBytes(), "hash"); @@ -421,7 +426,7 @@ public void testGetCertificate_Cached() { userOnboardService = new UserOnboardService( context, objectMapper, auditManagerService, certificateManagerService, syncRestService, cryptoManagerService, registrationService, userBiometricRepository, - clientCryptoManagerService, userDetailRepository + clientCryptoManagerService, userDetailRepository, globalParamRepository ); final boolean[] called = {false}; ReflectionTestUtils.invokeMethod(userOnboardService, "getCertificate", (Runnable) () -> called[0] = true); @@ -455,7 +460,7 @@ public void testGetCertificate_Network() { userOnboardService = new UserOnboardService( context, objectMapper, auditManagerService, certificateManagerService, syncRestService, cryptoManagerService, registrationService, userBiometricRepository, - clientCryptoManagerService, userDetailRepository + clientCryptoManagerService, userDetailRepository, globalParamRepository ); final boolean[] called = {false}; ReflectionTestUtils.invokeMethod(userOnboardService, "getCertificate", (Runnable) () -> called[0] = true); @@ -773,7 +778,7 @@ public void testGetCertificate_Network_ErrorOnResponse() { userOnboardService = new UserOnboardService( context, objectMapper, auditManagerService, certificateManagerService, syncRestService, cryptoManagerService, registrationService, userBiometricRepository, - clientCryptoManagerService, userDetailRepository + clientCryptoManagerService, userDetailRepository, globalParamRepository ); final boolean[] called = {false}; ReflectionTestUtils.invokeMethod(userOnboardService, "getCertificate", (Runnable) () -> called[0] = true); @@ -803,7 +808,7 @@ public void testGetCertificate_Network_OnFailure() { userOnboardService = new UserOnboardService( context, objectMapper, auditManagerService, certificateManagerService, syncRestService, cryptoManagerService, registrationService, userBiometricRepository, - clientCryptoManagerService, userDetailRepository + clientCryptoManagerService, userDetailRepository, globalParamRepository ); final boolean[] called = {false}; ReflectionTestUtils.invokeMethod(userOnboardService, "getCertificate", (Runnable) () -> called[0] = true); diff --git a/lib/platform_android/biometrics_service_impl.dart b/lib/platform_android/biometrics_service_impl.dart index c7f87bc83..a65d89a38 100644 --- a/lib/platform_android/biometrics_service_impl.dart +++ b/lib/platform_android/biometrics_service_impl.dart @@ -180,6 +180,19 @@ class BiometricsServiceImpl implements BiometricsService { return deviceList; } + @override + Future getOperatorOnboardingBioattributes() async { + String response = ''; + try { + response = await BiometricsApi().getOperatorOnboardingBioattributes(); + } on PlatformException { + debugPrint('Operator Onboarding Bioattributes call failed!'); + } catch (e) { + debugPrint('Fetch List of Operator Onboarding Bioattributes failed: ${e.toString()}'); + } + return response; + } + } BiometricsService getBiometricsServiceImpl() => BiometricsServiceImpl(); diff --git a/lib/platform_spi/biometrics_service.dart b/lib/platform_spi/biometrics_service.dart index 49337280a..5653f3343 100644 --- a/lib/platform_spi/biometrics_service.dart +++ b/lib/platform_spi/biometrics_service.dart @@ -39,5 +39,7 @@ abstract class BiometricsService { Future> getListOfDevices(String modality); + Future getOperatorOnboardingBioattributes(); + factory BiometricsService() => getBiometricsServiceImpl(); } diff --git a/lib/provider/global_provider.dart b/lib/provider/global_provider.dart index deac515f7..391a1ff69 100644 --- a/lib/provider/global_provider.dart +++ b/lib/provider/global_provider.dart @@ -225,6 +225,50 @@ class GlobalProvider with ChangeNotifier { notifyListeners(); } + // Help / guide URLs fetched from global params + String _onboardYourselfUrl = ""; + String _registeringIndividualUrl = ""; + String _syncDataUrl = ""; + String _mappingDevicesUrl = ""; + String _uploadingDataUrl = ""; + String _updatingBiometricsUrl = ""; + + String get onboardYourselfUrl => _onboardYourselfUrl; + set onboardYourselfUrl(String value) { + _onboardYourselfUrl = value; + notifyListeners(); + } + + String get registeringIndividualUrl => _registeringIndividualUrl; + set registeringIndividualUrl(String value) { + _registeringIndividualUrl = value; + notifyListeners(); + } + + String get syncDataUrl => _syncDataUrl; + set syncDataUrl(String value) { + _syncDataUrl = value; + notifyListeners(); + } + + String get mappingDevicesUrl => _mappingDevicesUrl; + set mappingDevicesUrl(String value) { + _mappingDevicesUrl = value; + notifyListeners(); + } + + String get uploadingDataUrl => _uploadingDataUrl; + set uploadingDataUrl(String value) { + _uploadingDataUrl = value; + notifyListeners(); + } + + String get updatingBiometricsUrl => _updatingBiometricsUrl; + set updatingBiometricsUrl(String value) { + _updatingBiometricsUrl = value; + notifyListeners(); + } + saveVersionToGlobalParam(String id, String version) async { await networkService.saveVersionToGlobalParam(id, version); } diff --git a/lib/ui/onboard/onboard_landing_page.dart b/lib/ui/onboard/onboard_landing_page.dart index 995f0062f..e5af7f5b3 100644 --- a/lib/ui/onboard/onboard_landing_page.dart +++ b/lib/ui/onboard/onboard_landing_page.dart @@ -35,13 +35,9 @@ class OnboardLandingPage extends StatelessWidget { } } - _getStringValueGlobalParamAction(BuildContext context, String key) async { - await context - .read() - .getStringValueGlobalParam(key); - String res = - context.read().stringValueGlobalParam; - await goToUrl(res); + Future _openUrlIfPresent(String url) async { + if (url.isEmpty) return; + await goToUrl(url); } @override @@ -53,48 +49,47 @@ class OnboardLandingPage extends StatelessWidget { "icon": "assets/images/Onboarding Yourself.png", "title": "Onboarding Yourself", "onTap": () { - _getStringValueGlobalParamAction( - context, "mosip.registration.onboard_yourself_url"); + _openUrlIfPresent( + context.read().onboardYourselfUrl); }, }, { "icon": "assets/images/Onboarding Yourself.png", "title": "Registering an Individual", "onTap": () async { - _getStringValueGlobalParamAction( - context, "mosip.registration.registering_individual_url"); + _openUrlIfPresent( + context.read().registeringIndividualUrl); }, }, { "icon": "assets/images/Synchronising Data.png", "title": "Synchronising Data", "onTap": () async { - _getStringValueGlobalParamAction( - context, "mosip.registration.sync_data_url"); + _openUrlIfPresent(context.read().syncDataUrl); }, }, { "icon": "assets/images/fingerprint_icon.png", "title": "Mapping Devices to Machine", "onTap": () async { - _getStringValueGlobalParamAction( - context, "mosip.registration.mapping_devices_url"); + _openUrlIfPresent( + context.read().mappingDevicesUrl); }, }, { "icon": "assets/images/Uploading Local - Registration Data.png", "title": "Uploading Local/Registration Data", "onTap": () async { - _getStringValueGlobalParamAction( - context, "mosip.registration.uploading_data_url"); + _openUrlIfPresent( + context.read().uploadingDataUrl); }, }, { "icon": "assets/images/fingerprint_icon.png", "title": "Updating Operator Biometrics", "onTap": () async { - _getStringValueGlobalParamAction( - context, "mosip.registration.updating_biometrics_url"); + _openUrlIfPresent( + context.read().updatingBiometricsUrl); }, }, ]; diff --git a/lib/ui/onboard/widgets/operator_onboarding_biometrics_capture_control.dart b/lib/ui/onboard/widgets/operator_onboarding_biometrics_capture_control.dart index abdc6d503..6d4d2c22f 100644 --- a/lib/ui/onboard/widgets/operator_onboarding_biometrics_capture_control.dart +++ b/lib/ui/onboard/widgets/operator_onboarding_biometrics_capture_control.dart @@ -34,7 +34,7 @@ class OperatorOnboardingBiometricsCaptureControlInitialization Widget build(BuildContext context) { _getOperatorOnboardingAttributes() async { await BiometricsApi() - .getMapValue("mosip.registration.operator.onboarding.bioattributes") + .getOperatorOnboardingBioattributes() .then((value) { context.read().operatorOnboardingAttributes = value; }); diff --git a/pigeon/biometrics.dart b/pigeon/biometrics.dart index e844ebbe8..13af3305f 100644 --- a/pigeon/biometrics.dart +++ b/pigeon/biometrics.dart @@ -63,4 +63,7 @@ abstract class BiometricsApi { @async List getListOfDevices(String modality); + + @async + String getOperatorOnboardingBioattributes(); } diff --git a/pigeon/common_details.dart b/pigeon/common_details.dart index e35abe2ae..c7aecdc9c 100644 --- a/pigeon/common_details.dart +++ b/pigeon/common_details.dart @@ -16,4 +16,16 @@ abstract class CommonDetailsApi { String getVersionFromGlobalParam(String id); @async String saveScreenHeaderToGlobalParam(String id, String value); + @async + String getOnboardYourselfUrl(); + @async + String getRegisteringIndividualUrl(); + @async + String getSyncDataUrl(); + @async + String getMappingDevicesUrl(); + @async + String getUploadingDataUrl(); + @async + String getUpdatingBiometricsUrl(); }