Skip to content

Commit

Permalink
New toast design and bugs fixes (#402)
Browse files Browse the repository at this point in the history
* New toast design added

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>

* Changes on flutter side

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>

* new toast for all sync, upload and code cleanup

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>

* bug fixes and inputs from meeting

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>

* all language added to export page

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>

* filtered out uploaded packets

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>

* retaining latest versions

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>

* prakash changes added

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>

---------

Signed-off-by: Aditya Singh <aditya.singh509@ad.infosys.com>
Signed-off-by: Aditya Singh <62157757+developer-aditya@users.noreply.github.com>
Co-authored-by: Aditya Singh <aditya.singh509@ad.infosys.com>
  • Loading branch information
developer-aditya and Aditya Singh authored Aug 7, 2024
1 parent 5f02725 commit 6608de0
Show file tree
Hide file tree
Showing 40 changed files with 886 additions and 369 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@
import io.mosip.registration_client.model.TransliterationPigeon;
import io.mosip.registration_client.model.UserPigeon;
import io.mosip.registration_client.model.DocumentDataPigeon;
import io.mosip.registration_client.utils.BatchJob;
import io.mosip.registration_client.utils.CustomToast;

import android.net.Uri;

Expand Down Expand Up @@ -167,7 +169,6 @@ public class MainActivity extends FlutterActivity {
@Inject
DocumentDetailsApi documentDetailsApi;


@Inject
DynamicDetailsApi dynamicDetailsApi;

Expand All @@ -188,16 +189,19 @@ public class MainActivity extends FlutterActivity {
@Inject
DashBoardDetailsApi dashBoardDetailsApi;

@Inject
BatchJob batchJob;

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("REGISTRATION_PACKET_UPLOAD")) {
syncRegistrationPackets(context);
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(()-> {
createBackgroundTask("registrationPacketUploadJob");
}, 1, TimeUnit.MINUTES);
}
if (intent.getAction().equals("REGISTRATION_PACKET_UPLOAD")) {
batchJob.syncRegistrationPackets(context);
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(()-> {
createBackgroundTask("registrationPacketUploadJob");
}, 1, TimeUnit.MINUTES);
}
}
};

Expand Down Expand Up @@ -240,7 +244,7 @@ void createBackgroundTask(String api){
permissionIntent.setData(Uri.fromParts("package", getPackageName(), null));
startActivity(permissionIntent);
}
long alarmTime = getIntervalMillis(api);
long alarmTime = batchJob.getIntervalMillis(api);
long currentTime = System.currentTimeMillis();
long delay = alarmTime > currentTime ? alarmTime - currentTime : alarmTime - currentTime;
Log.d(getClass().getSimpleName(), String.valueOf(delay)+ " Next Execution");
Expand All @@ -256,91 +260,6 @@ void createBackgroundTask(String api){
}
}

private void syncRegistrationPackets(Context context) {
if(NetworkUtils.isNetworkConnected(context)){
Log.d(getClass().getSimpleName(), "Sync Packets in main activity");
Integer batchSize = getBatchSize();
List<Registration> registrationList = packetService.getRegistrationsByStatus(PacketClientStatus.APPROVED.name(), batchSize);

// Variable is accessed within inner class. Needs to be declared final also it is modified too in the inner class
// Solution: using final array variable with one element that can be altered
final Integer[] remainingPack = {registrationList.size()};

if(registrationList.isEmpty()){
uploadRegistrationPackets(context);
return;
}
for (Registration value : registrationList) {
try {
Log.d(getClass().getSimpleName(), "Syncing " + value.getPacketId());
auditManagerService.audit(AuditEvent.SYNC_PACKET, Components.REG_PACKET_LIST);
packetService.syncRegistration(value.getPacketId(), new AsyncPacketTaskCallBack() {
@Override
public void inProgress(String RID) {
//Do nothing
}

@Override
public void onComplete(String RID, PacketTaskStatus status) {
remainingPack[0] -= 1;
Log.d(getClass().getSimpleName(), "Remaining pack"+ remainingPack[0]);
if(remainingPack[0] == 0){
Log.d(getClass().getSimpleName(), "Last Packet"+RID);
uploadRegistrationPackets(context);
}
}
});
} catch (Exception e) {
Log.e(getClass().getSimpleName(), e.getMessage());
}
}
}
}

