Feature/debug menu (#1645)

* Reorganised cells

* Clipping content

* Simplifying Cell and leaving responsibility to modifier and content

* Fixing animations

Also fixing compose copy that wasn't set up properly...

* Debug menu

Added a debug menu
It can be accessed from the settings page or via an app shortcut (from the app icon)

* Finalising the debug menu

We can now switch environments between mainnet and testnet

* Update app/src/main/java/org/thoughtcrime/securesms/debugmenu/DebugMenu.kt

Co-authored-by: AL-Session <160798022+AL-Session@users.noreply.github.com>

---------

Co-authored-by: AL-Session <160798022+AL-Session@users.noreply.github.com>
This commit is contained in:
ThomasSession
2024-08-26 13:09:37 +10:00
committed by GitHub
parent bfbe4a8fd2
commit 1393335121
29 changed files with 766 additions and 99 deletions

View File

@@ -2,7 +2,6 @@
package org.session.libsession.snode
import android.os.Build
import com.goterl.lazysodium.exceptions.SodiumException
import com.goterl.lazysodium.interfaces.GenericHash
import com.goterl.lazysodium.interfaces.PwHash
@@ -76,9 +75,7 @@ object SnodeAPI {
// Use port 4433 to enforce pinned certificates
private val seedNodePort = 4443
private const val useTestnet = false
private val seedNodePool = if (useTestnet) setOf(
private val seedNodePool = if (SnodeModule.shared.useTestNet) setOf(
"http://public.loki.foundation:38157"
) else setOf(
"https://seed1.getsession.org:$seedNodePort",

View File

@@ -3,16 +3,18 @@ package org.session.libsession.snode
import org.session.libsignal.database.LokiAPIDatabaseProtocol
import org.session.libsignal.utilities.Broadcaster
class SnodeModule(val storage: LokiAPIDatabaseProtocol, val broadcaster: Broadcaster) {
class SnodeModule(
val storage: LokiAPIDatabaseProtocol, val broadcaster: Broadcaster, val useTestNet: Boolean
) {
companion object {
lateinit var shared: SnodeModule
val isInitialized: Boolean get() = Companion::shared.isInitialized
fun configure(storage: LokiAPIDatabaseProtocol, broadcaster: Broadcaster) {
fun configure(storage: LokiAPIDatabaseProtocol, broadcaster: Broadcaster, useTestNet: Boolean) {
if (isInitialized) { return }
shared = SnodeModule(storage, broadcaster)
shared = SnodeModule(storage, broadcaster, useTestNet)
}
}
}

View File

@@ -0,0 +1,5 @@
package org.session.libsession.utilities
enum class Environment(val label: String) {
MAIN_NET("Mainnet"), TEST_NET("Testnet")
}

View File

@@ -18,6 +18,7 @@ import org.session.libsession.utilities.TextSecurePreferences.Companion.AUTOPLAY
import org.session.libsession.utilities.TextSecurePreferences.Companion.CALL_NOTIFICATIONS_ENABLED
import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_DARK
import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_LIGHT
import org.session.libsession.utilities.TextSecurePreferences.Companion.ENVIRONMENT
import org.session.libsession.utilities.TextSecurePreferences.Companion.FOLLOW_SYSTEM_SETTINGS
import org.session.libsession.utilities.TextSecurePreferences.Companion.HIDE_PASSWORD
import org.session.libsession.utilities.TextSecurePreferences.Companion.LAST_VACUUM_TIME
@@ -190,6 +191,8 @@ interface TextSecurePreferences {
fun setHidePassword(value: Boolean)
fun getLastVersionCheck(): Long
fun setLastVersionCheck()
fun getEnvironment(): Environment
fun setEnvironment(value: Environment)
companion object {
val TAG = TextSecurePreferences::class.simpleName
@@ -277,6 +280,7 @@ interface TextSecurePreferences {
const val FINGERPRINT_KEY_GENERATED = "fingerprint_key_generated"
const val SELECTED_ACCENT_COLOR = "selected_accent_color"
const val LAST_VERSION_CHECK = "pref_last_version_check"
const val ENVIRONMENT = "debug_environment"
const val HAS_RECEIVED_LEGACY_CONFIG = "has_received_legacy_config"
const val HAS_FORCED_NEW_CONFIG = "has_forced_new_config"
@@ -1554,6 +1558,17 @@ class AppTextSecurePreferences @Inject constructor(
setLongPreference(LAST_VERSION_CHECK, System.currentTimeMillis())
}
override fun getEnvironment(): Environment {
val environment = getStringPreference(ENVIRONMENT, null)
return if (environment != null) {
Environment.valueOf(environment)
} else Environment.MAIN_NET
}
override fun setEnvironment(value: Environment) {
setStringPreference(ENVIRONMENT, value.name)
}
override fun setShownCallNotification(): Boolean {
val previousValue = getBooleanPreference(SHOWN_CALL_NOTIFICATION, false)
if (previousValue) return false