From 4178e3dc91f990fea5a3061d624e8224a6d092a5 Mon Sep 17 00:00:00 2001
From: Hadrien De Sousa <hadrien.desousa@savoirfairelinux.com>
Date: Wed, 24 May 2017 11:42:08 -0400
Subject: [PATCH] vcard: add uid to locale vcards

There was no uid set on android locale vcard which made lrc to
duplicate the conversation for each new vcard sent

Change-Id: I83b1e0c0db7847d3d2d7e3ae7697f687aae6d236
---
 .../app/src/main/java/cx/ring/client/AccountWizard.java        | 3 +++
 .../main/java/cx/ring/navigation/RingNavigationPresenter.java  | 3 +++
 .../libringclient/src/main/java/cx/ring/utils/VCardUtils.java  | 2 +-
 .../src/main/java/cx/ring/wizard/SIPCreationPresenter.java     | 3 +++
 4 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/ring-android/app/src/main/java/cx/ring/client/AccountWizard.java b/ring-android/app/src/main/java/cx/ring/client/AccountWizard.java
index 75d01fb7f..6c70d3e0a 100644
--- a/ring-android/app/src/main/java/cx/ring/client/AccountWizard.java
+++ b/ring-android/app/src/main/java/cx/ring/client/AccountWizard.java
@@ -74,6 +74,7 @@ import ezvcard.parameter.ImageType;
 import ezvcard.property.FormattedName;
 import ezvcard.property.Photo;
 import ezvcard.property.RawProperty;
+import ezvcard.property.Uid;
 
 public class AccountWizard extends AppCompatActivity implements Observer<ServiceEvent> {
     static final String TAG = AccountWizard.class.getName();
@@ -293,6 +294,8 @@ public class AccountWizard extends AppCompatActivity implements Observer<Service
     public void saveProfile(String accountID) {
         VCard vcard = new VCard();
         vcard.setFormattedName(new FormattedName(mFullname));
+        String ringId = mAccountService.getCurrentAccount().getUsername();
+        vcard.setUid(new Uid(ringId));
         ByteArrayOutputStream stream = new ByteArrayOutputStream();
         if (mPhotoProfile != null) {
             mPhotoProfile.compress(Bitmap.CompressFormat.PNG, 100, stream);
diff --git a/ring-android/libringclient/src/main/java/cx/ring/navigation/RingNavigationPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/navigation/RingNavigationPresenter.java
index 25b532da7..71c66eabc 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/navigation/RingNavigationPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/navigation/RingNavigationPresenter.java
@@ -38,6 +38,7 @@ import ezvcard.VCard;
 import ezvcard.property.FormattedName;
 import ezvcard.property.Photo;
 import ezvcard.property.RawProperty;
+import ezvcard.property.Uid;
 
 public class RingNavigationPresenter extends RootPresenter<GenericView<RingNavigationViewModel>> implements Observer<ServiceEvent> {
 
@@ -87,10 +88,12 @@ public class RingNavigationPresenter extends RootPresenter<GenericView<RingNavig
 
     public void saveVCard(String username, Photo photo) {
         String accountId = mAccountService.getCurrentAccount().getAccountID();
+        String ringId = mAccountService.getCurrentAccount().getUsername();
         File filesDir = mDeviceRuntimeService.provideFilesDir();
 
         VCard vcard = VCardUtils.loadLocalProfileFromDisk(filesDir, accountId);
         vcard.setFormattedName(username);
+        vcard.setUid(new Uid(ringId));
         vcard.removeProperties(Photo.class);
         vcard.addPhoto(photo);
         vcard.removeProperties(RawProperty.class);
diff --git a/ring-android/libringclient/src/main/java/cx/ring/utils/VCardUtils.java b/ring-android/libringclient/src/main/java/cx/ring/utils/VCardUtils.java
index e22bb5000..6549b0f0f 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/utils/VCardUtils.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/utils/VCardUtils.java
@@ -231,7 +231,7 @@ public class VCardUtils {
 
     private static VCard setupDefaultProfile(File filesDir, String accountId) {
         VCard vcard = new VCard();
-        vcard.setUid(new Uid(String.valueOf(System.currentTimeMillis())));
+        vcard.setUid(new Uid(accountId));
         saveLocalProfileToDisk(vcard, accountId, filesDir);
         return vcard;
     }
diff --git a/ring-android/libringclient/src/main/java/cx/ring/wizard/SIPCreationPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/wizard/SIPCreationPresenter.java
index ea417728e..90a499cf8 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/wizard/SIPCreationPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/wizard/SIPCreationPresenter.java
@@ -41,6 +41,7 @@ import cx.ring.utils.VCardUtils;
 import ezvcard.VCard;
 import ezvcard.property.FormattedName;
 import ezvcard.property.RawProperty;
+import ezvcard.property.Uid;
 
 public class SIPCreationPresenter extends RootPresenter<SIPCreationView> implements Observer<ServiceEvent> {
 
@@ -217,6 +218,8 @@ public class SIPCreationPresenter extends RootPresenter<SIPCreationView> impleme
             formattedName = mAccount.getAlias();
         }
         vcard.setFormattedName(new FormattedName(formattedName));
+        String vcardUid = formattedName + accountID;
+        vcard.setUid(new Uid(vcardUid));
         vcard.removeProperties(RawProperty.class);
         VCardUtils.saveLocalProfileToDisk(vcard, accountID, mDeviceService.provideFilesDir());
     }
-- 
GitLab