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"
|
||||
|
||||
[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
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
|
73
src/main.rs
73
src/main.rs
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user