From 3ff42b7c9ed04f37c8031d519e74915e29e01002 Mon Sep 17 00:00:00 2001 From: Hocuri Date: Sun, 26 Mar 2023 12:46:29 +0200 Subject: [PATCH 1/3] Fix sharing, again (#2506) * Revert "use different values for "ACCOUNT_ID_EXTRA and CHAT_ID_EXTRA"" This reverts commit 8962476a21c67fd943a496f759422a4b2e6cd3e3. * Use correct "chat_id" constant --- .../thoughtcrime/securesms/ConversationActivity.java | 10 +++++----- .../securesms/ConversationListActivity.java | 2 +- src/org/thoughtcrime/securesms/ShareActivity.java | 2 +- .../securesms/notifications/MarkReadReceiver.java | 5 ++--- .../securesms/notifications/RemoteReplyReceiver.java | 4 ++-- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 60d811576..b1e302155 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -158,11 +158,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity { private static final String TAG = ConversationActivity.class.getSimpleName(); - public static final String ACCOUNT_ID_EXTRA = TAG + ".account_id"; - public static final String CHAT_ID_EXTRA = TAG + ".chat_id"; - public static final String FROM_ARCHIVED_CHATS_EXTRA = TAG + ".from_archived"; - public static final String TEXT_EXTRA = TAG + ".draft_text"; - public static final String STARTING_POSITION_EXTRA = TAG + ".starting_position"; + public static final String ACCOUNT_ID_EXTRA = "account_id"; + public static final String CHAT_ID_EXTRA = "chat_id"; + public static final String FROM_ARCHIVED_CHATS_EXTRA = "from_archived"; + public static final String TEXT_EXTRA = "draft_text"; + public static final String STARTING_POSITION_EXTRA = "starting_position"; private static final int PICK_GALLERY = 1; private static final int PICK_DOCUMENT = 2; diff --git a/src/org/thoughtcrime/securesms/ConversationListActivity.java b/src/org/thoughtcrime/securesms/ConversationListActivity.java index 039cb857a..8a4d11adb 100644 --- a/src/org/thoughtcrime/securesms/ConversationListActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationListActivity.java @@ -76,7 +76,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit private static final String OPENPGP4FPR = "openpgp4fpr"; private static final String NDK_ARCH_WARNED = "ndk_arch_warned"; public static final String CLEAR_NOTIFICATIONS = "clear_notifications"; - public static final String ACCOUNT_ID_EXTRA = TAG + ".account_id"; + public static final String ACCOUNT_ID_EXTRA = "account_id"; private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme(); private final DynamicLanguage dynamicLanguage = new DynamicLanguage(); diff --git a/src/org/thoughtcrime/securesms/ShareActivity.java b/src/org/thoughtcrime/securesms/ShareActivity.java index 99ae50f62..a890d4c9f 100644 --- a/src/org/thoughtcrime/securesms/ShareActivity.java +++ b/src/org/thoughtcrime/securesms/ShareActivity.java @@ -261,7 +261,7 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity implement Intent composeIntent; if (chatId != -1) { composeIntent = getBaseShareIntent(ConversationActivity.class); - composeIntent.putExtra(EXTRA_CHAT_ID, chatId); + composeIntent.putExtra(ConversationActivity.CHAT_ID_EXTRA, chatId); RelayUtil.setSharedUris(composeIntent, resolvedExtras); startActivity(composeIntent); } else { diff --git a/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java b/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java index bc4e0a975..641b5e9b4 100644 --- a/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java +++ b/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java @@ -10,11 +10,10 @@ import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.util.Util; public class MarkReadReceiver extends BroadcastReceiver { - private static final String TAG = MarkReadReceiver.class.getSimpleName(); public static final String MARK_NOTICED_ACTION = "org.thoughtcrime.securesms.notifications.MARK_NOTICED"; public static final String CANCEL_ACTION = "org.thoughtcrime.securesms.notifications.CANCEL"; - public static final String ACCOUNT_ID_EXTRA = TAG + ".account_id"; - public static final String CHAT_ID_EXTRA = TAG + ".chat_id"; + public static final String ACCOUNT_ID_EXTRA = "account_id"; + public static final String CHAT_ID_EXTRA = "chat_id"; @Override public void onReceive(final Context context, Intent intent) { diff --git a/src/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java b/src/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java index 6a034190b..9122cfcd4 100644 --- a/src/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java +++ b/src/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java @@ -37,8 +37,8 @@ public class RemoteReplyReceiver extends BroadcastReceiver { public static final String TAG = RemoteReplyReceiver.class.getSimpleName(); public static final String REPLY_ACTION = "org.thoughtcrime.securesms.notifications.WEAR_REPLY"; - public static final String ACCOUNT_ID_EXTRA = TAG + ".account_id"; - public static final String CHAT_ID_EXTRA = TAG + ".chat_id"; + public static final String ACCOUNT_ID_EXTRA = "account_id"; + public static final String CHAT_ID_EXTRA = "chat_id"; public static final String EXTRA_REMOTE_REPLY = "extra_remote_reply"; @SuppressLint("StaticFieldLeak") From 5dc85834a33d43fcdef2f47ecdb15e2730d988ea Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Sat, 25 Mar 2023 17:20:19 +0100 Subject: [PATCH 2/3] if possible, show used wifi already before scanning --- .../thoughtcrime/securesms/qr/BackupProviderFragment.java | 2 +- .../thoughtcrime/securesms/qr/BackupReceiverFragment.java | 2 +- .../thoughtcrime/securesms/qr/BackupTransferActivity.java | 6 ++++-- .../thoughtcrime/securesms/qr/RegistrationQrActivity.java | 6 ++++++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/org/thoughtcrime/securesms/qr/BackupProviderFragment.java b/src/org/thoughtcrime/securesms/qr/BackupProviderFragment.java index c190c0036..3a561d5e4 100644 --- a/src/org/thoughtcrime/securesms/qr/BackupProviderFragment.java +++ b/src/org/thoughtcrime/securesms/qr/BackupProviderFragment.java @@ -90,7 +90,7 @@ public class BackupProviderFragment extends Fragment implements DcEventCenter.Dc }); }).start(); - getTransferActivity().appendSSID(view.findViewById(R.id.same_network_hint)); + BackupTransferActivity.appendSSID(getActivity(), view.findViewById(R.id.same_network_hint)); return view; } diff --git a/src/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java b/src/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java index b3b38fb3e..4a9bd4541 100644 --- a/src/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java +++ b/src/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java @@ -57,7 +57,7 @@ public class BackupReceiverFragment extends Fragment implements DcEventCenter.Dc Log.i(TAG, "##### receiveBackup() done with result: "+res); }).start(); - getTransferActivity().appendSSID(sameNetworkHint); + BackupTransferActivity.appendSSID(getActivity(), sameNetworkHint); return view; } diff --git a/src/org/thoughtcrime/securesms/qr/BackupTransferActivity.java b/src/org/thoughtcrime/securesms/qr/BackupTransferActivity.java index 051a6c11c..55aeac99e 100644 --- a/src/org/thoughtcrime/securesms/qr/BackupTransferActivity.java +++ b/src/org/thoughtcrime/securesms/qr/BackupTransferActivity.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.qr; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.wifi.WifiInfo; @@ -14,6 +15,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; +import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.ApplicationPreferencesActivity; import org.thoughtcrime.securesms.BaseActionBarActivity; import org.thoughtcrime.securesms.ConversationListActivity; @@ -211,13 +213,13 @@ public class BackupTransferActivity extends BaseActionBarActivity { .show(); } - public void appendSSID(final TextView textView) { + public static void appendSSID(Activity activity, final TextView textView) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { new Thread(() -> { try { // depending on the android version, getting the SSID requires none, all or one of // ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE, ACCESS_NETWORK_STATE and maybe even more. - final WifiManager wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE); + final WifiManager wifiManager = (WifiManager)activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE); if (wifiManager.isWifiEnabled()) { final WifiInfo info = wifiManager.getConnectionInfo(); final String ssid = info.getSSID(); diff --git a/src/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java b/src/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java index fec4b0b59..ad54359da 100644 --- a/src/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java +++ b/src/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android.view.MenuItem; +import android.view.View; import androidx.annotation.NonNull; @@ -49,6 +50,11 @@ public class RegistrationQrActivity extends BaseActionBarActivity { barcodeScannerView = findViewById(R.id.zxing_barcode_scanner); barcodeScannerView.setStatusText(getString(R.string.qrscan_hint) + "\n "); + View sameNetworkHint = findViewById(R.id.same_network_hint); + if (sameNetworkHint != null) { + BackupTransferActivity.appendSSID(this, findViewById(R.id.same_network_hint)); + } + if (savedInstanceState != null) { init(barcodeScannerView, getIntent(), savedInstanceState); } From 1421cb41df8eee0f52f340867a4f29f5f778f6ca Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Sat, 25 Mar 2023 13:41:00 +0100 Subject: [PATCH 3/3] use conversation-list-adapter more carefully we're also checking for null at some other critical code positions, so this seems reasonable also here. this might fix a recently reported crash, maybe caused by a race condition. --- .../securesms/ConversationFragment.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index 7bf81f986..9d04444e8 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -393,13 +393,16 @@ public class ConversationFragment extends MessageSelectorFragment } void setLastSeen(long lastSeen) { - getListAdapter().setLastSeen(lastSeen); - if (lastSeenDecoration != null) { - list.removeItemDecoration(lastSeenDecoration); - } - if (lastSeen > 0) { - lastSeenDecoration = new ConversationAdapter.LastSeenHeader(getListAdapter()); - list.addItemDecoration(lastSeenDecoration); + ConversationAdapter adapter = getListAdapter(); + if (adapter != null) { + adapter.setLastSeen(lastSeen); + if (lastSeenDecoration != null) { + list.removeItemDecoration(lastSeenDecoration); + } + if (lastSeen > 0) { + lastSeenDecoration = new ConversationAdapter.LastSeenHeader(adapter); + list.addItemDecoration(lastSeenDecoration); + } } }