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

Commit 4beed7e9 authored by James Laskey's avatar James Laskey
Browse files

Insert name into toast during contact deletion

Bug: 29882910
Test: manual inspection of toast contents

Change-Id: I0816163e430680a5b76c185a7fd1c466c86f3894
parent d3caf162
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -172,6 +172,9 @@
    <!-- Toast shown after two contacts have been linked by a user action. [CHAR LIMIT=NONE] -->
    <string name="contactsJoinedMessage">Contacts linked</string>

    <!-- Toast shown after contact deleted when no display name is given. [CHAR LIMIT=20]-->
    <string name="contact_deleted_named_toast"><xliff:g id="name">%s</xliff:g> deleted</string>

    <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=30] -->
    <plurals name="contacts_deleted_toast">
        <item quantity="one">Contact deleted</item>
+12 −2
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ public class ContactDeletionInteraction extends Fragment
        Entity.DATA_SET, // 2
        Entity.CONTACT_ID, // 3
        Entity.LOOKUP_KEY, // 4
        Entity.DISPLAY_NAME, // 5
    };

    private static final int COLUMN_INDEX_RAW_CONTACT_ID = 0;
@@ -73,9 +74,11 @@ public class ContactDeletionInteraction extends Fragment
    private static final int COLUMN_INDEX_DATA_SET = 2;
    private static final int COLUMN_INDEX_CONTACT_ID = 3;
    private static final int COLUMN_INDEX_LOOKUP_KEY = 4;
    private static final int COLUMN_INDEX_DISPLAY_NAME = 5;

    private boolean mActive;
    private Uri mContactUri;
    private String mDisplayName;
    private boolean mFinishActivityWhenDone;
    private Context mContext;
    private AlertDialog mDialog;
@@ -248,6 +251,7 @@ public class ContactDeletionInteraction extends Fragment
            final String dataSet = cursor.getString(COLUMN_INDEX_DATA_SET);
            contactId = cursor.getLong(COLUMN_INDEX_CONTACT_ID);
            lookupKey = cursor.getString(COLUMN_INDEX_LOOKUP_KEY);
            mDisplayName = cursor.getString(COLUMN_INDEX_DISPLAY_NAME);
            AccountType type = accountTypes.getAccountType(accountType, dataSet);
            boolean writable = type == null || type.areContactsWritable();
            if (writable) {
@@ -338,8 +342,14 @@ public class ContactDeletionInteraction extends Fragment
        if (isAdded() && mFinishActivityWhenDone) {
            getActivity().setResult(RESULT_CODE_DELETED);
            getActivity().finish();
            final String deleteToastMessage = getResources().getQuantityString(R.plurals
                    .contacts_deleted_toast, /* quantity */ 1);
            final String deleteToastMessage;
            if (mDisplayName == null) {
                deleteToastMessage = getResources().getQuantityString(
                        R.plurals.contacts_deleted_toast, /* quantity */ 1);
            } else {
                deleteToastMessage = getResources().getString(
                        R.string.contact_deleted_named_toast, mDisplayName);
            }
            Toast.makeText(mContext, deleteToastMessage, Toast.LENGTH_LONG).show();
        }
    }
+7 −7
Original line number Diff line number Diff line
@@ -107,33 +107,33 @@ public class ContactDeletionInteractionTest
    }

    public void testSingleWritableRawContact() {
        expectQuery().returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo");
        expectQuery().returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz");
        assertWithMessageId(R.string.deleteConfirmation);
    }

    public void testReadOnlyRawContacts() {
        expectQuery().returnRow(1, READONLY_ACCOUNT_TYPE, null, 13, "foo");
        expectQuery().returnRow(1, READONLY_ACCOUNT_TYPE, null, 13, "foo", "baz");
        assertWithMessageId(R.string.readOnlyContactWarning);
    }

    public void testMixOfWritableAndReadOnlyRawContacts() {
        expectQuery()
                .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo")
                .returnRow(2, READONLY_ACCOUNT_TYPE, null, 13, "foo");
                .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz")
                .returnRow(2, READONLY_ACCOUNT_TYPE, null, 13, "foo", "baz");
        assertWithMessageId(R.string.readOnlyContactDeleteConfirmation);
    }

    public void testMultipleWritableRawContacts() {
        expectQuery()
                .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo")
                .returnRow(2, WRITABLE_ACCOUNT_TYPE, null, 13, "foo");
                .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz")
                .returnRow(2, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz");
        assertWithMessageId(R.string.multipleContactDeleteConfirmation);
    }

    private Query expectQuery() {
        return mContactsProvider.expectQuery(ENTITY_URI).withProjection(
                Entity.RAW_CONTACT_ID, Entity.ACCOUNT_TYPE, Entity.DATA_SET, Entity.CONTACT_ID,
                Entity.LOOKUP_KEY);
                Entity.LOOKUP_KEY, Entity.DISPLAY_NAME);
    }

    private void assertWithMessageId(int messageId) {