Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58022535 authored by Nihar Thakkar's avatar Nihar Thakkar
Browse files

Handle password updates and removal of accounts

parent ee5f6de2
Loading
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ import android.view.View;

import it.niedermann.owncloud.notes.R;

import static it.niedermann.owncloud.notes.android.activity.SettingsActivity.SETTINGS_IS_DEVICE_ACCOUNT;
import static it.niedermann.owncloud.notes.android.activity.SettingsActivity.SETTINGS_KEY_ETAG;
import static it.niedermann.owncloud.notes.android.activity.SettingsActivity.SETTINGS_KEY_LAST_MODIFIED;
import static it.niedermann.owncloud.notes.android.activity.SettingsActivity.SETTINGS_PASSWORD;
@@ -23,7 +24,7 @@ public class AccountActivity extends AppCompatActivity {
    private final static String key_login_account = "login_account";
    private final static String login_account_eelo = "login_account_eelo";
    private final static String login_account_manual = "login_account_manual";
    private final static String eelo_account_type = "bitfire.at.davdroid.eelo";
    public final static String eelo_account_type = "bitfire.at.davdroid.eelo";

    private final static int pick_account_request_code = 1;

@@ -49,6 +50,7 @@ public class AccountActivity extends AppCompatActivity {
                        .getUserData(eeloAccounts[0], "email_address"));
                editor.putString(SETTINGS_PASSWORD, accountManager
                        .getPassword(eeloAccounts[0]));
                editor.putBoolean(SETTINGS_IS_DEVICE_ACCOUNT, true);
                editor.remove(SETTINGS_KEY_ETAG);
                editor.remove(SETTINGS_KEY_LAST_MODIFIED);
                editor.apply();
@@ -106,6 +108,7 @@ public class AccountActivity extends AppCompatActivity {
                                .getUserData(account, "email_address"));
                        editor.putString(SETTINGS_PASSWORD, accountManager
                                .getPassword(account));
                        editor.putBoolean(SETTINGS_IS_DEVICE_ACCOUNT, true);
                        editor.remove(SETTINGS_KEY_ETAG);
                        editor.remove(SETTINGS_KEY_LAST_MODIFIED);
                        editor.apply();
+50 −0
Original line number Diff line number Diff line
package it.niedermann.owncloud.notes.android.activity;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.SearchManager;
import android.content.Intent;
import android.content.res.Configuration;
@@ -7,6 +9,7 @@ import android.graphics.Canvas;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.annotation.Nullable;
import android.support.design.widget.CoordinatorLayout;
@@ -50,6 +53,11 @@ import it.niedermann.owncloud.notes.util.ICallback;
import it.niedermann.owncloud.notes.util.NoteUtil;
import it.niedermann.owncloud.notes.util.NotesClientUtil;

import static it.niedermann.owncloud.notes.android.activity.AccountActivity.eelo_account_type;
import static it.niedermann.owncloud.notes.android.activity.SettingsActivity.SETTINGS_IS_DEVICE_ACCOUNT;
import static it.niedermann.owncloud.notes.android.activity.SettingsActivity.SETTINGS_PASSWORD;
import static it.niedermann.owncloud.notes.android.activity.SettingsActivity.SETTINGS_USERNAME;

public class NotesListViewActivity extends AppCompatActivity implements ItemAdapter.NoteClickListener {

    public final static String CREATED_NOTE = "it.niedermann.owncloud.notes.created_notes";
@@ -69,6 +77,7 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap

    private final static String key_login_account = "login_account";
    private final static String login_account_eelo = "login_account_eelo";
    private final static String key_email_address = "email_address";


    @BindView(R.id.notesListActivityActionBar)
@@ -121,6 +130,15 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap
            Intent settingsIntent = new Intent(this, AccountActivity.class);
            startActivityForResult(settingsIntent, login_account);
        }

        if (PreferenceManager.getDefaultSharedPreferences(this)
                .getBoolean(SETTINGS_IS_DEVICE_ACCOUNT, false)) {
            if (hasAccountBeenRemoved() || hasAccountPasswordChanged()) {
                Intent settingsIntent = new Intent(this, AccountActivity.class);
                startActivityForResult(settingsIntent, login_account);
            }
        }

        String categoryAdapterSelectedItem = ADAPTER_KEY_RECENT;
        if (savedInstanceState != null) {
            navigationSelection = (Category) savedInstanceState.getSerializable(SAVED_STATE_NAVIGATION_SELECTION);
@@ -139,6 +157,38 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap
        setupNavigationMenu();
    }

    private boolean hasAccountBeenRemoved() {
        AccountManager accountManager = AccountManager.get(this);
        String userName = PreferenceManager.getDefaultSharedPreferences(this)
                .getString(SETTINGS_USERNAME, "");
        Account[] eeloAccounts = accountManager.getAccountsByType(eelo_account_type);
        boolean hasAccountBeenRemoved = true;

        for (Account account : eeloAccounts) {
            if (accountManager.getUserData(account, key_email_address).equals(userName)) {
                hasAccountBeenRemoved = false;
                break;
            }
        }
        return hasAccountBeenRemoved;
    }

    private boolean hasAccountPasswordChanged() {
        AccountManager accountManager = AccountManager.get(this);
        String password = PreferenceManager.getDefaultSharedPreferences(this)
                .getString(SETTINGS_PASSWORD, "");
        Account[] eeloAccounts = accountManager.getAccountsByType(eelo_account_type);
        boolean hasAccountPasswordChanged = true;

        for (Account account : eeloAccounts) {
            if (accountManager.getPassword(account).equals(password)) {
                hasAccountPasswordChanged = false;
                break;
            }
        }
        return hasAccountPasswordChanged;
    }

    @Override
    protected void onResume() {
        // refresh and sync every time the activity gets visible
+2 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ public class SettingsActivity extends AppCompatActivity {
    public static final String SETTINGS_PASSWORD = "settingsPassword";
    public static final String SETTINGS_KEY_ETAG = "notes_last_etag";
    public static final String SETTINGS_KEY_LAST_MODIFIED = "notes_last_modified";
    public static final String SETTINGS_IS_DEVICE_ACCOUNT = "is_device_account";
    public static final String DEFAULT_SETTINGS = "";
    public static final int CREDENTIALS_CHANGED = 3;

@@ -255,6 +256,7 @@ public class SettingsActivity extends AppCompatActivity {
                editor.putString(SETTINGS_URL, url);
                editor.putString(SETTINGS_USERNAME, username);
                editor.putString(SETTINGS_PASSWORD, password);
                editor.putBoolean(SETTINGS_IS_DEVICE_ACCOUNT, false);
                editor.remove(SETTINGS_KEY_ETAG);
                editor.remove(SETTINGS_KEY_LAST_MODIFIED);
                editor.apply();

cert4android @ cb7f4adc

Original line number Diff line number Diff line
Subproject commit e9eab2ca70525107d9ee1377602d107c4776c312
Subproject commit cb7f4adc34ec1565faa0427d97c4f0c74dc159de