From bc73e1a2ba17dd56ae5c3fe02ba4e82b2d3bb197 Mon Sep 17 00:00:00 2001 From: bjoern Date: Sat, 12 Apr 2025 00:22:24 +0200 Subject: [PATCH] open contact in scope when tapping info messages (#3710) * open contact in scope when tapping info messages * update CHANGELOG --------- Co-authored-by: adb --- CHANGELOG.md | 1 + jni/dc_wrapper.c | 6 ++++++ src/main/java/com/b44t/messenger/DcMsg.java | 1 + .../securesms/ConversationFragment.java | 20 +++++++++++++------ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76e910654..809a2e5c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +* tapping info messages with contacts open the contact's profile * hide superfluous "Show Classic E-mails" advanced setting for chatmail * show profile bio/status under name in main settings screen * remove mostly non-telling transport addresses when referring to a contact; diff --git a/jni/dc_wrapper.c b/jni/dc_wrapper.c index b54116fc3..d21404fab 100644 --- a/jni/dc_wrapper.c +++ b/jni/dc_wrapper.c @@ -1428,6 +1428,12 @@ JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getInfoType(JNIEnv *env, jobject ob } +JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getInfoContactId(JNIEnv *env, jobject obj) +{ + return dc_msg_get_info_contact_id(get_dc_msg(env, obj)); +} + + JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getState(JNIEnv *env, jobject obj) { return dc_msg_get_state(get_dc_msg(env, obj)); diff --git a/src/main/java/com/b44t/messenger/DcMsg.java b/src/main/java/com/b44t/messenger/DcMsg.java index fc9996f1b..b72e17600 100644 --- a/src/main/java/com/b44t/messenger/DcMsg.java +++ b/src/main/java/com/b44t/messenger/DcMsg.java @@ -122,6 +122,7 @@ public class DcMsg { public native boolean hasLocation (); public native int getType (); public native int getInfoType (); + public native int getInfoContactId (); public native int getState (); public native int getDownloadState (); public native int getChatId (); diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationFragment.java b/src/main/java/org/thoughtcrime/securesms/ConversationFragment.java index 6c1f5fed2..5ab8be496 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationFragment.java @@ -753,12 +753,20 @@ public class ConversationFragment extends MessageSelectorFragment } } else { - String self_mail = dcContext.getConfig("configured_mail_user"); - if (self_mail != null && !self_mail.isEmpty() - && messageRecord.getText().contains(self_mail) - && getListAdapter().getChat().isDeviceTalk()) { - // This is a device message informing the user that the password is wrong - startActivity(new Intent(getActivity(), RegistrationActivity.class)); + int infoContactId = messageRecord.getInfoContactId(); + if (infoContactId != 0 && infoContactId != DC_CONTACT_ID_SELF) { + Intent intent = new Intent(getContext(), ProfileActivity.class); + intent.putExtra(ProfileActivity.CONTACT_ID_EXTRA, infoContactId); + startActivity(intent); + } + else { + String self_mail = dcContext.getConfig("configured_mail_user"); + if (self_mail != null && !self_mail.isEmpty() + && messageRecord.getText().contains(self_mail) + && getListAdapter().getChat().isDeviceTalk()) { + // This is a device message informing the user that the password is wrong + startActivity(new Intent(getActivity(), RegistrationActivity.class)); + } } } }