Compare commits
3 Commits
fdae149c4a
...
b5da0ee992
Author | SHA1 | Date | |
---|---|---|---|
b5da0ee992
|
|||
df2d924c65
|
|||
54c7073b98
|
79
Cargo.toml
79
Cargo.toml
@@ -4,48 +4,63 @@ version = "0.1.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = ["web"]
|
||||||
desktop = ["dioxus/desktop"]
|
desktop = ["dioxus/desktop", "tracing-subscriber/time"]
|
||||||
web = ["dioxus/web"]
|
web = ["dioxus/web", "matrix-sdk/js"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
dioxus = "0.5.*"
|
# Errors
|
||||||
dioxus-sdk = { version = "0.5.*", features = ["utils"] }
|
|
||||||
dioxus-free-icons = { version = "0.8.*", features = ["ionicons", "font-awesome-solid", "material-design-icons-navigation"] }
|
|
||||||
modx = "0.1.2"
|
|
||||||
|
|
||||||
# matrix-sdk = { git = "https://github.com/matrix-org/matrix-rust-sdk.git", branch = "main", default-features = false, features = ["js", "rustls-tls"] }
|
|
||||||
matrix-sdk = { version = "0.7.*", default-features = false, features = ["js", "rustls-tls"] }
|
|
||||||
|
|
||||||
anyhow = "1.0.75"
|
anyhow = "1.0.75"
|
||||||
url = "2.5.0"
|
|
||||||
dirs = "5.0.1"
|
|
||||||
ctrlc-async = "3.2.2"
|
|
||||||
thiserror = "1.0.50"
|
thiserror = "1.0.50"
|
||||||
turf = "0.8.*"
|
|
||||||
tokio = { version = "1.34.0", default-features = false, features = ["rt", "sync"] }
|
|
||||||
log = "0.4.20"
|
|
||||||
futures-util = "0.3.29"
|
|
||||||
futures = "0.3.29"
|
|
||||||
rand = "0.8.5"
|
|
||||||
reqwest = "0.11.24"
|
|
||||||
validator = { version = "0.17.0", features = ["derive"] }
|
|
||||||
const_format = "0.2.32"
|
|
||||||
zxcvbn = "2.2.2"
|
|
||||||
async-std = "1.12.0"
|
|
||||||
tracing = "0.1.40"
|
|
||||||
tracing-web = "0.1.3"
|
|
||||||
tracing-subscriber = "0.3.18"
|
|
||||||
git-version = "0.3.9"
|
|
||||||
async-trait = "0.1.80"
|
|
||||||
tokio-stream = "0.1.15"
|
|
||||||
image = "0.25.1"
|
|
||||||
|
|
||||||
|
# Async
|
||||||
|
async-std = "1.12.0"
|
||||||
|
async-trait = "0.1.80"
|
||||||
|
futures = "0.3.29"
|
||||||
|
futures-util = "0.3.29"
|
||||||
|
tokio = { version = "1.34.0", default-features = false, features = ["rt", "sync"] }
|
||||||
|
tokio-stream = "0.1.15"
|
||||||
|
|
||||||
|
# Utils
|
||||||
|
base64 = "0.22.0"
|
||||||
|
const_format = "0.2.32"
|
||||||
|
rand = "0.8.5"
|
||||||
|
validator = { version = "0.17.0", features = ["derive"] }
|
||||||
|
# Http client
|
||||||
|
reqwest = "0.11.24"
|
||||||
|
# Password strength estimation
|
||||||
|
zxcvbn = "2.2.2"
|
||||||
|
# Image processing/conversion
|
||||||
|
image = "0.25.1"
|
||||||
|
# Get the application version
|
||||||
|
git-version = "0.3.9"
|
||||||
|
# Conditional compilation
|
||||||
|
cfg-if = "1.0.0"
|
||||||
|
|
||||||
|
# Logging/tracing
|
||||||
|
tracing = "0.1.40"
|
||||||
|
tracing-subscriber = "0.3.18"
|
||||||
|
|
||||||
|
# SCSS -> CSS + usage in rust code
|
||||||
|
turf = "0.8.0"
|
||||||
|
|
||||||
|
# Matrix
|
||||||
|
matrix-sdk = { git = "https://github.com/matrix-org/matrix-rust-sdk.git", default-features = false, features = ["rustls-tls"] }
|
||||||
|
|
||||||
|
# Dioxus
|
||||||
|
dioxus = { git = "https://github.com/ASR-ASU/dioxus.git", branch = "asr/add-scrolling-attributes" }
|
||||||
|
dioxus-free-icons = { git = "https://github.com/ASR-ASU/dioxus-free-icons.git", features = ["ionicons", "font-awesome-solid"] }
|
||||||
|
modx = "0.1.2"
|
||||||
[target.'cfg(target_family = "wasm")'.dependencies]
|
[target.'cfg(target_family = "wasm")'.dependencies]
|
||||||
web-sys = "0.3.69"
|
web-sys = "0.3.69"
|
||||||
|
tracing-web = "0.1.3"
|
||||||
|
|
||||||
|
[target.'cfg(not(target_family = "wasm"))'.dependencies]
|
||||||
|
time = "0.3.36"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
regex = "1.10.3"
|
regex = "1.10.3"
|
||||||
|
|
||||||
[package.metadata.turf]
|
[package.metadata.turf]
|
||||||
minify = true
|
minify = true
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@ use std::rc::Rc;
|
|||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
use futures_util::stream::StreamExt;
|
use futures_util::stream::StreamExt;
|
||||||
use log::{debug, error, warn};
|
use tracing::{debug, error, warn};
|
||||||
|
|
||||||
use crate::domain::model::account::Account;
|
use crate::domain::model::account::Account;
|
||||||
use crate::domain::model::messaging_interface::AccountMessagingProviderInterface;
|
use crate::domain::model::messaging_interface::AccountMessagingProviderInterface;
|
||||||
|
@@ -132,6 +132,7 @@ impl Client {
|
|||||||
|
|
||||||
let (reply, mut response) = oneshot::<bool>();
|
let (reply, mut response) = oneshot::<bool>();
|
||||||
|
|
||||||
|
// We can't use Room instance here, because dyn PaginableRoom is not Sync
|
||||||
let event = AccountEvent::NewSpace(
|
let event = AccountEvent::NewSpace(
|
||||||
room_id.clone(),
|
room_id.clone(),
|
||||||
name.clone(),
|
name.clone(),
|
||||||
@@ -194,6 +195,7 @@ impl Client {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We can't use Room instance here, because dyn PaginableRoom is not Sync
|
||||||
let event = AccountEvent::NewRoom(
|
let event = AccountEvent::NewRoom(
|
||||||
room_id.clone(),
|
room_id.clone(),
|
||||||
parents.clone(),
|
parents.clone(),
|
||||||
@@ -327,7 +329,6 @@ impl Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// This function is called on each m.room.member event for an invited room preview (room not already joined).
|
// This function is called on each m.room.member event for an invited room preview (room not already joined).
|
||||||
// async fn on_stripped_room_member_event(
|
|
||||||
async fn on_stripped_room_member_event(
|
async fn on_stripped_room_member_event(
|
||||||
ev: StrippedRoomMemberEvent,
|
ev: StrippedRoomMemberEvent,
|
||||||
matrix_client: MatrixClient,
|
matrix_client: MatrixClient,
|
||||||
|
@@ -3,9 +3,9 @@ use std::future::Future;
|
|||||||
use std::sync::OnceLock;
|
use std::sync::OnceLock;
|
||||||
use std::{collections::HashMap, future::IntoFuture};
|
use std::{collections::HashMap, future::IntoFuture};
|
||||||
|
|
||||||
use log::error;
|
|
||||||
use rand::distributions::{Alphanumeric, DistString};
|
use rand::distributions::{Alphanumeric, DistString};
|
||||||
use reqwest::Result as RequestResult;
|
use reqwest::Result as RequestResult;
|
||||||
|
use tracing::error;
|
||||||
|
|
||||||
#[cfg(feature = "desktop")]
|
#[cfg(feature = "desktop")]
|
||||||
use tokio::fs::read_to_string;
|
use tokio::fs::read_to_string;
|
||||||
|
63
src/main.rs
63
src/main.rs
@@ -1,20 +1,27 @@
|
|||||||
#![allow(non_snake_case)]
|
#![allow(non_snake_case)]
|
||||||
|
|
||||||
|
#[macro_use]
|
||||||
|
extern crate cfg_if;
|
||||||
|
|
||||||
mod domain;
|
mod domain;
|
||||||
mod infrastructure;
|
mod infrastructure;
|
||||||
mod ui;
|
mod ui;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use tracing::{debug, error};
|
||||||
#[cfg(feature = "desktop")]
|
|
||||||
use dioxus::desktop::Config;
|
|
||||||
|
|
||||||
use tracing::debug;
|
|
||||||
use tracing_subscriber::prelude::*;
|
use tracing_subscriber::prelude::*;
|
||||||
|
|
||||||
#[cfg(feature = "web")]
|
cfg_if! {
|
||||||
|
if #[cfg(feature = "desktop")] {
|
||||||
|
use dioxus::desktop::Config;
|
||||||
|
use std::fs::File;
|
||||||
|
use time::format_description::well_known::Iso8601;
|
||||||
|
use tracing_subscriber::fmt::time::UtcTime;
|
||||||
|
} else if #[cfg(feature = "web")] {
|
||||||
use tracing_web::MakeWebConsoleWriter;
|
use tracing_web::MakeWebConsoleWriter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
use crate::base::{login, sync_rooms};
|
use crate::base::{login, sync_rooms};
|
||||||
use crate::base::{APP_SETTINGS, ROOMS, SESSION};
|
use crate::base::{APP_SETTINGS, ROOMS, SESSION};
|
||||||
@@ -99,27 +106,41 @@ fn app() -> Element {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
#[cfg(feature = "desktop")]
|
let mut builder = LaunchBuilder::new();
|
||||||
{
|
|
||||||
let fmt_layer = tracing_subscriber::fmt::layer()
|
|
||||||
.with_filter(tracing::level_filters::LevelFilter::DEBUG);
|
|
||||||
tracing_subscriber::registry().with(fmt_layer).init();
|
|
||||||
|
|
||||||
let config = Config::new().with_menu(None);
|
let mut layers = Vec::new();
|
||||||
let builder = LaunchBuilder::new().with_cfg(config);
|
|
||||||
builder.launch(app);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "web")]
|
cfg_if! {
|
||||||
{
|
if #[cfg(feature = "desktop")] {
|
||||||
let fmt_layer = tracing_subscriber::fmt::layer()
|
let config = Config::new().with_menu(None);;
|
||||||
|
builder = builder.with_cfg(config);
|
||||||
|
|
||||||
|
let log_file = File::create("/tmp/bg92.log").unwrap();
|
||||||
|
let file_layer = tracing_subscriber::fmt::layer()
|
||||||
|
.with_writer(log_file)
|
||||||
|
.with_timer(UtcTime::new(Iso8601::DATE_TIME))
|
||||||
|
.with_ansi(false)
|
||||||
|
.with_filter(tracing::level_filters::LevelFilter::WARN)
|
||||||
|
.boxed();
|
||||||
|
layers.push(file_layer);
|
||||||
|
|
||||||
|
let console_layer = tracing_subscriber::fmt::layer()
|
||||||
|
// .with_filter(tracing::level_filters::LevelFilter::DEBUG);
|
||||||
|
.with_filter(tracing::level_filters::LevelFilter::WARN)
|
||||||
|
.boxed();
|
||||||
|
layers.push(console_layer);
|
||||||
|
|
||||||
|
} else if #[cfg(feature = "web")] {
|
||||||
|
let console_layer = tracing_subscriber::fmt::layer()
|
||||||
.with_ansi(false) // Only partially supported across browsers
|
.with_ansi(false) // Only partially supported across browsers
|
||||||
.without_time() // std::time is not available in browsers, see note below
|
.without_time() // std::time is not available in browsers, see note below
|
||||||
.with_writer(MakeWebConsoleWriter::new()) // write events to the console
|
.with_writer(MakeWebConsoleWriter::new()) // write events to the console
|
||||||
.with_filter(tracing::level_filters::LevelFilter::INFO);
|
.with_filter(tracing::level_filters::LevelFilter::INFO);
|
||||||
tracing_subscriber::registry().with(fmt_layer).init(); // Install these as subscribers to tracing events
|
layers.push(console_layer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tracing_subscriber::registry().with(layers).init();
|
||||||
|
|
||||||
let builder = LaunchBuilder::new();
|
|
||||||
builder.launch(app);
|
builder.launch(app);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@@ -5,7 +5,7 @@ use std::rc::Rc;
|
|||||||
|
|
||||||
use const_format::formatcp;
|
use const_format::formatcp;
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
use log::{debug, error, warn};
|
use tracing::{debug, error, warn};
|
||||||
use validator::{Validate, ValidateArgs, ValidateEmail, ValidationError, ValidationErrors};
|
use validator::{Validate, ValidateArgs, ValidateEmail, ValidationError, ValidationErrors};
|
||||||
use zxcvbn::zxcvbn;
|
use zxcvbn::zxcvbn;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user