Compare commits

...

3 Commits

Author SHA1 Message Date
copilot-swe-agent[bot] f6891f5ba4 Harden profile vCard share error handling 2026-05-28 16:32:59 +00:00
copilot-swe-agent[bot] 8c71de888c Log vCard generation failures during profile sharing fallback 2026-05-28 16:31:23 +00:00
copilot-swe-agent[bot] f19e8d64ce Share profile contacts as concrete vCard files 2026-05-28 16:29:06 +00:00
@@ -7,6 +7,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
@@ -25,8 +26,11 @@ import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.ShareUtil;
@@ -36,6 +40,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class ProfileActivity extends PassphraseRequiredActionBarActivity
implements DcEventCenter.DcEventDelegate {
private static final String TAG = "ProfileActivity";
public static final String CHAT_ID_EXTRA = "chat_id";
public static final String CONTACT_ID_EXTRA = "contact_id";
@@ -398,7 +403,19 @@ public class ProfileActivity extends PassphraseRequiredActionBarActivity
Intent composeIntent = new Intent();
DcContact dcContact = dcContext.getContact(contactId);
if (dcContact.isKeyContact()) {
ShareUtil.setSharedContactId(composeIntent, contactId);
try {
byte[] vcard =
rpc.makeVcard(rpc.getSelectedAccountId(), Collections.singletonList(contactId))
.getBytes();
Uri vcardUri =
PersistentBlobProvider.getInstance().create(this, vcard, "text/vcard", "contact.vcf");
ArrayList<Uri> uris = new ArrayList<>();
uris.add(vcardUri);
ShareUtil.setSharedUris(composeIntent, uris);
} catch (Exception e) {
Log.e(TAG, "Failed to create vCard for sharing contactId=" + contactId, e);
ShareUtil.setSharedText(composeIntent, dcContact.getAddr());
}
} else {
ShareUtil.setSharedText(composeIntent, dcContact.getAddr());
}