implementation of polling limit on open groups

This commit is contained in:
Brice-W
2021-05-24 12:00:17 +10:00
parent 910787a960
commit dbaa51bd9a
4 changed files with 40 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import android.content.Context
import android.net.Uri
import okhttp3.HttpUrl
import org.session.libsession.database.StorageProtocol
import org.session.libsession.messaging.MessagingModuleConfiguration
import org.session.libsession.messaging.jobs.AttachmentUploadJob
import org.session.libsession.messaging.jobs.Job
import org.session.libsession.messaging.jobs.JobQueue
@@ -301,6 +302,8 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context,
}
override fun getLastMessageServerId(room: String, server: String): Long? {
// return null if limit is set on open groups polling
if (TextSecurePreferences.isOpenGroupPollingLimit(context)) return null
return DatabaseFactory.getLokiAPIDatabase(context).getLastMessageServerID(room, server)
}
@@ -325,6 +328,8 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context,
}
override fun getLastDeletionServerId(room: String, server: String): Long? {
// return null if limit is set on open groups polling
if (TextSecurePreferences.isOpenGroupPollingLimit(context)) return null
return DatabaseFactory.getLokiAPIDatabase(context).getLastDeletionServerID(room, server)
}

View File

@@ -32,6 +32,7 @@ import org.session.libsession.messaging.jobs.JobQueue
import org.session.libsession.messaging.mentions.MentionsManager
import org.session.libsession.messaging.open_groups.OpenGroupAPI
import org.session.libsession.messaging.sending_receiving.MessageSender
import org.session.libsession.messaging.sending_receiving.pollers.OpenGroupPollerV2
import org.session.libsession.utilities.*
import org.session.libsignal.utilities.toHexString
import org.session.libsignal.utilities.ThreadUtils
@@ -66,6 +67,8 @@ 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
@@ -194,6 +197,15 @@ 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