From f0160972b708bb94a0762cfc3c93f89ffea63c19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kosmaty?= Date: Thu, 5 Mar 2020 12:50:56 +0100 Subject: [PATCH 1/3] [expo-contacts] Fix presentFormAsync --- .../java/expo/modules/contacts/Contact.java | 22 +++++++++++++++++-- .../expo/modules/contacts/ContactsModule.java | 15 ++++++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/packages/expo-contacts/android/src/main/java/expo/modules/contacts/Contact.java b/packages/expo-contacts/android/src/main/java/expo/modules/contacts/Contact.java index 163b43a80ee84..430e43542af77 100644 --- a/packages/expo-contacts/android/src/main/java/expo/modules/contacts/Contact.java +++ b/packages/expo-contacts/android/src/main/java/expo/modules/contacts/Contact.java @@ -1,5 +1,6 @@ package expo.modules.contacts; +import android.net.Uri; import android.util.Log; import android.content.ContentProviderOperation; import android.content.ContentValues; @@ -11,6 +12,8 @@ import android.provider.ContactsContract; import android.text.TextUtils; +import org.jetbrains.annotations.Nullable; + import java.io.ByteArrayOutputStream; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -183,6 +186,21 @@ public String getLastName() { return lastName; } + @Nullable + public String getDisplayName() { + if (displayName == null) { + if (firstName != null) { + if (lastName != null) { + return String.format("%s %s", firstName, lastName).trim(); + } + + return firstName; + } + } + + return displayName; + } + public Contact(String contactId) { this.contactId = contactId; } @@ -466,7 +484,7 @@ public ArrayList getContentValues() { contactData.add(notes); if (photoUri != null && !photoUri.isEmpty()) { - Bitmap photo = BitmapFactory.decodeFile(photoUri); + Bitmap photo = BitmapFactory.decodeFile(Uri.parse(photoUri).getPath()); if (photo != null) { ContentValues image = new ContentValues(); @@ -495,4 +513,4 @@ public ArrayList getContentValues() { return contactData; } -} \ No newline at end of file +} diff --git a/packages/expo-contacts/android/src/main/java/expo/modules/contacts/ContactsModule.java b/packages/expo-contacts/android/src/main/java/expo/modules/contacts/ContactsModule.java index 35493976b22b4..55d1b6fedec4c 100644 --- a/packages/expo-contacts/android/src/main/java/expo/modules/contacts/ContactsModule.java +++ b/packages/expo-contacts/android/src/main/java/expo/modules/contacts/ContactsModule.java @@ -274,11 +274,7 @@ public void presentFormAsync(String contactId, Map contactData, private void presentForm(Contact contact) { Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI); - if (contact.displayName != null) { - intent.putExtra(ContactsContract.Intents.Insert.NAME, contact.displayName); - } else { - intent.putExtra(ContactsContract.Intents.Insert.NAME, contact.getFirstName()); - } + intent.putExtra(ContactsContract.Intents.Insert.NAME, contact.getDisplayName()); intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contact.getContentValues()); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -367,6 +363,15 @@ private Contact mutateContact(Contact contact, Map data) { if (data.containsKey("note")) contact.note = (String) data.get("note"); + if (data.containsKey("image")) { + Map photo = (Map) data.get("image"); + + if (photo.containsKey("uri")) { + contact.photoUri = (String) photo.get("uri"); + contact.hasPhoto = true; + } + } + ArrayList results; try { From 6d784a6af274f9fda4ea905bc46aed23d700e9da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kosmaty?= Date: Thu, 5 Mar 2020 13:00:03 +0100 Subject: [PATCH 2/3] [expo-contacts] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 982bd572a6bb5..b9c135ff83da1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ This is the log of notable changes to the Expo client that are developer-facing. - Fixed `Brightness.requestPermissionsAsync` throwing `permission cannot be null or empty` error on Android. ([#7276](https://github.com/expo/expo/pull/7276) by [@lukmccall](https://github.com/lukmccall)) - Fixed `KeepAwake.activateKeepAwake` not working with multiple tags on Android. ([#7197](https://github.com/expo/expo/pull/7197) by [@lukmccall](https://github.com/lukmccall)) +- Fix `Contacts.presentFormAsync` pre-filling. ([#7285](https://github.com/expo/expo/pull/7285) by [@abdelilah](https://github.com/abdelilah) & [@lukmccall](https://github.com/lukmccall)) ## 37.0.0 From aff9b83224c6db31a1395d4aef8f5baeac655a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kosmaty?= Date: Mon, 9 Mar 2020 13:27:20 +0100 Subject: [PATCH 3/3] [contacts] Apply requested changes --- .../src/main/java/expo/modules/contacts/Contact.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/expo-contacts/android/src/main/java/expo/modules/contacts/Contact.java b/packages/expo-contacts/android/src/main/java/expo/modules/contacts/Contact.java index 430e43542af77..21fc40c0eec4c 100644 --- a/packages/expo-contacts/android/src/main/java/expo/modules/contacts/Contact.java +++ b/packages/expo-contacts/android/src/main/java/expo/modules/contacts/Contact.java @@ -188,14 +188,8 @@ public String getLastName() { @Nullable public String getDisplayName() { - if (displayName == null) { - if (firstName != null) { - if (lastName != null) { - return String.format("%s %s", firstName, lastName).trim(); - } - - return firstName; - } + if (displayName == null && firstName != null) { + return lastName == null ? firstName : String.format("%s %s", firstName, lastName).trim(); } return displayName;