Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
03f4b26
Raise gradle version.
Sep 5, 2018
602d875
Update all dependencies.
Sep 5, 2018
857ff38
#95. Kotlinify EditAccountActivity.
Sep 5, 2018
bba8d27
#95. Move EditAccountActivity to activity.account.edit package.
Sep 5, 2018
a942879
#95. Partly move logic from EditAccountActivity to EditAccountFragment.
Sep 5, 2018
ababa1e
#95. Completely move all logic to EditAccountFragment.
Sep 6, 2018
bc6c4c0
#95. Ongoing refactoring.
Sep 6, 2018
b49d2b1
#95. Add AccountRecordFragment.
Sep 6, 2018
05c19ab
#95. Display account records.
Sep 6, 2018
bd7615d
#95. Rename FragmentAccountRecords to FragmentAccountOperations.
Sep 6, 2018
85e09ab
#95. Kotlinify TransferController.
Sep 10, 2018
710f433
#95. Display transfers as records in account operations.
Sep 10, 2018
3c75b2c
#95. Refactor AccountOperationsFragment.
Sep 10, 2018
7cc5dae
#95. Add tabs to EditAccountActivity.
Sep 10, 2018
db929b8
#95. Add localization.
Sep 10, 2018
6b4b778
#95. Hide FAB when going to Operations tab.
Sep 11, 2018
b622cbd
#95. Updated .travis.yml.
Sep 11, 2018
84e3b7f
Merge pull request #156 from evgenii-kanivets/feature-95_account_oper…
Sep 11, 2018
3e76c15
#150. Add 'Delete' button to backup item view.
Sep 11, 2018
01e5fb2
#150. Implement delete backup listener.
Sep 12, 2018
b4af995
#150. Extract async tasks from BackupController.
Sep 12, 2018
64cae2d
#150. Refactore BackupListener.
Sep 12, 2018
e9c945e
#150. Consolidate OnBackupListener.
Sep 12, 2018
953ca7e
#150. Implement Dropbox backup removal.
Sep 15, 2018
3e396b0
Merge pull request #157 from evgenii-kanivets/feature-150_dropbox_del…
Sep 15, 2018
3bb5ab2
Add 'Removing backup' message.
Sep 15, 2018
24fbc63
#134. Add account goal to EditAccountFragment.
Sep 16, 2018
ea19a2c
#134. Formatting.
Sep 16, 2018
1be7fed
Merge pull request #158 from evgenii-kanivets/feature-134_account_goal
Sep 16, 2018
9fb0339
#153. Add 'NON susbstitution currency' setting.
Sep 16, 2018
1898059
#153. Substitute NON currency in RecordController.
Sep 17, 2018
8015367
#153. Substitute NON currency in AccountController.
Sep 17, 2018
b6924c7
#153. Fine tune CurrencyController.
Sep 17, 2018
1dd6dd4
#153. Fix RecordControllerTest.
Sep 17, 2018
69aab3f
Merge pull request #159 from evgenii-kanivets/feature-153_non_substit…
Sep 17, 2018
69e2186
#155. Fix record layout.
Sep 17, 2018
e824ff1
Merge pull request #160 from evgenii-kanivets/bugfix-155
Sep 17, 2018
6e9450a
Fix tests.
Sep 17, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
#150. Consolidate OnBackupListener.
  • Loading branch information
Evgenii Kanivets committed Sep 12, 2018
commit e9c945e7183d2d7ed99691a1bda5cc1beee5703e
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
import org.jetbrains.annotations.NotNull;
import timber.log.Timber;

public class BackupActivity extends BaseBackActivity implements BackupAdapter.OnBackupListener {
public class BackupActivity extends BaseBackActivity
implements BackupAdapter.OnBackupListener, BackupController.OnBackupListener {
private static final String APP_KEY = "5lqugcckdy9y6lj";

@Inject PreferenceController preferenceController;
Expand All @@ -51,6 +52,7 @@ public class BackupActivity extends BaseBackActivity implements BackupAdapter.On
} else {
DbxRequestConfig config = new DbxRequestConfig("open_money_tracker");
dbClient = new DbxClientV2(config, accessToken);
backupController.setOnBackupListener(this);
fetchBackups();
}

Expand Down Expand Up @@ -91,30 +93,72 @@ public class BackupActivity extends BaseBackActivity implements BackupAdapter.On
builder.show();
}

