3 Commits

6 changed files with 99 additions and 62 deletions

View File

@@ -4,48 +4,63 @@ version = "0.1.0"
edition = "2021"
[features]
default = []
desktop = ["dioxus/desktop"]
web = ["dioxus/web"]
default = ["web"]
desktop = ["dioxus/desktop", "tracing-subscriber/time"]
web = ["dioxus/web", "matrix-sdk/js"]
[dependencies]
dioxus = "0.5.*"
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"] }
# Errors
anyhow = "1.0.75"
url = "2.5.0"
dirs = "5.0.1"
ctrlc-async = "3.2.2"
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]
web-sys = "0.3.69"
tracing-web = "0.1.3"
[target.'cfg(not(target_family = "wasm"))'.dependencies]
time = "0.3.36"
[build-dependencies]
regex = "1.10.3"
[package.metadata.turf]
minify = true

View File

@@ -2,7 +2,7 @@ use std::rc::Rc;
use dioxus::prelude::*;
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::messaging_interface::AccountMessagingProviderInterface;

View File

@@ -132,6 +132,7 @@ impl Client {
let (reply, mut response) = oneshot::<bool>();
// We can't use Room instance here, because dyn PaginableRoom is not Sync
let event = AccountEvent::NewSpace(
room_id.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(
room_id.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).
// async fn on_stripped_room_member_event(
async fn on_stripped_room_member_event(
ev: StrippedRoomMemberEvent,
matrix_client: MatrixClient,

View File

@@ -3,9 +3,9 @@ use std::future::Future;
use std::sync::OnceLock;
use std::{collections::HashMap, future::IntoFuture};
use log::error;
use rand::distributions::{Alphanumeric, DistString};
use reqwest::Result as RequestResult;
use tracing::error;
#[cfg(feature = "desktop")]
use tokio::fs::read_to_string;

View File

@@ -1,20 +1,27 @@
#![allow(non_snake_case)]
#[macro_use]
extern crate cfg_if;
mod domain;
mod infrastructure;
mod ui;
mod utils;
use dioxus::prelude::*;
#[cfg(feature = "desktop")]
use dioxus::desktop::Config;
use tracing::debug;
use tracing::{debug, error};
use tracing_subscriber::prelude::*;
#[cfg(feature = "web")]
use tracing_web::MakeWebConsoleWriter;
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 crate::base::{login, sync_rooms};
use crate::base::{APP_SETTINGS, ROOMS, SESSION};
@@ -99,27 +106,41 @@ fn app() -> Element {
}
fn main() {
#[cfg(feature = "desktop")]
{
let fmt_layer = tracing_subscriber::fmt::layer()
.with_filter(tracing::level_filters::LevelFilter::DEBUG);
tracing_subscriber::registry().with(fmt_layer).init();
let mut builder = LaunchBuilder::new();
let config = Config::new().with_menu(None);
let builder = LaunchBuilder::new().with_cfg(config);
builder.launch(app);
let mut layers = Vec::new();
cfg_if! {
if #[cfg(feature = "desktop")] {
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
.without_time() // std::time is not available in browsers, see note below
.with_writer(MakeWebConsoleWriter::new()) // write events to the console
.with_filter(tracing::level_filters::LevelFilter::INFO);
layers.push(console_layer);
}
}
#[cfg(feature = "web")]
{
let fmt_layer = tracing_subscriber::fmt::layer()
.with_ansi(false) // Only partially supported across browsers
.without_time() // std::time is not available in browsers, see note below
.with_writer(MakeWebConsoleWriter::new()) // write events to the console
.with_filter(tracing::level_filters::LevelFilter::INFO);
tracing_subscriber::registry().with(fmt_layer).init(); // Install these as subscribers to tracing events
tracing_subscriber::registry().with(layers).init();
let builder = LaunchBuilder::new();
builder.launch(app);
}
builder.launch(app);
}

View File

@@ -5,7 +5,7 @@ use std::rc::Rc;
use const_format::formatcp;
use dioxus::prelude::*;
use log::{debug, error, warn};
use tracing::{debug, error, warn};
use validator::{Validate, ValidateArgs, ValidateEmail, ValidationError, ValidationErrors};
use zxcvbn::zxcvbn;