fix(login): fixed images not loading and stoat url not persisting
This commit is contained in:
parent
a66d3e6040
commit
1ca13ade68
|
|
@ -86,6 +86,7 @@ import chat.stoat.api.settings.Experiments
|
|||
import chat.stoat.api.settings.GeoStateProvider
|
||||
import chat.stoat.api.settings.LoadedSettings
|
||||
import chat.stoat.api.settings.SyncedSettings
|
||||
import chat.stoat.api.updateStoatWebApp
|
||||
import chat.stoat.composables.generic.HealthAlert
|
||||
import chat.stoat.composables.voice.VoicePermissionSwitch
|
||||
import chat.stoat.core.model.schemas.HealthNotice
|
||||
|
|
@ -207,6 +208,11 @@ class MainActivityViewModel @Inject constructor(
|
|||
|
||||
isConnected.emit(hasInternetConnection())
|
||||
|
||||
val stoatInstanceUrl = kvStorage.get("stoatInstanceUrl");
|
||||
if(!stoatInstanceUrl.isNullOrBlank()) {
|
||||
updateStoatWebApp(stoatInstanceUrl);
|
||||
}
|
||||
|
||||
Log.d("MainActivity", "Checking if we can reach Stoat")
|
||||
|
||||
if (!isConnected.value) return@launch startWithoutDestination()
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import android.os.Handler
|
|||
import android.os.Looper
|
||||
import android.util.Log
|
||||
import androidx.compose.runtime.mutableStateMapOf
|
||||
import androidx.core.net.toUri
|
||||
import chat.stoat.BuildConfig
|
||||
import chat.stoat.StoatApplication
|
||||
import chat.stoat.api.StoatAPI.initialize
|
||||
|
|
@ -63,8 +64,9 @@ var STOAT_BASE = STOAT_BASE_DEFAULT
|
|||
|
||||
const val STOAT_SUPPORT = "https://support.stoat.chat"
|
||||
const val STOAT_MARKETING = "https://stoat.chat"
|
||||
val STOAT_FILES =
|
||||
val STOAT_FILES_DEFAULT =
|
||||
if (USE_ALPHA_API) "https://alpha.revolt.chat/autumn" else "https://cdn.stoatusercontent.com"
|
||||
var STOAT_FILES = STOAT_FILES_DEFAULT;
|
||||
val STOAT_PROXY =
|
||||
if (USE_ALPHA_API) "https://alpha.revolt.chat/january" else "https://proxy.stoatusercontent.com"
|
||||
const val STOAT_WEB_APP_DEFAULT = "https://stoat.chat"
|
||||
|
|
@ -79,10 +81,36 @@ var STOAT_WEBSOCKET = STOAT_WEBSOCKET_DEFAULT
|
|||
const val STOAT_KJBOOK = "https://stoatchat.github.io/for-android"
|
||||
|
||||
fun updateStoatWebApp(webApp: String = STOAT_WEB_APP_DEFAULT) {
|
||||
STOAT_WEB_APP = webApp;
|
||||
STOAT_BASE = "$webApp/api"; // FIXME this wont work with default stoatchat instance
|
||||
var wssRoot = webApp.replace("https:", "wss:").replace("http:", "ws:");
|
||||
STOAT_WEBSOCKET = "$wssRoot/ws"; // FIXME this wont work with default stoatchat instance
|
||||
var sanitisedBaseUrl = webApp.trim();
|
||||
|
||||
if(sanitisedBaseUrl.isBlank()) {
|
||||
sanitisedBaseUrl = STOAT_WEB_APP_DEFAULT;
|
||||
}
|
||||
|
||||
var parsed = sanitisedBaseUrl.toUri();
|
||||
|
||||
val portPart = if (parsed.port == 80 || parsed.port == 443) "" else ":${parsed.port}";
|
||||
val root = "${parsed.scheme}://${parsed.host}${portPart}";
|
||||
val rootWithPort = "${parsed.scheme}://${parsed.host}:${parsed.port}";
|
||||
if(sanitisedBaseUrl.matches(Regex("^$root/+$")) || sanitisedBaseUrl.matches(Regex("^$rootWithPort/+$"))) {
|
||||
// Remove trailing slashes (not sure if it'd actually cause an issue but might as well clean it up)
|
||||
sanitisedBaseUrl = rootWithPort;
|
||||
}
|
||||
|
||||
val isDefaultInstance = sanitisedBaseUrl == STOAT_WEB_APP_DEFAULT;
|
||||
|
||||
if(!isDefaultInstance) {
|
||||
STOAT_WEB_APP = sanitisedBaseUrl;
|
||||
STOAT_BASE = "$sanitisedBaseUrl/api";
|
||||
val wssRoot = sanitisedBaseUrl.replace(Regex("^http(s?):"), "ws$1:");
|
||||
STOAT_WEBSOCKET = "$wssRoot/ws";
|
||||
STOAT_FILES = "$sanitisedBaseUrl/autumn";
|
||||
} else {
|
||||
STOAT_WEB_APP = STOAT_WEB_APP_DEFAULT;
|
||||
STOAT_BASE = STOAT_BASE_DEFAULT;
|
||||
STOAT_WEBSOCKET = STOAT_WEBSOCKET_DEFAULT;
|
||||
STOAT_FILES = STOAT_FILES_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
fun String.api(): String {
|
||||
|
|
|
|||
|
|
@ -133,6 +133,8 @@ class LoginViewModel @Inject constructor(
|
|||
StoatAPI.loginAs(token)
|
||||
StoatAPI.setSessionId(response.firstUserHints.token)
|
||||
|
||||
kvStorage.set("stoatInstanceUrl", _stoatInstanceUrl);
|
||||
|
||||
_navigateTo = "home"
|
||||
} catch (e: Error) {
|
||||
_error = e.message ?: "Unknown error"
|
||||
|
|
|
|||
Loading…
Reference in New Issue