@OnClick(R.id.btn_backup_now) public void backupNow() {
AnswersProxy.get().logButton("Make Backup");
startProgress(getString(R.string.making_backup));
backupController.makeBackup(dbClient, new BackupController.OnBackupListener() {
@Override public void onBackupSuccess() {
AnswersProxy.get().logEvent("Backup success");
Timber.d("Backup success.");
if (isFinishing()) return;
@Override public void onBackupsFetched(@NonNull List<String> backupList) {
if (isFinishing()) return;

stopProgress();
fetchBackups();
}
stopProgress();

BackupAdapter backupAdapter = new BackupAdapter(BackupActivity.this, backupList);
backupAdapter.setOnBackupListener(BackupActivity.this);
listView.setAdapter(backupAdapter);
}

@Override public void onBackupSuccess() {
AnswersProxy.get().logEvent("Backup success");
Timber.d("Backup success.");
if (isFinishing()) return;

stopProgress();
fetchBackups();
}

@Override public void onBackupFailure(String reason) {
AnswersProxy.get().logEvent("Backup failure");
Timber.d("Backup failure.");
if (isFinishing()) return;

stopProgress();
showToast(R.string.failed_create_backup);

if (BackupController.OnBackupListener.ERROR_AUTHENTICATION.equals(reason)) logout();
}

@Override public void onBackupFailure(String reason) {
AnswersProxy.get().logEvent("Backup failure");
Timber.d("Backup failure.");
if (isFinishing()) return;
@Override public void onRestoreSuccess(@NonNull String backupName) {
AnswersProxy.get().logEvent("Restore Success");
Timber.d("Restore success.");
if (isFinishing()) return;

stopProgress();
showToast(R.string.failed_create_backup);
stopProgress();

if (BackupController.OnBackupListener.ERROR_AUTHENTICATION.equals(reason)) logout();
AlertDialog.Builder builder = new AlertDialog.Builder(BackupActivity.this);
builder.setTitle(getString(R.string.backup_is_restored));
builder.setMessage(getString(R.string.backup_restored, backupName));
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override public void onDismiss(DialogInterface dialog) {
MtApp.get().buildAppComponent();
setResult(RESULT_OK);
finish();
}
});
builder.setPositiveButton(android.R.string.ok, null);
builder.show();
}

@Override public void onRestoreFailure(String reason) {
AnswersProxy.get().logEvent("Restore Failure");
Timber.d("Restore failure.");
if (isFinishing()) return;

stopProgress();
showToast(R.string.failed_restore_backup);

if (BackupController.OnBackupListener.ERROR_AUTHENTICATION.equals(reason)) logout();
}

@OnClick(R.id.btn_backup_now) public void backupNow() {
AnswersProxy.get().logButton("Make Backup");
startProgress(getString(R.string.making_backup));
backupController.makeBackup(dbClient);
}

@OnItemClick(R.id.list_view) public void restoreBackupClicked(int position) {
Expand All @@ -135,54 +179,12 @@ public class BackupActivity extends BaseBackActivity implements BackupAdapter.On

private void restoreBackup(final String backupName) {
startProgress(getString(R.string.restoring_backup));
backupController.restoreBackup(dbClient, backupName, new BackupController.OnRestoreBackupListener() {
@Override public void onRestoreSuccess() {
AnswersProxy.get().logEvent("Restore Success");
Timber.d("Restore success.");
if (isFinishing()) return;

stopProgress();

AlertDialog.Builder builder = new AlertDialog.Builder(BackupActivity.this);
builder.setTitle(getString(R.string.backup_is_restored));
builder.setMessage(getString(R.string.backup_restored, backupName));
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override public void onDismiss(DialogInterface dialog) {
MtApp.get().buildAppComponent();
setResult(RESULT_OK);
finish();
}
});
builder.setPositiveButton(android.R.string.ok, null);
builder.show();
}

@Override public void onRestoreFailure(String reason) {
AnswersProxy.get().logEvent("Restore Failure");
Timber.d("Restore failure.");
if (isFinishing()) return;

stopProgress();
showToast(R.string.failed_restore_backup);

if (BackupController.OnRestoreBackupListener.ERROR_AUTHENTICATION.equals(reason)) logout();
}
});
backupController.restoreBackup(dbClient, backupName);
}

private void fetchBackups() {
startProgress(getString(R.string.fetching_backups));
backupController.fetchBackups(dbClient, new BackupController.OnFetchBackupListListener() {
@Override public void onBackupsFetched(@NonNull List<String> backupList) {
if (isFinishing()) return;

stopProgress();

BackupAdapter backupAdapter = new BackupAdapter(BackupActivity.this, backupList);
backupAdapter.setOnBackupListener(BackupActivity.this);
listView.setAdapter(backupAdapter);
}
});
backupController.fetchBackups(dbClient);
}

private void deleteBackup(String backupName) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.blogspot.e_kanivets.moneytracker.controller.backup

import com.blogspot.e_kanivets.moneytracker.controller.FormatController
import com.blogspot.e_kanivets.moneytracker.controller.backup.tasks.DropboxBackupAsyncTask
import com.blogspot.e_kanivets.moneytracker.controller.backup.tasks.DropboxFetchBackupListAsyncTask
import com.blogspot.e_kanivets.moneytracker.controller.backup.tasks.DropboxRestoreBackupAsyncTask
import com.dropbox.core.v2.DbxClientV2

/**
* Controller class to encapsulate backup logic.
* Created on 8/10/16.
*
* @author Evgenii Kanivets
*/
class BackupController(private val formatController: FormatController, filesDir: String) {

var onBackupListener: OnBackupListener? = null

private val appDbFileName: String = "$filesDir/databases/database"

fun makeBackup(dbClient: DbxClientV2) {
val fileName = formatController.formatDateAndTime(System.currentTimeMillis())
val asyncTask = DropboxBackupAsyncTask(dbClient, fileName, appDbFileName, onBackupListener)
asyncTask.execute()
}

fun restoreBackup(dbClient: DbxClientV2, backupName: String) {
val asyncTask = DropboxRestoreBackupAsyncTask(dbClient, appDbFileName, backupName, onBackupListener)
asyncTask.execute()
}

fun fetchBackups(dbClient: DbxClientV2) {
val asyncTask = DropboxFetchBackupListAsyncTask(dbClient, onBackupListener)
asyncTask.execute()
}

interface OnBackupListener {

fun onBackupsFetched(backupList: List<String>)

fun onBackupSuccess()

fun onBackupFailure(reason: String?)

fun onRestoreSuccess(backupName: String)

fun onRestoreFailure(reason: String?)

companion object {
const val SUCCESS = "success"
const val ERROR_AUTHENTICATION = "error_authentication"
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ public class DropboxFetchBackupListAsyncTask extends AsyncTask<Void, List<String
private DbxClientV2 dbClient;

@Nullable
private BackupController.OnFetchBackupListListener listener;
private BackupController.OnBackupListener listener;

public DropboxFetchBackupListAsyncTask(DbxClientV2 dbClient,
@Nullable BackupController.OnFetchBackupListListener listener) {
@Nullable BackupController.OnBackupListener listener) {
this.dbClient = dbClient;
this.listener = listener;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ public class DropboxRestoreBackupAsyncTask extends AsyncTask<Void, String, Strin
private String appDbFileName;
private String backupName;

@Nullable private BackupController.OnRestoreBackupListener listener;
@Nullable private BackupController.OnBackupListener listener;

public DropboxRestoreBackupAsyncTask(DbxClientV2 dbClient, String appDbFileName, String backupName,
@Nullable BackupController.OnRestoreBackupListener listener) {
@Nullable BackupController.OnBackupListener listener) {
this.dbClient = dbClient;
this.appDbFileName = appDbFileName;
this.backupName = backupName;
Expand Down Expand Up @@ -72,7 +72,7 @@ public DropboxRestoreBackupAsyncTask(DbxClientV2 dbClient, String appDbFileName,
if (listener == null) return;

if (BackupController.OnBackupListener.SUCCESS.equals(result)) {
listener.onRestoreSuccess();
listener.onRestoreSuccess(backupName);
} else {
listener.onRestoreFailure(result);
}
Expand Down