From 41603e668879949380c070949ef80ebc7a293e51 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Sun, 20 Sep 2020 15:50:40 +0200 Subject: [PATCH 1/5] pass DcEvent object to handlers to avoid error-prone casts --- src/com/b44t/messenger/DcEventCenter.java | 10 ++++----- .../BlockedAndShareContactsActivity.java | 5 +++-- .../ContactSelectionListFragment.java | 5 +++-- .../securesms/ConversationActivity.java | 4 +++- .../securesms/ConversationFragment.java | 5 ++++- .../securesms/ConversationListFragment.java | 4 +++- .../securesms/GroupCreateActivity.java | 4 +++- .../securesms/ProfileActivity.java | 3 ++- .../securesms/ProfileDocumentsFragment.java | 3 ++- .../securesms/ProfileGalleryFragment.java | 3 ++- .../securesms/ProfileSettingsFragment.java | 3 ++- .../securesms/RegistrationActivity.java | 9 ++++---- .../securesms/WelcomeActivity.java | 21 +++++++++++-------- .../connect/ApplicationDcContext.java | 6 ++---- .../securesms/map/MapDataManager.java | 6 ++++-- .../ListSummaryPreferenceFragment.java | 7 ++++--- .../securesms/qr/QrCodeHandler.java | 9 ++++---- .../securesms/qr/QrShowFragment.java | 9 ++++---- 18 files changed, 69 insertions(+), 47 deletions(-) diff --git a/src/com/b44t/messenger/DcEventCenter.java b/src/com/b44t/messenger/DcEventCenter.java index 39c8cc84f..034cffac5 100644 --- a/src/com/b44t/messenger/DcEventCenter.java +++ b/src/com/b44t/messenger/DcEventCenter.java @@ -10,7 +10,7 @@ public class DcEventCenter { private final Object LOCK = new Object(); public interface DcEventDelegate { - void handleEvent(int eventId, Object data1, Object data2); + void handleEvent(DcEvent event); default boolean runOnMain() { return true; } @@ -54,9 +54,9 @@ public class DcEventCenter { } } - public void sendToObservers(int eventId, Object data1, Object data2) { + public void sendToObservers(DcEvent event) { synchronized (LOCK) { - ArrayList idObservers = allObservers.get(eventId); + ArrayList idObservers = allObservers.get(event.getId()); if (idObservers != null) { for (DcEventDelegate observer : idObservers) { // using try/catch blocks as under some circumstances eg. getContext() may return NULL - @@ -65,7 +65,7 @@ public class DcEventCenter { if(observer.runOnMain()) { Util.runOnMain(() -> { try { - observer.handleEvent(eventId, data1, data2); + observer.handleEvent(event); } catch(Exception e) { e.printStackTrace(); @@ -74,7 +74,7 @@ public class DcEventCenter { } else { Util.runOnBackground(() -> { try { - observer.handleEvent(eventId, data1, data2); + observer.handleEvent(event); } catch (Exception e) { e.printStackTrace(); diff --git a/src/org/thoughtcrime/securesms/BlockedAndShareContactsActivity.java b/src/org/thoughtcrime/securesms/BlockedAndShareContactsActivity.java index b9dd1e477..d5769a609 100644 --- a/src/org/thoughtcrime/securesms/BlockedAndShareContactsActivity.java +++ b/src/org/thoughtcrime/securesms/BlockedAndShareContactsActivity.java @@ -16,6 +16,7 @@ import android.view.View; import android.view.ViewGroup; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import org.thoughtcrime.securesms.connect.ApplicationDcContext; @@ -130,8 +131,8 @@ public class BlockedAndShareContactsActivity extends PassphraseRequiredActionBar } @Override - public void handleEvent(int eventId, Object data1, Object data2) { - if (eventId==DcContext.DC_EVENT_CONTACTS_CHANGED) { + public void handleEvent(DcEvent event) { + if (event.getId()==DcContext.DC_EVENT_CONTACTS_CHANGED) { restartLoader(); } } diff --git a/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java b/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java index 020d970a5..48998d685 100644 --- a/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java +++ b/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java @@ -47,6 +47,7 @@ import android.widget.Toast; import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import org.thoughtcrime.securesms.components.RecyclerViewFastScroller; @@ -426,8 +427,8 @@ public class ContactSelectionListFragment extends Fragment } @Override - public void handleEvent(int eventId, Object data1, Object data2) { - if (eventId==DcContext.DC_EVENT_CONTACTS_CHANGED) { + public void handleEvent(DcEvent event) { + if (event.getId()==DcContext.DC_EVENT_CONTACTS_CHANGED) { getLoaderManager().restartLoader(0, null, ContactSelectionListFragment.this); } } diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 61c90560d..f9deb578e 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -63,6 +63,7 @@ import androidx.core.view.WindowCompat; import com.b44t.messenger.DcChat; import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.b44t.messenger.DcMsg; @@ -1449,7 +1450,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { + int eventId = event.getId(); if (eventId == DcContext.DC_EVENT_CHAT_MODIFIED || eventId == DcContext.DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED || eventId == DcContext.DC_EVENT_CONTACTS_CHANGED) { diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index 635a54e75..9afffc9f2 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -57,6 +57,7 @@ import androidx.recyclerview.widget.RecyclerView.OnScrollListener; import com.b44t.messenger.DcChat; import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.b44t.messenger.DcMsg; @@ -840,7 +841,9 @@ public class ConversationFragment extends Fragment } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { + int eventId = event.getId(); + if (eventId == DcContext.DC_EVENT_CHAT_MODIFIED) { updateLocationButton(); } diff --git a/src/org/thoughtcrime/securesms/ConversationListFragment.java b/src/org/thoughtcrime/securesms/ConversationListFragment.java index 6990b8172..e88fd7afa 100644 --- a/src/org/thoughtcrime/securesms/ConversationListFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationListFragment.java @@ -28,6 +28,8 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + +import com.b44t.messenger.DcEvent; import com.google.android.material.snackbar.Snackbar; import androidx.core.content.ContextCompat; @@ -583,7 +585,7 @@ public class ConversationListFragment extends Fragment } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { getLoaderManager().restartLoader(0, null, this); } } diff --git a/src/org/thoughtcrime/securesms/GroupCreateActivity.java b/src/org/thoughtcrime/securesms/GroupCreateActivity.java index 7f8e44d44..663c1527a 100644 --- a/src/org/thoughtcrime/securesms/GroupCreateActivity.java +++ b/src/org/thoughtcrime/securesms/GroupCreateActivity.java @@ -21,6 +21,7 @@ import android.widget.Toast; import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.target.SimpleTarget; @@ -143,7 +144,8 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { + int eventId = event.getId(); if (eventId== DcContext.DC_EVENT_CHAT_MODIFIED || eventId==DcContext.DC_EVENT_CONTACTS_CHANGED) { initializeExistingGroup(); } diff --git a/src/org/thoughtcrime/securesms/ProfileActivity.java b/src/org/thoughtcrime/securesms/ProfileActivity.java index 065a10be7..6c92c31dd 100644 --- a/src/org/thoughtcrime/securesms/ProfileActivity.java +++ b/src/org/thoughtcrime/securesms/ProfileActivity.java @@ -8,6 +8,7 @@ import android.net.Uri; import android.os.Bundle; import android.provider.Settings; +import com.b44t.messenger.DcEvent; import com.google.android.material.tabs.TabLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -177,7 +178,7 @@ public class ProfileActivity extends PassphraseRequiredActionBarActivity } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { updateToolbar(); } diff --git a/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java b/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java index f516d1f96..6a96cecb4 100644 --- a/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java +++ b/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java @@ -24,6 +24,7 @@ import android.view.Window; import android.widget.TextView; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.b44t.messenger.DcMsg; import com.codewaves.stickyheadergrid.StickyHeaderGridLayoutManager; @@ -94,7 +95,7 @@ public class ProfileDocumentsFragment } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { getLoaderManager().restartLoader(0, null, this); } diff --git a/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java b/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java index 3f9c77d2d..657179780 100644 --- a/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java +++ b/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java @@ -24,6 +24,7 @@ import android.view.Window; import android.widget.TextView; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.b44t.messenger.DcMsg; import com.codewaves.stickyheadergrid.StickyHeaderGridLayoutManager; @@ -97,7 +98,7 @@ public class ProfileGalleryFragment } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { getLoaderManager().restartLoader(0, null, this); } diff --git a/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java b/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java index 4ace409fa..959feef5a 100644 --- a/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java +++ b/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java @@ -24,6 +24,7 @@ import com.b44t.messenger.DcChat; import com.b44t.messenger.DcChatlist; import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import org.thoughtcrime.securesms.connect.ApplicationDcContext; @@ -104,7 +105,7 @@ public class ProfileSettingsFragment extends Fragment } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { update(); } diff --git a/src/org/thoughtcrime/securesms/RegistrationActivity.java b/src/org/thoughtcrime/securesms/RegistrationActivity.java index 3c12725ff..3f73bd6c6 100644 --- a/src/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/org/thoughtcrime/securesms/RegistrationActivity.java @@ -11,6 +11,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcProvider; import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputLayout; @@ -546,15 +547,15 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve } @Override - public void handleEvent(int eventId, Object data1, Object data2) { - if (eventId==DcContext.DC_EVENT_CONFIGURE_PROGRESS) { + public void handleEvent(DcEvent event) { + if (event.getId()==DcContext.DC_EVENT_CONFIGURE_PROGRESS) { ApplicationDcContext dcContext = DcHelper.getContext(this); - long progress = (Long)data1; + long progress = event.getData1Int(); if (progress==0/*error/aborted*/) { dcContext.maybeStartIo(); // start-io is also needed on errors to make previous config work in case of changes dcContext.endCaptureNextError(); progressDialog.dismiss(); - WelcomeActivity.maybeShowConfigurationError(this, data2); + WelcomeActivity.maybeShowConfigurationError(this, event.getData2Str()); } else if (progress<1000/*progress in permille*/) { int percent = (int)progress / 10; diff --git a/src/org/thoughtcrime/securesms/WelcomeActivity.java b/src/org/thoughtcrime/securesms/WelcomeActivity.java index 9b7600410..51ad41681 100644 --- a/src/org/thoughtcrime/securesms/WelcomeActivity.java +++ b/src/org/thoughtcrime/securesms/WelcomeActivity.java @@ -15,6 +15,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.b44t.messenger.DcLot; import com.google.zxing.integration.android.IntentIntegrator; @@ -171,7 +172,7 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen dcContext.configure(); } - private void progressError(Object data2) { + private void progressError(String data2) { progressDialog.dismiss(); maybeShowConfigurationError(this, data2); } @@ -195,10 +196,10 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen finish(); } - public static void maybeShowConfigurationError(Activity activity, Object data2) { - if (data2 instanceof String && !((String) data2).isEmpty()) { + public static void maybeShowConfigurationError(Activity activity, String data2) { + if (data2 != null && data2.isEmpty()) { AlertDialog d = new AlertDialog.Builder(activity) - .setMessage(((String) data2)) + .setMessage(data2) .setPositiveButton(android.R.string.ok, null) .create(); d.show(); @@ -212,9 +213,11 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { + int eventId = event.getId(); + if (eventId== DcContext.DC_EVENT_IMEX_PROGRESS ) { - long progress = (Long)data1; + long progress = event.getData1Int(); if (progress==0/*error/aborted*/) { progressError(dcContext.getCapturedError()); notificationController.close(); @@ -230,16 +233,16 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen } } else if (manualConfigure && eventId==DcContext.DC_EVENT_CONFIGURE_PROGRESS) { - long progress = (Long)data1; + long progress = event.getData1Int(); if (progress==1000/*done*/) { dcContext.maybeStartIo(); finish(); // remove ourself from the activity stack (finishAffinity is available in API 16, we're targeting API 14) } } else if (!manualConfigure && eventId==DcContext.DC_EVENT_CONFIGURE_PROGRESS) { - long progress = (Long)data1; + long progress = event.getData1Int(); if (progress==0/*error/aborted*/) { - progressError(data2); + progressError(event.getData2Str()); } else if (progress<1000/*progress in permille*/) { progressUpdate((int)progress); diff --git a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java index bfce74735..abefcc03c 100644 --- a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java +++ b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java @@ -446,15 +446,13 @@ public class ApplicationDcContext extends DcContext { case DC_EVENT_INCOMING_MSG: notificationCenter.addNotification(event.getData1Int(), event.getData2Int()); if (eventCenter != null) { - eventCenter.sendToObservers(id, (long)event.getData1Int(), (long)event.getData2Int()); + eventCenter.sendToObservers(event); } break; default: { - final Object data1obj = (long)event.getData1Int(); - final Object data2obj = data2IsString(id) ? event.getData2Str() : (long)event.getData2Int(); if (eventCenter != null) { - eventCenter.sendToObservers(id, data1obj, data2obj); + eventCenter.sendToObservers(event); } } break; diff --git a/src/org/thoughtcrime/securesms/map/MapDataManager.java b/src/org/thoughtcrime/securesms/map/MapDataManager.java index 367c72fea..0f4912fe1 100644 --- a/src/org/thoughtcrime/securesms/map/MapDataManager.java +++ b/src/org/thoughtcrime/securesms/map/MapDataManager.java @@ -5,6 +5,7 @@ import android.graphics.Bitmap; import androidx.annotation.NonNull; import android.util.Log; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.mapbox.android.core.permissions.PermissionsManager; import com.mapbox.geojson.Feature; @@ -183,9 +184,10 @@ public class MapDataManager implements DcEventCenter.DcEventDelegate, GenerateIn } @Override - public void handleEvent(int eventId, Object data1, Object data2) { + public void handleEvent(DcEvent event) { + int eventId = event.getId(); Log.d(TAG, "updateEvent in MapDataManager called. eventId: " + eventId); - int contactId = ((Long) data1).intValue(); + int contactId = event.getData1Int(); if (contactMapSources.containsKey(contactId)) { DataCollector collector = new DataCollector(dcContext, contactMapSources, diff --git a/src/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java index d601f0a67..fde14d4b7 100644 --- a/src/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java @@ -10,6 +10,7 @@ import androidx.preference.ListPreference; import androidx.preference.Preference; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import org.thoughtcrime.securesms.R; @@ -116,9 +117,9 @@ public abstract class ListSummaryPreferenceFragment extends CorrectedPreferenceF } @Override - public void handleEvent(int eventId, Object data1, Object data2) { - if (eventId== DcContext.DC_EVENT_IMEX_PROGRESS) { - long progress = (Long)data1; + public void handleEvent(DcEvent event) { + if (event.getId()== DcContext.DC_EVENT_IMEX_PROGRESS) { + long progress = event.getData1Int(); if (progress==0/*error/aborted*/) { dcContext.endCaptureNextError(); progressDialog.dismiss(); diff --git a/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java b/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java index e0deec1a1..2f62674b0 100644 --- a/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java +++ b/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java @@ -9,6 +9,7 @@ import android.text.Html; import android.widget.Toast; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.b44t.messenger.DcLot; import com.google.zxing.integration.android.IntentResult; @@ -222,10 +223,10 @@ public class QrCodeHandler implements DcEventCenter.DcEventDelegate { } @Override - public void handleEvent(int eventId, Object data1, Object data2) { - if (eventId == DcContext.DC_EVENT_SECUREJOIN_JOINER_PROGRESS) { - long contact_id = (Long)data1; - long progress = (Long)data2; + public void handleEvent(DcEvent event) { + if (event.getId() == DcContext.DC_EVENT_SECUREJOIN_JOINER_PROGRESS) { + long contact_id = event.getData1Int(); + long progress = event.getData2Int(); String msg = null; if( progress == 400) { msg = activity.getString(R.string.qrscan_x_verified_introduce_myself, dcContext.getContact((int)contact_id).getNameNAddr()); diff --git a/src/org/thoughtcrime/securesms/qr/QrShowFragment.java b/src/org/thoughtcrime/securesms/qr/QrShowFragment.java index 24a68998a..0146a8fa1 100644 --- a/src/org/thoughtcrime/securesms/qr/QrShowFragment.java +++ b/src/org/thoughtcrime/securesms/qr/QrShowFragment.java @@ -23,6 +23,7 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcEventCenter; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; @@ -184,11 +185,11 @@ public class QrShowFragment extends Fragment implements DcEventCenter.DcEventDel } @Override - public void handleEvent(int eventId, Object data1, Object data2) { - if (eventId == DcContext.DC_EVENT_SECUREJOIN_INVITER_PROGRESS) { + public void handleEvent(DcEvent event) { + if (event.getId() == DcContext.DC_EVENT_SECUREJOIN_INVITER_PROGRESS) { DcContext dcContext = DcHelper.getContext(getActivity()); - int contact_id = ((Long) data1).intValue(); - long progress = (Long) data2; + int contact_id = event.getData1Int(); + long progress = event.getData2Int(); String msg = null; if (progress == 300) { msg = String.format(getString(R.string.qrshow_x_joining), dcContext.getContact(contact_id).getNameNAddr()); From 33fccc6d5265defb4eb765d2fbd0fd9118c3d447 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Sun, 20 Sep 2020 16:28:54 +0200 Subject: [PATCH 2/5] avoid unnecessary chat updates by filtering event-chat-id correctly --- .../securesms/ConversationActivity.java | 4 +-- .../securesms/ConversationFragment.java | 27 +++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index f9deb578e..63d769154 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -1452,8 +1452,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity @Override public void handleEvent(DcEvent event) { int eventId = event.getId(); - if (eventId == DcContext.DC_EVENT_CHAT_MODIFIED - || eventId == DcContext.DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED + if ((eventId == DcContext.DC_EVENT_CHAT_MODIFIED && event.getData1Int() == chatId) + || (eventId == DcContext.DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED && event.getData1Int() == chatId) || eventId == DcContext.DC_EVENT_CONTACTS_CHANGED) { dcChat = dcContext.getChat(chatId); titleView.setTitle(glideRequests, dcChat); diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index 9afffc9f2..5706e2ed5 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -842,10 +842,29 @@ public class ConversationFragment extends Fragment @Override public void handleEvent(DcEvent event) { - int eventId = event.getId(); + switch (event.getId()) { + case DcContext.DC_EVENT_MSGS_CHANGED: + if (event.getData1Int() == 0 // deleted messages or batch insert + || event.getData1Int() == chatId) { + reloadList(); + } + break; - if (eventId == DcContext.DC_EVENT_CHAT_MODIFIED) { - updateLocationButton(); + case DcContext.DC_EVENT_INCOMING_MSG: + case DcContext.DC_EVENT_MSG_DELIVERED: + case DcContext.DC_EVENT_MSG_FAILED: + case DcContext.DC_EVENT_MSG_READ: + if (event.getData1Int() == chatId) { + reloadList(); + } + break; + + case DcContext.DC_EVENT_CHAT_MODIFIED: + if (event.getData1Int() == chatId) { + updateLocationButton(); + reloadList(); + } + break; } // removing the "new message" marker on incoming messages may be a bit unexpected, @@ -854,7 +873,5 @@ public class ConversationFragment extends Fragment /*if (eventId == DcContext.DC_EVENT_INCOMING_MSG && isResumed()) { setLastSeen(-1); }*/ - - reloadList(); } } From 83cc6ef152fa4afe25321c2acf065e93ac0e8a27 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 21 Sep 2020 18:28:58 +0200 Subject: [PATCH 3/5] update deltachat-core-rust submodule --- jni/deltachat-core-rust | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jni/deltachat-core-rust b/jni/deltachat-core-rust index 92abae0b5..cd990039b 160000 --- a/jni/deltachat-core-rust +++ b/jni/deltachat-core-rust @@ -1 +1 @@ -Subproject commit 92abae0b5b35ceb01aec35c70b7ce8587b4d74a0 +Subproject commit cd990039bdc8cb4a114be4ac73d90ae5f50654c2 From dbba48362cfd4441e2d1ec74d4e6df6c0aea79e0 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 21 Sep 2020 18:34:09 +0200 Subject: [PATCH 4/5] update translations --- res/values-fa/strings.xml | 25 ++++++++++++++++++++++--- res/values-nl/strings.xml | 2 +- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 4fa1283fd..6d5dcb680 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -6,6 +6,7 @@ لغو بله خیر + انتخاب روشن خاموش پیش‌فرض @@ -14,6 +15,8 @@ خودکار سخت‌گیرانه بازکردن + پیوستن + پیوستن مجدد حذف درباره به‌ روز رسانی @@ -103,7 +106,9 @@ دوربین موقعیت مکانی گالری + تصاویر و فیلم‌ها پوشه + فایل‌ها ناشناس سبز @@ -206,6 +211,17 @@ فایل در \"%1$s\" ذخیره شد + گفتگوی تصویری + دعوت کردن %1$sبه گفتگوی تصویری + این عمل، به نرم افزار یا مرورگر سازگار برای هردوطرف مکالمه نیاز دارد. + %1$sبه تماس تصویری دعوت شد. + شما به تماس تصویری دعوت شده‌اید. + این تماس تصویری در مرورگر شما باز خواهد شد. + برای پیوستن ضربه بزنید. + برای باز کردن ضربه بزنید. + دعوت به مکالمه تصویری. + شما به مکالمه تصویری دعوت شده اید برای پیوستن%1$s را بزنید. + مطمئن هستید می‌خواهید این گروه را ترک کنید؟ @@ -217,6 +233,7 @@ پاک کردن %d گفتگو از اینجا و سرور؟ پیام‌ها به %1$sهدایت شوند؟ + انتقال پیام‌ها به %1$d چت؟ ضمیمه صادر شود؟ صادر کردن ضمیمه باعث می‌شود دیگر نرم‌افزارهای روی دستگاه شما بتوانند به آن دسترسی داشته باشند. \n\nادامه می‌دهید؟ مخاطب مسدود شود؟ شما دیگر پیامی از این مخاطب دریافت نخواهید کرد. رفع مسدودیت مخاطب؟ دوباره قادر خواهید بود پیام‌های ارسال شده توسط این مخاطب را دریافت کنید. @@ -325,6 +342,8 @@ SMTP port امنیت SMTP روش تایید هویت + + بررسی %1$s با تنظیمات ساده‌ شده ادامه می‌دهید؟ آدرس ایمیل وارد شده از تنظیمات ساده پشتیبانی می‌کند(OAuth 2.0).\n\nIn مرحله بعد، لطفا به دلتاچت اجازه دهید که به عنوان نرم‌افزار ایمیل شما عمل نماید\n\n سرور دلتاچت وجود ندارد داده‌های شما در دستگاه خودتان باقی می‌ماند. بررسی تاییدیه @@ -338,7 +357,7 @@ امکان ورود با\"%1$s\"وجود ندارد. لطفا صحت ایمیل و رمز عبور را بررسی کنید. - بازخورد از %1$s: %2$s\n\n برخی ارائه دهندگان ایمیل اطلاعات اضافی در صندوق ورودی شما قرار می‌دهند. می‌توانید این موارد را در صفحه وب بررسی کنید. اگر به مشکلی برخوردید به ارائه دهندگان ایمیل یا دوستان خود مراجعه کنید. + بازخورد از %1$s: %2$s\n\n برخی ارائه دهندگان ایمیل، اطلاعات بیشتری درمورد ابن مشکل برایتان ارسال می‌کنند. می‌توانید صندوق ورودی خود را از طریق وب سایت ایمیل یا نرم‌افزار همیشگی خود بررسی کنید. . اگر به مشکلی برخوردید به ارائه دهندگان ایمیل یا دوستان خود مراجعه کنید. پذیرش تاییدیه‌های نادرست تنظیمات استفاده شده: @@ -449,9 +468,9 @@ پاک کردن پیام‌ها از دستگاه پاک کردن پیام‌ها از سرور - آیا می‌خواهید %1$d پیام جدید و دریافت شده را در زمان%2$s در آینده پاک کنید؟\n\n• این شامل همه رسانه هم می‌شود\n\n• پیام‌ها جدای از اینکه دیده شده باشند یا نه پاک می‌شوند. \"پیام های ذخیره شده\" شامل این پاک کردن محلی نمی‌شوند. + آیا می‌خواهید %1$d پیام جدید و دریافت شده را در زمان%2$s در آینده پاک کنید؟\n\n• این شامل همه رسانه‌ها هم می‌شود\n\n• پیام‌ها جدای از اینکه دیده شده باشند یا نه پاک می‌شوند. \"پیام های ذخیره شده\" شامل این پاک کردن محلی نمی‌شوند. - آیا می‌خواهید%1$d پیام جدید و دریافت شده را در زمان%2$s در آینده پاک کنید؟\n\n• این شامل همه رسانه هم می‌شود\n\n• همچنین ایمیل‌های مربوط به \"نمایش ایمیل‌های معمولی\" باشند نیز از سرور پاک می‌شوند. + آیا می‌خواهید%1$d پیام جدید و دریافت شده را در زمان%2$s در آینده پاک کنید؟\n\n• این شامل همه رسانه هم می‌شود\n\n• همچنین ایمیل‌های مربوط به \"نمایش ایمیل‌های معمولی\" نیز از سرور پاک می‌شوند. متوجه هستم، همه پیام‌ها حذف شوند یک بار بعد از 1 ساعت diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 3891538b5..de5f2888b 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -701,7 +701,7 @@ Achtergrondmeldingen Zet een achtergrondverbinding op naar je server en negeert alle accu-optimalisaties. - Om een achtergrondverbinding naar je server op te zetten, dien je alle accu-optimalisaties te negeren in de volgende stap.\n\nDelta Chat gebruikt weinig systeembronnen en verhoogt je accuverbruik nauwelijks. + Om een achtergrondverbinding naar je server op te zetten, dien je in de volgende stap alle accu-optimalisaties te negeren.\n\nDelta Chat gebruikt weinig systeembronnen en verhoogt nauwelijks je accuverbruik. Betrouwbare achtergrondverbinding Vereist een permanente melding From 0f87176794eabba3b43d4691f19418a0e372335e Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 21 Sep 2020 18:35:31 +0200 Subject: [PATCH 5/5] bump version to 1.13.4 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 807a4fc01..888291612 100644 --- a/build.gradle +++ b/build.gradle @@ -90,7 +90,7 @@ android { defaultConfig { versionCode 594 - versionName "1.13.3" + versionName "1.13.4" applicationId "com.b44t.messenger" multiDexEnabled true