# Description of Changes Changes the desktop app to allow connections to self-hosted servers on first startup. This was quite involved and hit loads of CORS issues all through the stack, but I think it's working now. This also changes the bundled backend to spawn on an OS-decided port rather than always spawning on `8080`, which means that the user can have other things running on port `8080` now and the app will still work fine. There were quite a few places that needed to be updated to decouple the app from explicitly using `8080` and I was originally going to split those changes out into another PR (#4939), but I couldn't get it working independently in the time I had, so the diff here is just going to be complex and contian two distinct changes - sorry 🙁
46 lines
997 B
Rust
46 lines
997 B
Rust
use serde::{Deserialize, Serialize};
|
|
use std::sync::Mutex;
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum ConnectionMode {
|
|
Offline,
|
|
Server,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum ServerType {
|
|
SaaS,
|
|
SelfHosted,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ServerConfig {
|
|
pub url: String,
|
|
pub server_type: ServerType,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ConnectionState {
|
|
pub mode: ConnectionMode,
|
|
pub server_config: Option<ServerConfig>,
|
|
}
|
|
|
|
impl Default for ConnectionState {
|
|
fn default() -> Self {
|
|
Self {
|
|
mode: ConnectionMode::Offline,
|
|
server_config: None,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub struct AppConnectionState(pub Mutex<ConnectionState>);
|
|
|
|
impl Default for AppConnectionState {
|
|
fn default() -> Self {
|
|
Self(Mutex::new(ConnectionState::default()))
|
|
}
|
|
}
|