Use caldav uuid as android account name

pull/645/head
Alex Baker 6 years ago
parent 63dd83c165
commit aa490b632c

@ -3,7 +3,6 @@ package org.tasks.injection;
import org.tasks.activities.CalendarSelectionDialog;
import org.tasks.activities.RemoteListSupportPicker;
import org.tasks.caldav.DeleteAccountDialog;
import org.tasks.caldav.RenameAccountDialog;
import org.tasks.dialogs.AddAttachmentDialog;
import org.tasks.dialogs.ColorPickerDialog;
import org.tasks.dialogs.RecordAudioDialog;
@ -38,6 +37,4 @@ public interface DialogFragmentComponent {
void inject(RemoteListSupportPicker remoteListSupportPicker);
void inject(DeleteAccountDialog deleteAccountDialog);
void inject(RenameAccountDialog renameAccountDialog);
}

@ -3,7 +3,6 @@ package org.tasks.injection;
import org.tasks.activities.CalendarSelectionDialog;
import org.tasks.activities.RemoteListSupportPicker;
import org.tasks.caldav.DeleteAccountDialog;
import org.tasks.caldav.RenameAccountDialog;
import org.tasks.dialogs.AddAttachmentDialog;
import org.tasks.dialogs.ColorPickerDialog;
import org.tasks.dialogs.RecordAudioDialog;
@ -38,6 +37,4 @@ public interface DialogFragmentComponent {
void inject(RemoteListSupportPicker remoteListSupportPicker);
void inject(DeleteAccountDialog deleteAccountDialog);
void inject(RenameAccountDialog renameAccountDialog);
}

@ -3,7 +3,6 @@ package org.tasks.injection;
import org.tasks.activities.CalendarSelectionDialog;
import org.tasks.activities.RemoteListSupportPicker;
import org.tasks.caldav.DeleteAccountDialog;
import org.tasks.caldav.RenameAccountDialog;
import org.tasks.dialogs.AddAttachmentDialog;
import org.tasks.dialogs.ColorPickerDialog;
import org.tasks.dialogs.RecordAudioDialog;
@ -48,6 +47,4 @@ public interface DialogFragmentComponent {
void inject(CustomRecurrenceDialog customRecurrenceDialog);
void inject(DeleteAccountDialog deleteAccountDialog);
void inject(RenameAccountDialog renameAccountDialog);
}