private void uploadRegistrationPackets(Context context) {
if(NetworkUtils.isNetworkConnected(context)){
Log.d(getClass().getSimpleName(), "Upload Packets in main activity");
Integer batchSize = getBatchSize();
List<Registration> registrationList = packetService.getRegistrationsByStatus(PacketClientStatus.SYNCED.name(), batchSize);
for (Registration value : registrationList) {
try {
Log.d(getClass().getSimpleName(), "Uploading " + value.getPacketId());
auditManagerService.audit(AuditEvent.UPLOAD_PACKET, Components.REG_PACKET_LIST);
packetService.uploadRegistration(value.getPacketId());
} catch (Exception e) {
Log.e(getClass().getSimpleName(), e.getMessage());
}
}
}
}

private Integer getBatchSize(){
// Default batch size is 4
List<GlobalParam> globalParams = globalParamDao.getGlobalParams();
for (GlobalParam value : globalParams) {
if (Objects.equals(value.getId(), "mosip.registration.packet_upload_batch_size")) {
return Integer.parseInt(value.getValue());
}
}
return ClientManagerConstant.DEFAULT_BATCH_SIZE;
}

private long getIntervalMillis(String api){
// Default everyday at Noon - 12pm
String cronExp = ClientManagerConstant.DEFAULT_UPLOAD_CRON;
List<SyncJobDef> syncJobs = syncJobDefRepository.getAllSyncJobDefList();
for (SyncJobDef value : syncJobs) {
if (Objects.equals(value.getApiName(), api)) {
Log.d(getClass().getSimpleName(), api + " Cron Expression : " + String.valueOf(value.getSyncFreq()));
cronExp = String.valueOf(value.getSyncFreq());
break;
}
}
long nextExecution = CronParserUtil.getNextExecutionTimeInMillis(cronExp);
Log.d(getClass().getSimpleName(), " Next Execution : " + String.valueOf(nextExecution));
return nextExecution;
}

public void initializeAppComponent() {
AppComponent appComponent = DaggerAppComponent.builder()
.application(getApplication())
Expand All @@ -349,7 +268,6 @@ public void initializeAppComponent() {
.appModule(new AppModule(getApplication()))
.hostApiModule(new HostApiModule(getApplication()))
.build();

appComponent.inject(this);
}

Expand All @@ -367,16 +285,17 @@ public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
biometricsDetailsApi.setCallbackActivity(this);
RegistrationDataPigeon.RegistrationDataApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), registrationApi);
PacketAuthPigeon.PacketAuthApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), packetAuthenticationApi);
packetAuthenticationApi.setCallbackActivity(this);
DemographicsDataPigeon.DemographicsApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), demographicsDetailsApi);
DocumentDataPigeon.DocumentApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), documentDetailsApi);
DocumentCategoryPigeon.DocumentCategoryApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), documentCategoryApi);
DashBoardPigeon.DashBoardApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), dashBoardDetailsApi);

TransliterationPigeon.TransliterationApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(),new TransliterationApi(new TransliterationServiceImpl()));
DynamicResponsePigeon.DynamicResponseApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), dynamicDetailsApi);
batchJob.setCallbackActivity(this);
MasterDataSyncPigeon.SyncApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), masterDataSyncApi);
masterDataSyncApi.setCallbackActivity(this);

masterDataSyncApi.setCallbackActivity(this, batchJob);
AuditResponsePigeon.AuditResponseApi.setup(flutterEngine.getDartExecutor().getBinaryMessenger(), auditDetailsApi);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,18 @@

import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.List;
import java.util.Objects;

import javax.inject.Inject;
import javax.inject.Singleton;

import io.mosip.registration.clientmanager.constant.AuditEvent;
import io.mosip.registration.clientmanager.constant.ClientManagerConstant;
import io.mosip.registration.clientmanager.constant.Components;
import io.mosip.registration.clientmanager.constant.PacketClientStatus;
import io.mosip.registration.clientmanager.constant.PacketTaskStatus;
import io.mosip.registration.clientmanager.dao.FileSignatureDao;
import io.mosip.registration.clientmanager.dao.GlobalParamDao;
import io.mosip.registration.clientmanager.dto.CenterMachineDto;

