Be more careful when deleting an account

Fixes issue 3954
This commit is contained in:
cketti 2012-01-05 19:22:35 +01:00
parent d848b434f5
commit 926406edd3
1 changed files with 13 additions and 6 deletions

View File

@ -18,6 +18,7 @@ import com.fsck.k9.mail.store.StorageManager;
import com.fsck.k9.mail.store.StorageManager.StorageProvider;
import com.fsck.k9.view.ColorChip;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
@ -415,18 +416,24 @@ public class Account implements BaseAccount {
}
protected synchronized void delete(Preferences preferences) {
// Get the list of account UUIDs
String[] uuids = preferences.getPreferences().getString("accountUuids", "").split(",");
String[] newUuids = new String[uuids.length - 1];
int i = 0;
// Create a list of all account UUIDs excluding this account
List<String> newUuids = new ArrayList<String>(uuids.length);
for (String uuid : uuids) {
if (uuid.equals(mUuid) == false) {
newUuids[i++] = uuid;
if (!uuid.equals(mUuid)) {
newUuids.add(uuid);
}
}
String accountUuids = Utility.combine(newUuids, ',');
SharedPreferences.Editor editor = preferences.getPreferences().edit();
editor.putString("accountUuids", accountUuids);
// Only change the 'accountUuids' value if this account's UUID was listed before
if (newUuids.size() < uuids.length) {
String accountUuids = Utility.combine(newUuids.toArray(), ',');
editor.putString("accountUuids", accountUuids);
}
editor.remove(mUuid + ".storeUri");
editor.remove(mUuid + ".localStoreUri");