@ -9,7 +9,6 @@ import java.util.concurrent.TimeUnit;
public class Account {
private static final String AUTHORITY = "org.tasks";
public static final String EXTRA_UUID = "uuid";
private AccountManager accountManager;
private android.accounts.Account account;
@ -19,12 +18,8 @@ public class Account {
this.account = account;
}
public String getName() {
return account.name;
}
public String getUuid() {
return accountManager.getUserData(account, EXTRA_UUID);
return account.name;
}
String getPassword() {
@ -39,10 +34,6 @@ public class Account {
accountManager.setPassword(account, password);
}
public void setUuid(String uuid) {
accountManager.setUserData(account, EXTRA_UUID, uuid);
}
boolean isBackgroundSyncEnabled() {
return ContentResolver.getSyncAutomatically(account, AUTHORITY);
}

@ -52,15 +52,11 @@ import timber.log.Timber;
import static android.text.TextUtils.isEmpty;
import static org.tasks.caldav.DeleteAccountDialog.newDeleteAccountDialog;
import static org.tasks.caldav.RenameAccountDialog.newRenameAccountDialog;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class CalDAVSettingsActivity extends ThemedInjectingAppCompatActivity
implements Toolbar.OnMenuItemClickListener, DeleteAccountDialog.DeleteAccountDialogCallback,
RenameAccountDialog.RenameAccountDialogCallback {
implements Toolbar.OnMenuItemClickListener, DeleteAccountDialog.DeleteAccountDialogCallback {
private static final String EXTRA_SELECTED_THEME = "extra_selected_theme";
private static final String FRAG_TAG_RENAME_ACCOUNT = "frag_tag_rename_account";
private static final String FRAG_TAG_DELETE_ACCOUNT = "frag_tag_delete_account";
private static final int REQUEST_COLOR_PICKER = 10109;
@ -315,10 +311,6 @@ public class CalDAVSettingsActivity extends ThemedInjectingAppCompatActivity
return;
}
}
} else if (!newName.equals(localAccount.getName())) {
newRenameAccountDialog(caldavAccount.getUuid(), newName)
.show(getSupportFragmentManager(), FRAG_TAG_RENAME_ACCOUNT);
return;
}
caldavAccount.setName(newName);
@ -446,17 +438,6 @@ public class CalDAVSettingsActivity extends ThemedInjectingAppCompatActivity
finish();
}
@Override
public void onListRenamed() {
localAccount = caldavAccountManager.getAccount(caldavAccount.getUuid());
save();
}
@Override
public void renameFailed() {
nameLayout.setError(getString(R.string.error_renaming_account));
}
@Override
public void deleteAccountFailed() {
Toast.makeText(this, R.string.error_deleting_account, Toast.LENGTH_LONG).show();

@ -67,26 +67,20 @@ public class CalDAVSyncAdapter extends InjectingAbstractThreadedSyncAdapter {
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {
String accountName = account.name;
String uuid = caldavAccountManager.getUuid(account);
Timber.d("onPerformSync: %s [%s]", accountName, uuid);
if (Strings.isNullOrEmpty(uuid)) {
caldavAccountManager.removeAccount(account);
return;
}
// required for dav4android (ServiceLoader)
Thread.currentThread().setContextClassLoader(getContext().getClassLoader());
String uuid = account.name;
CaldavAccount caldavAccount = caldavDao.getAccount(uuid);
if (caldavAccount == null) {
caldavAccount = new CaldavAccount(accountName, uuid);
caldavAccount.setId(caldavDao.insert(caldavAccount));
localBroadcastManager.broadcastRefreshList();
Timber.e("Unknown account %s", uuid);
caldavAccountManager.removeAccount(account);
return;
}
Timber.d("onPerformSync: %s [%s]", caldavAccount.getName(), uuid);
org.tasks.caldav.Account localAccount = caldavAccountManager.getAccount(caldavAccount.getUuid());
if (isNullOrEmpty(localAccount.getPassword())) {
Timber.e("Missing password for %s", caldavAccount.getName());
syncResult.stats.numAuthExceptions++;
return;
}

@ -7,7 +7,6 @@ import android.content.Context;
import android.os.Bundle;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskDeleter;
@ -29,7 +28,6 @@ import javax.inject.Inject;
import timber.log.Timber;
import static com.google.common.collect.Iterables.tryFind;
import static org.tasks.caldav.Account.EXTRA_UUID;
@ApplicationScope
public class CaldavAccountManager {
@ -57,10 +55,6 @@ public class CaldavAccountManager {
syncAccountList();
}
public String getUuid(android.accounts.Account account) {
return accountManager.getUserData(account, EXTRA_UUID);
}
public Account getAccount(String uuid) {
for (Account account : getAccounts()) {
if (uuid.equals(account.getUuid())) {
@ -99,18 +93,8 @@ public class CaldavAccountManager {
boolean addAccount(CaldavAccount caldavAccount, String password) {
Timber.d("Adding %s", caldavAccount);
android.accounts.Account account = new android.accounts.Account(caldavAccount.getName(), ACCOUNT_TYPE);
Bundle userdata = new Bundle();
userdata.putString(EXTRA_UUID, caldavAccount.getUuid());
return accountManager.addAccountExplicitly(account, password, userdata);
}
private void createAccount(Account account) {
Timber.d("Adding %s", account);
String uuid = account.getUuid();
if (!Strings.isNullOrEmpty(uuid)) {
caldavDao.insert(new CaldavAccount(account.getName(), uuid));
}
android.accounts.Account account = new android.accounts.Account(caldavAccount.getUuid(), ACCOUNT_TYPE);
return accountManager.addAccountExplicitly(account, password, null);
}
private void syncAccountList() {
@ -119,21 +103,10 @@ public class CaldavAccountManager {
for (CaldavAccount local : oldAccountList) {
Optional<Account> match = tryFind(newAccountList, remote -> local.getUuid().equals(remote.getUuid()));
if (match.isPresent()) {
Timber.d("found %s", match.get());
} else {
if (!match.isPresent()) {
addAccount(local, null);
}
}
for (Account remote : newAccountList) {
Optional<CaldavAccount> match = tryFind(oldAccountList, local -> remote.getUuid().equals(local.getUuid()));
if (match.isPresent()) {
Timber.d("found %s", match.get());
} else {
createAccount(remote);
}
}
}
void deleteAccount(CaldavAccount account) {

@ -1,112 +0,0 @@
package org.tasks.caldav;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.todoroo.astrid.helper.UUIDHelper;
import org.tasks.R;
import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavDao;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.InjectingDialogFragment;
import javax.inject.Inject;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class RenameAccountDialog extends InjectingDialogFragment {
public static RenameAccountDialog newRenameAccountDialog(String uuid, String name) {
RenameAccountDialog dialog = new RenameAccountDialog();
Bundle args = new Bundle();
args.putString(EXTRA_NAME, name);
args.putString(EXTRA_UUID, uuid);
dialog.setArguments(args);
return dialog;
}
public interface RenameAccountDialogCallback {
void onListRenamed();
void renameFailed();
}
private static final String EXTRA_NAME = "extra_name";
private static final String EXTRA_UUID = "extra_uuid";
@Inject DialogBuilder dialogBuilder;
@Inject CaldavAccountManager caldavAccountManager;
@Inject CaldavDao caldavDao;
private RenameAccountDialogCallback callback;
private String name;
private String uuid;
private ProgressDialog dialog;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
Bundle arguments = getArguments();
name = arguments.getString(EXTRA_NAME);
uuid = arguments.getString(EXTRA_UUID);
dialog = dialogBuilder.newProgressDialog(R.string.renaming_list);
execute();
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return dialog;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
callback = (RenameAccountDialogCallback) activity;
}
@Override
protected void inject(DialogFragmentComponent component) {
component.inject(this);
}
private void execute() {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... voids) {
CaldavAccount caldavAccount = caldavDao.getAccount(uuid);
caldavAccount.setName(name);
Account old = caldavAccountManager.getAccount(uuid);
if (!caldavAccountManager.addAccount(caldavAccount, old.getPassword())) {
return false;
}
caldavDao.update(caldavAccount);
old.setUuid(null);
caldavAccountManager.removeAccount(old);
return true;
}
@Override
protected void onPostExecute(Boolean result) {
if (dialog.isShowing()) {
dialog.dismiss();
}
if (result) {
callback.onListRenamed();
} else {
callback.renameFailed();
}
}
}.execute();
}
}
Loading…
Cancel
Save