From 639146cc0a611e2a06402932a4b43db6e3acb244 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Mon, 24 May 2021 13:48:01 +1000 Subject: [PATCH] Simplify & fix `from_server_id` usage --- .../securesms/ApplicationContext.java | 2 +- .../securesms/loki/activities/HomeActivity.kt | 11 -------- .../messaging/open_groups/OpenGroupAPIV2.kt | 21 +++++++++++++-- .../utilities/TextSecurePreferences.kt | 27 +++++-------------- 4 files changed, 26 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 85895cc9be..5106278b6b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -205,11 +205,11 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc contactDB.setContact(contact); } } - if (poller != null) { poller.setCaughtUp(false); } startPollingIfNeeded(); + OpenGroupManager.INSTANCE.setAllCaughtUp(false); OpenGroupManager.INSTANCE.startPolling(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt index 7433d7a34f..0e5ccd6fde 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt @@ -66,8 +66,6 @@ class HomeActivity : PassphraseRequiredActionBarActivity(), // region Lifecycle override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) { super.onCreate(savedInstanceState, isReady) - // Check when Session was last opened - setPollingLimit(); // Double check that the long poller is up (applicationContext as ApplicationContext).startPollingIfNeeded() // Set content view @@ -192,15 +190,6 @@ class HomeActivity : PassphraseRequiredActionBarActivity(), super.onDestroy() EventBus.getDefault().unregister(this) } - - fun setPollingLimit() { - val lastTimeSessionOpened = TextSecurePreferences.getLastTimeSessionOpened(this) - val timeSinceLastTimeOpen = System.currentTimeMillis() - lastTimeSessionOpened - - // activate polling limit on open groups if the app hasn't been opened for more than the duration set in MAX_INACTIVITY_PERIOD - TextSecurePreferences.setOpenGroupPollingLimit(this, timeSinceLastTimeOpen > OpenGroupPollerV2.maxInactivityPeriod) - TextSecurePreferences.setLastTimeSessionOpened(this) - } // endregion // region Updating diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt index 32925bdfe1..68f8d3d8d8 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt @@ -13,6 +13,7 @@ import okhttp3.HttpUrl import okhttp3.MediaType import okhttp3.RequestBody import org.session.libsession.messaging.MessagingModuleConfiguration +import org.session.libsession.messaging.sending_receiving.pollers.OpenGroupPollerV2 import org.session.libsession.snode.OnionRequestAPI import org.session.libsession.utilities.AESGCM import org.session.libsession.utilities.TextSecurePreferences @@ -31,6 +32,15 @@ object OpenGroupAPIV2 { private val moderators: HashMap> = hashMapOf() // Server URL to (channel ID to set of moderator IDs) private val curve = Curve25519.getInstance(Curve25519.BEST) val defaultRooms = MutableSharedFlow>(replay = 1) + private val hasPerformedInitialPoll = mutableMapOf() + private var hasUpdatedLastOpenDate = false + + private val timeSinceLastOpen by lazy { + val context = MessagingModuleConfiguration.shared.context + val lastOpenDate = TextSecurePreferences.getLastOpenTimeDate(context) + val now = System.currentTimeMillis() + now - lastOpenDate + } private const val defaultServerPublicKey = "a03c383cf63c3c4efe67acc52112a6dd734b3a946b9545f488aaa93da7991238" const val defaultServer = "http://116.203.70.33" @@ -351,6 +361,13 @@ object OpenGroupAPIV2 { val authTokenRequests = rooms.associateWith { room -> getAuthToken(room, server) } val storage = MessagingModuleConfiguration.shared.storage val context = MessagingModuleConfiguration.shared.context + val timeSinceLastOpen = this.timeSinceLastOpen + val useMessageLimit = (hasPerformedInitialPoll[server] != true + && timeSinceLastOpen > OpenGroupPollerV2.maxInactivityPeriod) + hasPerformedInitialPoll[server] = true + if (!hasUpdatedLastOpenDate) { + TextSecurePreferences.setLastOpenDate(context) + } val requests = rooms.mapNotNull { room -> val authToken = try { authTokenRequests[room]?.get() @@ -361,8 +378,8 @@ object OpenGroupAPIV2 { CompactPollRequest( roomID = room, authToken = authToken, - fromDeletionServerID = if (TextSecurePreferences.isOpenGroupPollingLimit(context)) null else storage.getLastDeletionServerID(room, server), - fromMessageServerID = if (TextSecurePreferences.isOpenGroupPollingLimit(context)) null else storage.getLastMessageServerID(room, server) + fromDeletionServerID = if (useMessageLimit) null else storage.getLastDeletionServerID(room, server), + fromMessageServerID = if (useMessageLimit) null else storage.getLastMessageServerID(room, server) ) } val request = Request(verb = POST, room = null, server = server, endpoint = "compact_poll", isAuthRequired = false, parameters = mapOf( "requests" to requests )) diff --git a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt index e3f192e454..263771aa6e 100644 --- a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt +++ b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt @@ -99,21 +99,16 @@ object TextSecurePreferences { private const val GIF_GRID_LAYOUT = "pref_gif_grid_layout" - // region Limit open group polling - - private const val LAST_TIME_SESSION_OPENED = "pref_last_time_session_open" - private const val OPEN_GROUP_POLLING_LIMIT = "pref_Open_group_polling_limit" - - // region FCM const val IS_USING_FCM = "pref_is_using_fcm" private const val FCM_TOKEN = "pref_fcm_token" private const val LAST_FCM_TOKEN_UPLOAD_TIME = "pref_last_fcm_token_upload_time_2" - // region Multi Device private const val LAST_CONFIGURATION_SYNC_TIME = "pref_last_configuration_sync_time" const val CONFIGURATION_SYNCED = "pref_configuration_synced" private const val LAST_PROFILE_UPDATE_TIME = "pref_last_profile_update_time" + private const val LAST_OPEN_DATE = "pref_last_open_date" + @JvmStatic fun getLastConfigurationSyncTime(context: Context): Long { return getLongPreference(context, LAST_CONFIGURATION_SYNC_TIME, 0) @@ -777,21 +772,11 @@ object TextSecurePreferences { setBooleanPreference(context, "has_performed_contact_migration", true) } - fun getLastTimeSessionOpened(context: Context): Long { - return getLongPreference(context!!, LAST_TIME_SESSION_OPENED, 0) + fun getLastOpenTimeDate(context: Context): Long { + return getLongPreference(context, LAST_OPEN_DATE, 0) } - fun setLastTimeSessionOpened(context: Context) { - setLongPreference(context, LAST_TIME_SESSION_OPENED, System.currentTimeMillis()) + fun setLastOpenDate(context: Context) { + setLongPreference(context, LAST_OPEN_DATE, System.currentTimeMillis()) } - - fun isOpenGroupPollingLimit(context: Context): Boolean { - return getBooleanPreference(context, OPEN_GROUP_POLLING_LIMIT, false) - } - - fun setOpenGroupPollingLimit(context: Context, limit: Boolean) { - setBooleanPreference(context, OPEN_GROUP_POLLING_LIMIT, limit) - } - - // endregion } \ No newline at end of file