mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-17 13:08:25 +00:00
implementation of polling limit on open groups
This commit is contained in:
parent
910787a960
commit
dbaa51bd9a
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -22,6 +22,7 @@ class OpenGroupPollerV2(private val server: String, private val executorService:
|
||||
|
||||
companion object {
|
||||
private val pollInterval: Long = 4 * 1000
|
||||
const val maxInactivityPeriod = 14 * 24 * 60 * 60 * 1000
|
||||
}
|
||||
|
||||
fun startIfNeeded() {
|
||||
|
@ -99,6 +99,11 @@ 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"
|
||||
@ -771,5 +776,22 @@ object TextSecurePreferences {
|
||||
fun setHasSeenFileServerInstabilityNotification(context: Context) {
|
||||
setBooleanPreference(context, "has_seen_file_server_instability_notification", true)
|
||||
}
|
||||
|
||||
fun getLastTimeSessionOpened(context: Context): Long {
|
||||
return getLongPreference(context!!, LAST_TIME_SESSION_OPENED, 0)
|
||||
}
|
||||
|
||||
fun setLastTimeSessionOpened(context: Context) {
|
||||
setLongPreference(context, LAST_TIME_SESSION_OPENED, 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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user