import io.mosip.registration.clientmanager.entity.GlobalParam;
import io.mosip.registration.clientmanager.entity.Registration;
import io.mosip.registration.clientmanager.entity.SyncJobDef;
import io.mosip.registration.clientmanager.exception.ClientCheckedException;

import io.mosip.registration.clientmanager.repository.ApplicantValidDocRepository;
import io.mosip.registration.clientmanager.repository.BlocklistedWordRepository;
import io.mosip.registration.clientmanager.repository.DocumentTypeRepository;
Expand All @@ -56,7 +50,6 @@
import io.mosip.registration.clientmanager.repository.SyncJobDefRepository;
import io.mosip.registration.clientmanager.repository.TemplateRepository;
import io.mosip.registration.clientmanager.repository.UserDetailRepository;
import io.mosip.registration.clientmanager.spi.AsyncPacketTaskCallBack;
import io.mosip.registration.clientmanager.spi.AuditManagerService;
import io.mosip.registration.clientmanager.spi.JobManagerService;
import io.mosip.registration.clientmanager.spi.MasterDataService;
Expand All @@ -65,9 +58,8 @@
import io.mosip.registration.clientmanager.spi.SyncRestService;
import io.mosip.registration.keymanager.spi.CertificateManagerService;
import io.mosip.registration.keymanager.spi.ClientCryptoManagerService;
import io.mosip.registration_client.CronParserUtil;
import io.mosip.registration_client.utils.BatchJob;
import io.mosip.registration_client.MainActivity;
import io.mosip.registration_client.NetworkUtils;
import io.mosip.registration_client.UploadBackgroundService;
import io.mosip.registration_client.model.MasterDataSyncPigeon;

