Linking Version util to the app

This commit is contained in:
ThomasSession 2024-07-30 12:46:13 +10:00
parent 35a9f9fbbe
commit d3990572a0
2 changed files with 37 additions and 2 deletions
app/src/main/java/org/thoughtcrime/securesms

@ -86,6 +86,7 @@ import org.thoughtcrime.securesms.sskenvironment.ProfileManager;
import org.thoughtcrime.securesms.sskenvironment.ReadReceiptManager; import org.thoughtcrime.securesms.sskenvironment.ReadReceiptManager;
import org.thoughtcrime.securesms.sskenvironment.TypingStatusRepository; import org.thoughtcrime.securesms.sskenvironment.TypingStatusRepository;
import org.thoughtcrime.securesms.util.Broadcaster; import org.thoughtcrime.securesms.util.Broadcaster;
import org.thoughtcrime.securesms.util.VersionUtil;
import org.thoughtcrime.securesms.util.dynamiclanguage.LocaleParseHelper; import org.thoughtcrime.securesms.util.dynamiclanguage.LocaleParseHelper;
import org.thoughtcrime.securesms.webrtc.CallMessageProcessor; import org.thoughtcrime.securesms.webrtc.CallMessageProcessor;
import org.webrtc.PeerConnectionFactory; import org.webrtc.PeerConnectionFactory;
@ -142,6 +143,7 @@ public class ApplicationContext extends Application implements DefaultLifecycleO
private HandlerThread conversationListHandlerThread; private HandlerThread conversationListHandlerThread;
private Handler conversationListHandler; private Handler conversationListHandler;
private PersistentLogger persistentLogger; private PersistentLogger persistentLogger;
private VersionUtil versionUtil;
@Inject LokiAPIDatabase lokiAPIDatabase; @Inject LokiAPIDatabase lokiAPIDatabase;
@Inject public Storage storage; @Inject public Storage storage;
@ -248,6 +250,7 @@ public class ApplicationContext extends Application implements DefaultLifecycleO
resubmitProfilePictureIfNeeded(); resubmitProfilePictureIfNeeded();
loadEmojiSearchIndexIfNeeded(); loadEmojiSearchIndexIfNeeded();
EmojiSource.refresh(); EmojiSource.refresh();
versionUtil = new VersionUtil(this, textSecurePreferences);
NetworkConstraint networkConstraint = new NetworkConstraint.Factory(this).create(); NetworkConstraint networkConstraint = new NetworkConstraint.Factory(this).create();
HTTP.INSTANCE.setConnectedToNetwork(networkConstraint::isMet); HTTP.INSTANCE.setConnectedToNetwork(networkConstraint::isMet);
@ -274,6 +277,10 @@ public class ApplicationContext extends Application implements DefaultLifecycleO
OpenGroupManager.INSTANCE.startPolling(); OpenGroupManager.INSTANCE.startPolling();
}); });
// try to fetch last version now and start the version polling
versionUtil.fetchVersionData();
versionUtil.startTimedVersionCheck();
} }
@Override @Override
@ -286,12 +293,14 @@ public class ApplicationContext extends Application implements DefaultLifecycleO
poller.stopIfNeeded(); poller.stopIfNeeded();
} }
ClosedGroupPollerV2.getShared().stopAll(); ClosedGroupPollerV2.getShared().stopAll();
versionUtil.stopTimedVersionCheck();
} }
@Override @Override
public void onTerminate() { public void onTerminate() {
stopKovenant(); // Loki stopKovenant(); // Loki
OpenGroupManager.INSTANCE.stopPolling(); OpenGroupManager.INSTANCE.stopPolling();
versionUtil.clear();
super.onTerminate(); super.onTerminate();
} }

@ -3,6 +3,12 @@ package org.thoughtcrime.securesms.util
import android.content.Context import android.content.Context
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.util.Log
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import org.session.libsession.messaging.file_server.FileServerApi
import org.session.libsession.utilities.TextSecurePreferences import org.session.libsession.utilities.TextSecurePreferences
class VersionUtil( class VersionUtil(
@ -13,6 +19,9 @@ class VersionUtil(
private val handler = Handler(Looper.getMainLooper()) private val handler = Handler(Looper.getMainLooper())
private val runnable: Runnable private val runnable: Runnable
private val scope = CoroutineScope(Dispatchers.Default)
private var job: Job? = null
init { init {
runnable = Runnable { runnable = Runnable {
// Task to be executed every 4 hours // Task to be executed every 4 hours
@ -31,11 +40,28 @@ class VersionUtil(
handler.removeCallbacks(runnable) handler.removeCallbacks(runnable)
} }
private fun fetchVersionData() { fun clear() {
job?.cancel()
stopTimedVersionCheck()
}
fun fetchVersionData() {
Log.d("", "***** Trying to fetch version. Last check: ${prefs.getLastVersionCheck()}")
// only perform this if at least 4h has elapsed since th last successful check // only perform this if at least 4h has elapsed since th last successful check
if(prefs.getLastVersionCheck() < FOUR_HOURS) return if(prefs.getLastVersionCheck() < FOUR_HOURS) return
job = scope.launch {
try {
// perform the version check
Log.d("", "***** Fetching last version")
val clientVersion = FileServerApi.getClientVersion()
Log.d("", "***** Got version: $clientVersion")
prefs.setLastVersionCheck()
} catch (e: Exception) {
// we can silently ignore the error
Log.e("", "***** Error fetching version", e)
}
}
} }
companion object { companion object {