diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2fc09fc..0de6700 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ + + generalSettingLD = CrystalDatabase.getAppDatabase(getContext()).generalSettingDao().getByName(GeneralSetting.SETTING_PASSWORD); + + generalSettingLD.observe(this, new Observer() { @Override - public void onCarryOut() { - if (backupFileRequest.getStatus() == CreateBackupRequest.StatusCode.SUCCEEDED){ - Toast toast = Toast.makeText( - getContext(), "Backup done! File: "+backupFileRequest.getFilePath(), Toast.LENGTH_LONG); - toast.show(); - } else if (backupFileRequest.getStatus() == CreateBackupRequest.StatusCode.FAILED){ - Toast toast = Toast.makeText( - getContext(), "An error ocurred while making the backup!", Toast.LENGTH_LONG); - toast.show(); + public void onChanged(@Nullable GeneralSetting generalSetting) { + String password = ""; + if (generalSetting != null) { + password = generalSetting.getValue(); } + + final CreateBackupRequest backupFileRequest = new CreateBackupRequest(getContext(), password); + + backupFileRequest.setListener(new FileServiceRequestListener() { + @Override + public void onCarryOut() { + if (backupFileRequest.getStatus() == CreateBackupRequest.StatusCode.SUCCEEDED){ + Toast toast = Toast.makeText( + getContext(), "Backup done! File: "+backupFileRequest.getFilePath(), Toast.LENGTH_LONG); + toast.show(); + } else if (backupFileRequest.getStatus() == CreateBackupRequest.StatusCode.FAILED){ + Toast toast = Toast.makeText( + getContext(), "An error ocurred while making the backup!", Toast.LENGTH_LONG); + toast.show(); + } + } + }); + + FileServiceRequests.getInstance().addRequest(backupFileRequest); } }); - - FileServiceRequests.getInstance().addRequest(backupFileRequest); } } } diff --git a/app/src/main/java/cy/agorise/crystalwallet/manager/FileBackupManager.java b/app/src/main/java/cy/agorise/crystalwallet/manager/FileBackupManager.java index ccd1ec3..b423df3 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/manager/FileBackupManager.java +++ b/app/src/main/java/cy/agorise/crystalwallet/manager/FileBackupManager.java @@ -100,6 +100,11 @@ public class FileBackupManager implements FileServiceRequestsListener { String folder = Environment.getExternalStorageDirectory() + File.separator + "Crystal"; //TODO make constant String path = folder + File.separator + fileName + dateHourString +".bin"; + File folderFile = new File(folder); + if (!folderFile.exists()) { + folderFile.mkdir(); + } + boolean success = saveBinFile(path,content,request); if(success) { request.setFilePath(path); diff --git a/app/src/main/java/cy/agorise/crystalwallet/service/CrystalWalletService.java b/app/src/main/java/cy/agorise/crystalwallet/service/CrystalWalletService.java index 2c2aeca..1fb1442 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/service/CrystalWalletService.java +++ b/app/src/main/java/cy/agorise/crystalwallet/service/CrystalWalletService.java @@ -15,6 +15,7 @@ import android.util.Log; import java.util.ArrayList; import java.util.List; +import cy.agorise.crystalwallet.manager.FileBackupManager; import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests; import cy.agorise.crystalwallet.dao.CrystalDatabase; import cy.agorise.crystalwallet.enums.CryptoNet; @@ -26,6 +27,8 @@ import cy.agorise.crystalwallet.models.CryptoNetAccount; import cy.agorise.crystalwallet.models.GeneralSetting; import cy.agorise.crystalwallet.models.GrapheneAccount; import cy.agorise.crystalwallet.models.GrapheneAccountInfo; +import cy.agorise.crystalwallet.requestmanagers.FileServiceRequest; +import cy.agorise.crystalwallet.requestmanagers.FileServiceRequests; /** * Created by Henry Varona on 3/10/2017. @@ -42,6 +45,8 @@ public class CrystalWalletService extends LifecycleService { private boolean keepLoadingAccountTransactions; private boolean keepLoadingEquivalences; private CryptoNetInfoRequests cryptoNetInfoRequests; + private FileBackupManager fileBackupManager; + private FileServiceRequests fileServiceRequests; // Handler that receives messages from the thread private final class ServiceHandler extends Handler { @@ -160,11 +165,15 @@ public class CrystalWalletService extends LifecycleService { super.onCreate(); //Creates a instance for the cryptoNetInfoRequest and the managers this.cryptoNetInfoRequests = CryptoNetInfoRequests.getInstance(); + this.fileServiceRequests = FileServiceRequests.getInstance(); this.bitsharesAccountManager = new BitsharesAccountManager(); + this.fileBackupManager = new FileBackupManager(); //Add the managers as listeners of the CryptoNetInfoRequest so //they can carry out the info requests from the ui this.cryptoNetInfoRequests.addListener(this.bitsharesAccountManager); + + this.fileServiceRequests.addListener(this.fileBackupManager); } @Override