Expand Down Expand Up @@ -105,7 +97,7 @@ public class MasterDataSyncApi implements MasterDataSyncPigeon.SyncApi {

private Activity activity;

boolean syncAndUploadInProgressStatus = false;
BatchJob batchJob;

@Inject
public MasterDataSyncApi(ClientCryptoManagerService clientCryptoManagerService, MachineRepository machineRepository, RegistrationCenterRepository registrationCenterRepository, SyncRestService syncRestService, CertificateManagerService certificateManagerService, GlobalParamRepository globalParamRepository, ObjectMapper objectMapper, UserDetailRepository userDetailRepository, IdentitySchemaRepository identitySchemaRepository, Context context, DocumentTypeRepository documentTypeRepository,
Expand Down Expand Up @@ -148,8 +140,9 @@ public MasterDataSyncApi(ClientCryptoManagerService clientCryptoManagerService,
this.preRegistrationDataSyncService = preRegistrationDataSyncService;
}

public void setCallbackActivity(MainActivity mainActivity){
public void setCallbackActivity(MainActivity mainActivity, BatchJob batchJob){
this.activity=mainActivity;
this.batchJob = batchJob;
}

@Override
Expand Down Expand Up @@ -255,7 +248,7 @@ public void getCaCertsSync(@NonNull Boolean isManualSync, @NonNull MasterDataSyn

@Override
public void batchJob(@NonNull MasterDataSyncPigeon.Result<String> result) {
syncRegistrationPackets(this.context);
batchJob.syncRegistrationPackets(this.context);
result.success("Registration Packet Sync Completed.");
}

Expand Down Expand Up @@ -290,7 +283,7 @@ public void getKernelCertsSync(@NonNull Boolean isManualSync, @NonNull MasterDat

@Override
public void getSyncAndUploadInProgressStatus(@NonNull MasterDataSyncPigeon.Result<Boolean> result) {
result.success(syncAndUploadInProgressStatus);
result.success(batchJob.getInProgressStatus());
}

void resetAlarm(String api){
Expand Down Expand Up @@ -318,7 +311,7 @@ void resetAlarm(String api){
permissionIntent.setData(Uri.fromParts("package", activity.getPackageName(), null));
activity.startActivity(permissionIntent);
}
long alarmTime = getIntervalMillis(api);
long alarmTime = batchJob.getIntervalMillis(api);
long currentTime = System.currentTimeMillis();
long delay = alarmTime > currentTime ? alarmTime - currentTime : alarmTime - currentTime;
Log.d(getClass().getSimpleName(), String.valueOf(delay)+ " Next Execution");
Expand All @@ -333,95 +326,4 @@ void resetAlarm(String api){
}
}
}

private void syncRegistrationPackets(Context context) {
if (NetworkUtils.isNetworkConnected(context)) {
Log.d(getClass().getSimpleName(), "Sync Packets in main activity");
Integer batchSize = getBatchSize();
List<Registration> registrationList = packetService.getRegistrationsByStatus(PacketClientStatus.APPROVED.name(), batchSize);

// Variable is accessed within inner class. Needs to be declared final also it is modified too in the inner class
// Solution: using final array variable with one element that can be altered
final Integer[] remainingPack = {registrationList.size()};

if (registrationList.isEmpty()) {
uploadRegistrationPackets(context);
return;
}
for (Registration value : registrationList) {
try {
syncAndUploadInProgressStatus = true;
Log.d(getClass().getSimpleName(), "Syncing " + value.getPacketId());
auditManagerService.audit(AuditEvent.SYNC_PACKET, Components.REG_PACKET_LIST);
packetService.syncRegistration(value.getPacketId(), new AsyncPacketTaskCallBack() {
@Override
public void inProgress(String RID) {
//Do nothing
}

@Override
public void onComplete(String RID, PacketTaskStatus status) {
remainingPack[0] -= 1;
Log.d(getClass().getSimpleName(), "Remaining pack" + remainingPack[0]);
if (remainingPack[0] == 0) {
Log.d(getClass().getSimpleName(), "Last Packet" + RID);
uploadRegistrationPackets(context);
}
syncAndUploadInProgressStatus = false;
}
});
} catch (Exception e) {
syncAndUploadInProgressStatus = false;
Log.e(getClass().getSimpleName(), e.getMessage());
}
}
}
}

private void uploadRegistrationPackets(Context context) {
if (NetworkUtils.isNetworkConnected(context)) {
Log.d(getClass().getSimpleName(), "Upload Packets in main activity");
Integer batchSize = getBatchSize();
List<Registration> registrationList = packetService.getRegistrationsByStatus(PacketClientStatus.SYNCED.name(), batchSize);
for (Registration value : registrationList) {
try {
syncAndUploadInProgressStatus = true;
Log.d(getClass().getSimpleName(), "Uploading " + value.getPacketId());
auditManagerService.audit(AuditEvent.UPLOAD_PACKET, Components.REG_PACKET_LIST);
packetService.uploadRegistration(value.getPacketId());
syncAndUploadInProgressStatus = false;
} catch (Exception e) {
syncAndUploadInProgressStatus = false;
Log.e(getClass().getSimpleName(), e.getMessage());
}
}
}
}

private Integer getBatchSize() {
// Default batch size is 4
List<GlobalParam> globalParams = globalParamDao.getGlobalParams();
for (GlobalParam value : globalParams) {
if (Objects.equals(value.getId(), "mosip.registration.packet_upload_batch_size")) {
return Integer.parseInt(value.getValue());
}
}
return ClientManagerConstant.DEFAULT_BATCH_SIZE;
}

private long getIntervalMillis(String api){
// Default everyday at Noon - 12pm
String cronExp = ClientManagerConstant.DEFAULT_UPLOAD_CRON;
List<SyncJobDef> syncJobs = syncJobDefRepository.getAllSyncJobDefList();
for (SyncJobDef value : syncJobs) {
if (Objects.equals(value.getApiName(), api)) {
Log.d(getClass().getSimpleName(), api + " Cron Expression : " + String.valueOf(value.getSyncFreq()));
cronExp = String.valueOf(value.getSyncFreq());
break;
}
}
long nextExecution = CronParserUtil.getNextExecutionTimeInMillis(cronExp);
Log.d(getClass().getSimpleName(), " Next Execution : " + String.valueOf(nextExecution));
return nextExecution;
}
}
Loading

0 comments on commit 6608de0

Please sign in to comment.