mirror of
https://github.com/oxen-io/session-android.git
synced 2025-04-19 01:01:31 +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 android.net.Uri
|
||||||
import okhttp3.HttpUrl
|
import okhttp3.HttpUrl
|
||||||
import org.session.libsession.database.StorageProtocol
|
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.AttachmentUploadJob
|
||||||
import org.session.libsession.messaging.jobs.Job
|
import org.session.libsession.messaging.jobs.Job
|
||||||
import org.session.libsession.messaging.jobs.JobQueue
|
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? {
|
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)
|
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? {
|
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)
|
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.mentions.MentionsManager
|
||||||
import org.session.libsession.messaging.open_groups.OpenGroupAPI
|
import org.session.libsession.messaging.open_groups.OpenGroupAPI
|
||||||
import org.session.libsession.messaging.sending_receiving.MessageSender
|
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.libsession.utilities.*
|
||||||
import org.session.libsignal.utilities.toHexString
|
import org.session.libsignal.utilities.toHexString
|
||||||
import org.session.libsignal.utilities.ThreadUtils
|
import org.session.libsignal.utilities.ThreadUtils
|
||||||
@ -66,6 +67,8 @@ class HomeActivity : PassphraseRequiredActionBarActivity(),
|
|||||||
// region Lifecycle
|
// region Lifecycle
|
||||||
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
|
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
|
||||||
super.onCreate(savedInstanceState, isReady)
|
super.onCreate(savedInstanceState, isReady)
|
||||||
|
// Check when Session was last opened
|
||||||
|
setPollingLimit();
|
||||||
// Double check that the long poller is up
|
// Double check that the long poller is up
|
||||||
(applicationContext as ApplicationContext).startPollingIfNeeded()
|
(applicationContext as ApplicationContext).startPollingIfNeeded()
|
||||||
// Set content view
|
// Set content view
|
||||||
@ -194,6 +197,15 @@ class HomeActivity : PassphraseRequiredActionBarActivity(),
|
|||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
EventBus.getDefault().unregister(this)
|
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
|
// endregion
|
||||||
|
|
||||||
// region Updating
|
// region Updating
|
||||||
|
@ -22,6 +22,7 @@ class OpenGroupPollerV2(private val server: String, private val executorService:
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val pollInterval: Long = 4 * 1000
|
private val pollInterval: Long = 4 * 1000
|
||||||
|
const val maxInactivityPeriod = 14 * 24 * 60 * 60 * 1000
|
||||||
}
|
}
|
||||||
|
|
||||||
fun startIfNeeded() {
|
fun startIfNeeded() {
|
||||||
|
@ -99,6 +99,11 @@ object TextSecurePreferences {
|
|||||||
|
|
||||||
private const val GIF_GRID_LAYOUT = "pref_gif_grid_layout"
|
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
|
// region FCM
|
||||||
const val IS_USING_FCM = "pref_is_using_fcm"
|
const val IS_USING_FCM = "pref_is_using_fcm"
|
||||||
private const val FCM_TOKEN = "pref_fcm_token"
|
private const val FCM_TOKEN = "pref_fcm_token"
|
||||||
@ -771,5 +776,22 @@ object TextSecurePreferences {
|
|||||||
fun setHasSeenFileServerInstabilityNotification(context: Context) {
|
fun setHasSeenFileServerInstabilityNotification(context: Context) {
|
||||||
setBooleanPreference(context, "has_seen_file_server_instability_notification", true)
|
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
|
// endregion
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user