diff --git a/.rustfmt.toml b/.rustfmt.toml new file mode 100644 index 0000000..fa5c2e0 --- /dev/null +++ b/.rustfmt.toml @@ -0,0 +1,4 @@ +edition = "2021" +imports_layout = "HorizontalVertical" +imports_granularity = "Crate" +group_imports = "One" diff --git a/.woodpecker.yml b/.woodpecker.yml index 81a0c95..5bc33ff 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -3,13 +3,14 @@ variables: steps: cargo_fmt: - image: *rust_image + image: rustlang/rust:nightly environment: # store cargo data in repo folder so that it gets cached between steps CARGO_HOME: .cargo_home commands: - rustup component add rustfmt - - cargo fmt -- --check + - cargo +nightly fmt -- --check + check_config_defaults_updated: image: *rust_image diff --git a/src/backend/api/article.rs b/src/backend/api/article.rs index 111f6e9..592ecce 100644 --- a/src/backend/api/article.rs +++ b/src/backend/api/article.rs @@ -1,27 +1,38 @@ -use crate::backend::database::article::DbArticleForm; -use crate::backend::database::conflict::{DbConflict, DbConflictForm}; -use crate::backend::database::edit::DbEditForm; -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::backend::federation::activities::create_article::CreateArticle; -use crate::backend::federation::activities::submit_article_update; -use crate::backend::utils::generate_article_version; -use crate::common::utils::extract_domain; -use crate::common::utils::http_protocol_str; -use crate::common::validation::can_edit_article; -use crate::common::{ApiConflict, ResolveObject}; -use crate::common::{ArticleView, DbArticle, DbEdit}; -use crate::common::{CreateArticleForm, EditArticleForm, EditVersion, ForkArticleForm}; -use crate::common::{DbInstance, SearchArticleForm}; -use crate::common::{GetArticleForm, ListArticlesForm}; -use crate::common::{LocalUserView, ProtectArticleForm}; -use activitypub_federation::config::Data; -use activitypub_federation::fetch::object_id::ObjectId; +use crate::{ + backend::{ + database::{ + article::DbArticleForm, + conflict::{DbConflict, DbConflictForm}, + edit::DbEditForm, + IbisData, + }, + error::MyResult, + federation::activities::{create_article::CreateArticle, submit_article_update}, + utils::generate_article_version, + }, + common::{ + utils::{extract_domain, http_protocol_str}, + validation::can_edit_article, + ApiConflict, + ArticleView, + CreateArticleForm, + DbArticle, + DbEdit, + DbInstance, + EditArticleForm, + EditVersion, + ForkArticleForm, + GetArticleForm, + ListArticlesForm, + LocalUserView, + ProtectArticleForm, + ResolveObject, + SearchArticleForm, + }, +}; +use activitypub_federation::{config::Data, fetch::object_id::ObjectId}; use anyhow::anyhow; -use axum::extract::Query; -use axum::Extension; -use axum::Form; -use axum::Json; +use axum::{extract::Query, Extension, Form, Json}; use axum_macros::debug_handler; use chrono::Utc; use diffy::create_patch; diff --git a/src/backend/api/instance.rs b/src/backend/api/instance.rs index 4f133c1..ac21975 100644 --- a/src/backend/api/instance.rs +++ b/src/backend/api/instance.rs @@ -1,13 +1,9 @@ -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::backend::federation::activities::follow::Follow; -use crate::common::{DbInstance, InstanceView, ResolveObject}; -use crate::common::{FollowInstance, LocalUserView}; -use activitypub_federation::config::Data; -use activitypub_federation::fetch::object_id::ObjectId; -use axum::extract::Query; -use axum::Extension; -use axum::{Form, Json}; +use crate::{ + backend::{database::IbisData, error::MyResult, federation::activities::follow::Follow}, + common::{DbInstance, FollowInstance, InstanceView, LocalUserView, ResolveObject}, +}; +use activitypub_federation::{config::Data, fetch::object_id::ObjectId}; +use axum::{extract::Query, Extension, Form, Json}; use axum_macros::debug_handler; /// Retrieve the local instance info. diff --git a/src/backend/api/mod.rs b/src/backend/api/mod.rs index 28a8db5..0169b3a 100644 --- a/src/backend/api/mod.rs +++ b/src/backend/api/mod.rs @@ -1,29 +1,42 @@ -use crate::backend::api::article::protect_article; -use crate::backend::api::article::{ - create_article, list_articles, resolve_article, search_article, +use crate::{ + backend::{ + api::{ + article::{ + create_article, + edit_article, + fork_article, + get_article, + list_articles, + protect_article, + resolve_article, + search_article, + }, + instance::{follow_instance, get_local_instance, resolve_instance}, + user::{ + get_user, + login_user, + logout_user, + my_profile, + register_user, + validate, + AUTH_COOKIE, + }, + }, + database::{conflict::DbConflict, IbisData}, + error::MyResult, + }, + common::{ApiConflict, LocalUserView}, }; -use crate::backend::api::article::{edit_article, fork_article, get_article}; -use crate::backend::api::instance::get_local_instance; -use crate::backend::api::instance::{follow_instance, resolve_instance}; -use crate::backend::api::user::validate; -use crate::backend::api::user::{get_user, register_user}; -use crate::backend::api::user::{login_user, logout_user}; -use crate::backend::api::user::{my_profile, AUTH_COOKIE}; -use crate::backend::database::conflict::DbConflict; -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::common::ApiConflict; -use crate::common::LocalUserView; use activitypub_federation::config::Data; -use axum::routing::{get, post}; use axum::{ - http::Request, - http::StatusCode, + http::{Request, StatusCode}, middleware::{self, Next}, response::Response, + routing::{get, post}, Extension, + Json, + Router, }; -use axum::{Json, Router}; use axum_extra::extract::CookieJar; use axum_macros::debug_handler; use futures::future::try_join_all; diff --git a/src/backend/api/user.rs b/src/backend/api/user.rs index 4b6bca9..79f3e54 100644 --- a/src/backend/api/user.rs +++ b/src/backend/api/user.rs @@ -1,18 +1,26 @@ -use crate::backend::database::{read_jwt_secret, IbisData}; -use crate::backend::error::MyResult; -use crate::common::{DbPerson, GetUserForm, LocalUserView, LoginUserForm, RegisterUserForm}; +use crate::{ + backend::{ + database::{read_jwt_secret, IbisData}, + error::MyResult, + }, + common::{DbPerson, GetUserForm, LocalUserView, LoginUserForm, RegisterUserForm}, +}; use activitypub_federation::config::Data; use anyhow::anyhow; -use axum::extract::Query; -use axum::{Form, Json}; +use axum::{extract::Query, Form, Json}; use axum_extra::extract::cookie::{Cookie, CookieJar, Expiration, SameSite}; use axum_macros::debug_handler; use bcrypt::verify; use chrono::Utc; -use jsonwebtoken::DecodingKey; -use jsonwebtoken::Validation; -use jsonwebtoken::{decode, get_current_timestamp}; -use jsonwebtoken::{encode, EncodingKey, Header}; +use jsonwebtoken::{ + decode, + encode, + get_current_timestamp, + DecodingKey, + EncodingKey, + Header, + Validation, +}; use serde::{Deserialize, Serialize}; use time::{Duration, OffsetDateTime}; diff --git a/src/backend/database/article.rs b/src/backend/database/article.rs index c2f9e3c..a46ce1a 100644 --- a/src/backend/database/article.rs +++ b/src/backend/database/article.rs @@ -1,17 +1,24 @@ -use crate::backend::database::schema::{article, edit, instance}; -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::backend::federation::objects::edits_collection::DbEditCollection; -use crate::common::DbEdit; -use crate::common::EditVersion; -use crate::common::{ArticleView, DbArticle}; -use activitypub_federation::fetch::collection_id::CollectionId; -use activitypub_federation::fetch::object_id::ObjectId; -use diesel::dsl::max; - -use diesel::ExpressionMethods; +use crate::{ + backend::{ + database::{ + schema::{article, edit, instance}, + IbisData, + }, + error::MyResult, + federation::objects::edits_collection::DbEditCollection, + }, + common::{ArticleView, DbArticle, DbEdit, EditVersion}, +}; +use activitypub_federation::fetch::{collection_id::CollectionId, object_id::ObjectId}; use diesel::{ - insert_into, AsChangeset, BoolExpressionMethods, Insertable, PgTextExpressionMethods, QueryDsl, + dsl::max, + insert_into, + AsChangeset, + BoolExpressionMethods, + ExpressionMethods, + Insertable, + PgTextExpressionMethods, + QueryDsl, RunQueryDsl, }; use std::ops::DerefMut; diff --git a/src/backend/database/conflict.rs b/src/backend/database/conflict.rs index e75c4c8..f2d3d19 100644 --- a/src/backend/database/conflict.rs +++ b/src/backend/database/conflict.rs @@ -1,16 +1,23 @@ -use crate::backend::database::schema::conflict; -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::backend::federation::activities::submit_article_update; -use crate::backend::utils::generate_article_version; -use crate::common::DbEdit; -use crate::common::DbLocalUser; -use crate::common::EditVersion; -use crate::common::{ApiConflict, DbArticle}; +use crate::{ + backend::{ + database::{schema::conflict, IbisData}, + error::MyResult, + federation::activities::submit_article_update, + utils::generate_article_version, + }, + common::{ApiConflict, DbArticle, DbEdit, DbLocalUser, EditVersion}, +}; use activitypub_federation::config::Data; -use diesel::ExpressionMethods; use diesel::{ - delete, insert_into, Identifiable, Insertable, QueryDsl, Queryable, RunQueryDsl, Selectable, + delete, + insert_into, + ExpressionMethods, + Identifiable, + Insertable, + QueryDsl, + Queryable, + RunQueryDsl, + Selectable, }; use diffy::{apply, merge, Patch}; use serde::{Deserialize, Serialize}; diff --git a/src/backend/database/edit.rs b/src/backend/database/edit.rs index f94ec40..755fe5b 100644 --- a/src/backend/database/edit.rs +++ b/src/backend/database/edit.rs @@ -1,12 +1,14 @@ -use crate::backend::database::schema::{edit, person}; -use crate::backend::error::MyResult; -use crate::backend::IbisData; -use crate::common::{DbArticle, DbEdit}; -use crate::common::{EditVersion, EditView}; +use crate::{ + backend::{ + database::schema::{edit, person}, + error::MyResult, + IbisData, + }, + common::{DbArticle, DbEdit, EditVersion, EditView}, +}; use activitypub_federation::fetch::object_id::ObjectId; use chrono::{DateTime, Utc}; -use diesel::ExpressionMethods; -use diesel::{insert_into, AsChangeset, Insertable, QueryDsl, RunQueryDsl}; +use diesel::{insert_into, AsChangeset, ExpressionMethods, Insertable, QueryDsl, RunQueryDsl}; use diffy::create_patch; use std::ops::DerefMut; diff --git a/src/backend/database/instance.rs b/src/backend/database/instance.rs index 8a9bd21..c67b92a 100644 --- a/src/backend/database/instance.rs +++ b/src/backend/database/instance.rs @@ -1,16 +1,29 @@ -use crate::backend::database::schema::{instance, instance_follow}; -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::backend::federation::objects::articles_collection::DbArticleCollection; -use crate::common::{DbInstance, DbPerson, InstanceView}; -use activitypub_federation::config::Data; -use activitypub_federation::fetch::collection_id::CollectionId; -use activitypub_federation::fetch::object_id::ObjectId; +use crate::{ + backend::{ + database::{ + schema::{instance, instance_follow}, + IbisData, + }, + error::MyResult, + federation::objects::articles_collection::DbArticleCollection, + }, + common::{DbInstance, DbPerson, InstanceView}, +}; +use activitypub_federation::{ + config::Data, + fetch::{collection_id::CollectionId, object_id::ObjectId}, +}; use chrono::{DateTime, Utc}; -use diesel::ExpressionMethods; -use diesel::{insert_into, AsChangeset, Insertable, JoinOnDsl, QueryDsl, RunQueryDsl}; -use std::fmt::Debug; -use std::ops::DerefMut; +use diesel::{ + insert_into, + AsChangeset, + ExpressionMethods, + Insertable, + JoinOnDsl, + QueryDsl, + RunQueryDsl, +}; +use std::{fmt::Debug, ops::DerefMut}; #[derive(Debug, Clone, Insertable, AsChangeset)] #[diesel(table_name = instance, check_for_backend(diesel::pg::Pg))] diff --git a/src/backend/database/mod.rs b/src/backend/database/mod.rs index d2d2c0a..8c9623e 100644 --- a/src/backend/database/mod.rs +++ b/src/backend/database/mod.rs @@ -1,11 +1,10 @@ -use crate::backend::config::IbisConfig; -use crate::backend::database::schema::jwt_secret; -use crate::backend::error::MyResult; -use diesel::r2d2::ConnectionManager; -use diesel::r2d2::Pool; -use diesel::PgConnection; -use diesel::{QueryDsl, RunQueryDsl}; - +use crate::backend::{config::IbisConfig, database::schema::jwt_secret, error::MyResult}; +use diesel::{ + r2d2::{ConnectionManager, Pool}, + PgConnection, + QueryDsl, + RunQueryDsl, +}; use std::ops::DerefMut; pub mod article; diff --git a/src/backend/database/user.rs b/src/backend/database/user.rs index b4b9977..3f43e69 100644 --- a/src/backend/database/user.rs +++ b/src/backend/database/user.rs @@ -1,18 +1,30 @@ -use crate::backend::database::schema::{instance, instance_follow}; -use crate::backend::database::schema::{local_user, person}; -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::common::utils::http_protocol_str; -use crate::common::{DbInstance, DbLocalUser, DbPerson, LocalUserView}; -use activitypub_federation::config::Data; -use activitypub_federation::fetch::object_id::ObjectId; -use activitypub_federation::http_signatures::generate_actor_keypair; -use bcrypt::hash; -use bcrypt::DEFAULT_COST; +use crate::{ + backend::{ + database::{ + schema::{instance, instance_follow, local_user, person}, + IbisData, + }, + error::MyResult, + }, + common::{utils::http_protocol_str, DbInstance, DbLocalUser, DbPerson, LocalUserView}, +}; +use activitypub_federation::{ + config::Data, + fetch::object_id::ObjectId, + http_signatures::generate_actor_keypair, +}; +use bcrypt::{hash, DEFAULT_COST}; use chrono::{DateTime, Local, Utc}; -use diesel::{insert_into, AsChangeset, Insertable, RunQueryDsl}; -use diesel::{ExpressionMethods, JoinOnDsl}; -use diesel::{PgTextExpressionMethods, QueryDsl}; +use diesel::{ + insert_into, + AsChangeset, + ExpressionMethods, + Insertable, + JoinOnDsl, + PgTextExpressionMethods, + QueryDsl, + RunQueryDsl, +}; use std::ops::DerefMut; #[derive(Debug, Clone, Insertable, AsChangeset)] diff --git a/src/backend/federation/activities/accept.rs b/src/backend/federation/activities/accept.rs index f3ec534..3c512b1 100644 --- a/src/backend/federation/activities/accept.rs +++ b/src/backend/federation/activities/accept.rs @@ -1,11 +1,17 @@ -use crate::backend::error::MyResult; -use crate::backend::federation::send_activity; -use crate::backend::utils::generate_activity_id; -use crate::backend::{database::IbisData, federation::activities::follow::Follow}; -use crate::common::DbInstance; -use activitypub_federation::traits::Actor; +use crate::{ + backend::{ + database::IbisData, + error::MyResult, + federation::{activities::follow::Follow, send_activity}, + utils::generate_activity_id, + }, + common::DbInstance, +}; use activitypub_federation::{ - config::Data, fetch::object_id::ObjectId, kinds::activity::AcceptType, traits::ActivityHandler, + config::Data, + fetch::object_id::ObjectId, + kinds::activity::AcceptType, + traits::{ActivityHandler, Actor}, }; use serde::{Deserialize, Serialize}; use url::Url; diff --git a/src/backend/federation/activities/create_article.rs b/src/backend/federation/activities/create_article.rs index 5eee755..8b243a3 100644 --- a/src/backend/federation/activities/create_article.rs +++ b/src/backend/federation/activities/create_article.rs @@ -1,13 +1,16 @@ -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::backend::federation::objects::article::ApubArticle; -use crate::backend::utils::generate_activity_id; -use crate::common::DbArticle; -use crate::common::DbInstance; -use activitypub_federation::kinds::activity::CreateType; +use crate::{ + backend::{ + database::IbisData, + error::MyResult, + federation::objects::article::ApubArticle, + utils::generate_activity_id, + }, + common::{DbArticle, DbInstance}, +}; use activitypub_federation::{ config::Data, fetch::object_id::ObjectId, + kinds::activity::CreateType, protocol::helpers::deserialize_one_or_many, traits::{ActivityHandler, Object}, }; diff --git a/src/backend/federation/activities/follow.rs b/src/backend/federation/activities/follow.rs index b5553b4..a68cb32 100644 --- a/src/backend/federation/activities/follow.rs +++ b/src/backend/federation/activities/follow.rs @@ -1,15 +1,17 @@ -use crate::backend::error::MyResult; -use crate::backend::federation::send_activity; -use crate::backend::{ - database::IbisData, federation::activities::accept::Accept, generate_activity_id, +use crate::{ + backend::{ + database::IbisData, + error::MyResult, + federation::{activities::accept::Accept, send_activity}, + generate_activity_id, + }, + common::{DbInstance, DbPerson}, }; -use crate::common::DbInstance; -use crate::common::DbPerson; -use activitypub_federation::protocol::verification::verify_urls_match; use activitypub_federation::{ config::Data, fetch::object_id::ObjectId, kinds::activity::FollowType, + protocol::verification::verify_urls_match, traits::{ActivityHandler, Actor}, }; use serde::{Deserialize, Serialize}; diff --git a/src/backend/federation/activities/mod.rs b/src/backend/federation/activities/mod.rs index 9fc1f8e..251d546 100644 --- a/src/backend/federation/activities/mod.rs +++ b/src/backend/federation/activities/mod.rs @@ -1,11 +1,14 @@ -use crate::backend::database::edit::DbEditForm; -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::backend::federation::activities::update_local_article::UpdateLocalArticle; -use crate::backend::federation::activities::update_remote_article::UpdateRemoteArticle; -use crate::common::DbInstance; -use crate::common::EditVersion; -use crate::common::{DbArticle, DbEdit}; +use crate::{ + backend::{ + database::{edit::DbEditForm, IbisData}, + error::Error, + federation::activities::{ + update_local_article::UpdateLocalArticle, + update_remote_article::UpdateRemoteArticle, + }, + }, + common::{DbArticle, DbEdit, DbInstance, EditVersion}, +}; use activitypub_federation::config::Data; use chrono::Utc; diff --git a/src/backend/federation/activities/reject.rs b/src/backend/federation/activities/reject.rs index 8afff89..4a54ba5 100644 --- a/src/backend/federation/activities/reject.rs +++ b/src/backend/federation/activities/reject.rs @@ -1,17 +1,22 @@ -use crate::backend::database::conflict::{DbConflict, DbConflictForm}; -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::backend::federation::objects::edit::ApubEdit; -use crate::backend::utils::generate_activity_id; -use crate::common::DbInstance; -use crate::common::EditVersion; -use activitypub_federation::kinds::activity::RejectType; +use crate::{ + backend::{ + database::{ + conflict::{DbConflict, DbConflictForm}, + IbisData, + }, + error::MyResult, + federation::{objects::edit::ApubEdit, send_activity}, + utils::generate_activity_id, + }, + common::{DbInstance, EditVersion}, +}; use activitypub_federation::{ - config::Data, fetch::object_id::ObjectId, protocol::helpers::deserialize_one_or_many, + config::Data, + fetch::object_id::ObjectId, + kinds::activity::RejectType, + protocol::helpers::deserialize_one_or_many, traits::ActivityHandler, }; - -use crate::backend::federation::send_activity; use serde::{Deserialize, Serialize}; use url::Url; diff --git a/src/backend/federation/activities/update_local_article.rs b/src/backend/federation/activities/update_local_article.rs index 9983d48..51bea0f 100644 --- a/src/backend/federation/activities/update_local_article.rs +++ b/src/backend/federation/activities/update_local_article.rs @@ -1,14 +1,16 @@ -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; -use crate::backend::federation::objects::article::ApubArticle; - -use crate::backend::utils::generate_activity_id; -use crate::common::DbArticle; -use crate::common::DbInstance; -use activitypub_federation::kinds::activity::UpdateType; +use crate::{ + backend::{ + database::IbisData, + error::MyResult, + federation::objects::article::ApubArticle, + utils::generate_activity_id, + }, + common::{DbArticle, DbInstance}, +}; use activitypub_federation::{ config::Data, fetch::object_id::ObjectId, + kinds::activity::UpdateType, protocol::helpers::deserialize_one_or_many, traits::{ActivityHandler, Object}, }; diff --git a/src/backend/federation/activities/update_remote_article.rs b/src/backend/federation/activities/update_remote_article.rs index d569c46..64f17d5 100644 --- a/src/backend/federation/activities/update_remote_article.rs +++ b/src/backend/federation/activities/update_remote_article.rs @@ -1,19 +1,20 @@ -use crate::backend::database::IbisData; -use crate::backend::error::MyResult; - -use crate::backend::federation::activities::reject::RejectEdit; -use crate::backend::federation::activities::update_local_article::UpdateLocalArticle; -use crate::backend::federation::objects::edit::ApubEdit; -use crate::backend::federation::send_activity; -use crate::backend::utils::generate_activity_id; -use crate::common::validation::can_edit_article; -use crate::common::DbArticle; -use crate::common::DbEdit; -use crate::common::DbInstance; -use activitypub_federation::kinds::activity::UpdateType; +use crate::{ + backend::{ + database::IbisData, + error::MyResult, + federation::{ + activities::{reject::RejectEdit, update_local_article::UpdateLocalArticle}, + objects::edit::ApubEdit, + send_activity, + }, + utils::generate_activity_id, + }, + common::{validation::can_edit_article, DbArticle, DbEdit, DbInstance}, +}; use activitypub_federation::{ config::Data, fetch::object_id::ObjectId, + kinds::activity::UpdateType, protocol::helpers::deserialize_one_or_many, traits::{ActivityHandler, Object}, }; diff --git a/src/backend/federation/mod.rs b/src/backend/federation/mod.rs index 8e5e7f5..6a7c9a8 100644 --- a/src/backend/federation/mod.rs +++ b/src/backend/federation/mod.rs @@ -1,10 +1,11 @@ -use crate::backend::config::IbisConfig; -use crate::backend::database::IbisData; -use activitypub_federation::activity_queue::queue_activity; -use activitypub_federation::config::{Data, UrlVerifier}; -use activitypub_federation::error::Error as ActivityPubError; -use activitypub_federation::protocol::context::WithContext; -use activitypub_federation::traits::{ActivityHandler, Actor}; +use crate::backend::{config::IbisConfig, database::IbisData}; +use activitypub_federation::{ + activity_queue::queue_activity, + config::{Data, UrlVerifier}, + error::Error as ActivityPubError, + protocol::context::WithContext, + traits::{ActivityHandler, Actor}, +}; use async_trait::async_trait; use serde::Serialize; use std::fmt::Debug; diff --git a/src/backend/federation/objects/article.rs b/src/backend/federation/objects/article.rs index 21a3d56..84d4503 100644 --- a/src/backend/federation/objects/article.rs +++ b/src/backend/federation/objects/article.rs @@ -1,17 +1,17 @@ -use crate::backend::database::article::DbArticleForm; -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::backend::federation::objects::edits_collection::DbEditCollection; -use crate::common::DbArticle; -use crate::common::DbInstance; -use crate::common::EditVersion; -use activitypub_federation::config::Data; -use activitypub_federation::fetch::collection_id::CollectionId; -use activitypub_federation::kinds::object::ArticleType; -use activitypub_federation::kinds::public; -use activitypub_federation::protocol::verification::verify_domains_match; +use crate::{ + backend::{ + database::{article::DbArticleForm, IbisData}, + error::Error, + federation::objects::edits_collection::DbEditCollection, + }, + common::{DbArticle, DbInstance, EditVersion}, +}; use activitypub_federation::{ - fetch::object_id::ObjectId, protocol::helpers::deserialize_one_or_many, traits::Object, + config::Data, + fetch::{collection_id::CollectionId, object_id::ObjectId}, + kinds::{object::ArticleType, public}, + protocol::{helpers::deserialize_one_or_many, verification::verify_domains_match}, + traits::Object, }; use serde::{Deserialize, Serialize}; use url::Url; diff --git a/src/backend/federation/objects/articles_collection.rs b/src/backend/federation/objects/articles_collection.rs index 1275db0..8141494 100644 --- a/src/backend/federation/objects/articles_collection.rs +++ b/src/backend/federation/objects/articles_collection.rs @@ -1,17 +1,14 @@ -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::backend::federation::objects::article::ApubArticle; -use crate::common::DbInstance; - -use crate::common::DbArticle; -use activitypub_federation::kinds::collection::CollectionType; -use activitypub_federation::protocol::verification::verify_domains_match; +use crate::{ + backend::{database::IbisData, error::Error, federation::objects::article::ApubArticle}, + common::{DbArticle, DbInstance}, +}; use activitypub_federation::{ config::Data, + kinds::collection::CollectionType, + protocol::verification::verify_domains_match, traits::{Collection, Object}, }; -use futures::future; -use futures::future::try_join_all; +use futures::{future, future::try_join_all}; use serde::{Deserialize, Serialize}; use url::Url; diff --git a/src/backend/federation/objects/edit.rs b/src/backend/federation/objects/edit.rs index 1b39143..b320b09 100644 --- a/src/backend/federation/objects/edit.rs +++ b/src/backend/federation/objects/edit.rs @@ -1,13 +1,16 @@ -use crate::backend::database::edit::DbEditForm; -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::common::DbPerson; -use crate::common::EditVersion; -use crate::common::{DbArticle, DbEdit}; -use activitypub_federation::config::Data; -use activitypub_federation::fetch::object_id::ObjectId; -use activitypub_federation::protocol::verification::verify_domains_match; -use activitypub_federation::traits::Object; +use crate::{ + backend::{ + database::{edit::DbEditForm, IbisData}, + error::Error, + }, + common::{DbArticle, DbEdit, DbPerson, EditVersion}, +}; +use activitypub_federation::{ + config::Data, + fetch::object_id::ObjectId, + protocol::verification::verify_domains_match, + traits::Object, +}; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use url::Url; diff --git a/src/backend/federation/objects/edits_collection.rs b/src/backend/federation/objects/edits_collection.rs index 5c34281..93fa91e 100644 --- a/src/backend/federation/objects/edits_collection.rs +++ b/src/backend/federation/objects/edits_collection.rs @@ -1,18 +1,14 @@ -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::backend::federation::objects::edit::ApubEdit; -use crate::common::DbArticle; - -use crate::common::DbEdit; -use crate::common::DbInstance; -use activitypub_federation::kinds::collection::OrderedCollectionType; -use activitypub_federation::protocol::verification::verify_domains_match; +use crate::{ + backend::{database::IbisData, error::Error, federation::objects::edit::ApubEdit}, + common::{DbArticle, DbEdit, DbInstance}, +}; use activitypub_federation::{ config::Data, + kinds::collection::OrderedCollectionType, + protocol::verification::verify_domains_match, traits::{Collection, Object}, }; -use futures::future; -use futures::future::try_join_all; +use futures::{future, future::try_join_all}; use serde::{Deserialize, Serialize}; use url::Url; diff --git a/src/backend/federation/objects/instance.rs b/src/backend/federation/objects/instance.rs index f8cd3d5..df8f4e7 100644 --- a/src/backend/federation/objects/instance.rs +++ b/src/backend/federation/objects/instance.rs @@ -1,19 +1,17 @@ -use crate::backend::database::instance::DbInstanceForm; -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::backend::error::MyResult; -use crate::backend::federation::objects::articles_collection::DbArticleCollection; -use crate::backend::federation::send_activity; -use crate::common::utils::extract_domain; -use crate::common::DbInstance; -use activitypub_federation::fetch::collection_id::CollectionId; -use activitypub_federation::kinds::actor::ServiceType; -use activitypub_federation::traits::ActivityHandler; +use crate::{ + backend::{ + database::{instance::DbInstanceForm, IbisData}, + error::{Error, MyResult}, + federation::{objects::articles_collection::DbArticleCollection, send_activity}, + }, + common::{utils::extract_domain, DbInstance}, +}; use activitypub_federation::{ config::Data, - fetch::object_id::ObjectId, + fetch::{collection_id::CollectionId, object_id::ObjectId}, + kinds::actor::ServiceType, protocol::{public_key::PublicKey, verification::verify_domains_match}, - traits::{Actor, Object}, + traits::{ActivityHandler, Actor, Object}, }; use chrono::{DateTime, Local, Utc}; use serde::{Deserialize, Serialize}; diff --git a/src/backend/federation/objects/user.rs b/src/backend/federation/objects/user.rs index e2ae239..e04c14b 100644 --- a/src/backend/federation/objects/user.rs +++ b/src/backend/federation/objects/user.rs @@ -1,11 +1,14 @@ -use crate::backend::database::user::DbPersonForm; -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::common::DbPerson; -use activitypub_federation::kinds::actor::PersonType; +use crate::{ + backend::{ + database::{user::DbPersonForm, IbisData}, + error::Error, + }, + common::DbPerson, +}; use activitypub_federation::{ config::Data, fetch::object_id::ObjectId, + kinds::actor::PersonType, protocol::{public_key::PublicKey, verification::verify_domains_match}, traits::{Actor, Object}, }; diff --git a/src/backend/federation/routes.rs b/src/backend/federation/routes.rs index 3c9b881..7c091f5 100644 --- a/src/backend/federation/routes.rs +++ b/src/backend/federation/routes.rs @@ -1,33 +1,42 @@ -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::backend::error::MyResult; -use crate::backend::federation::activities::accept::Accept; -use crate::backend::federation::activities::create_article::CreateArticle; -use crate::backend::federation::activities::follow::Follow; -use crate::backend::federation::activities::reject::RejectEdit; -use crate::backend::federation::activities::update_local_article::UpdateLocalArticle; -use crate::backend::federation::activities::update_remote_article::UpdateRemoteArticle; -use crate::backend::federation::objects::article::ApubArticle; -use crate::backend::federation::objects::articles_collection::{ - ArticleCollection, DbArticleCollection, +use crate::{ + backend::{ + database::IbisData, + error::{Error, MyResult}, + federation::{ + activities::{ + accept::Accept, + create_article::CreateArticle, + follow::Follow, + reject::RejectEdit, + update_local_article::UpdateLocalArticle, + update_remote_article::UpdateRemoteArticle, + }, + objects::{ + article::ApubArticle, + articles_collection::{ArticleCollection, DbArticleCollection}, + edits_collection::{ApubEditCollection, DbEditCollection}, + instance::ApubInstance, + user::ApubUser, + }, + }, + }, + common::{DbArticle, DbInstance, DbPerson}, +}; +use activitypub_federation::{ + axum::{ + inbox::{receive_activity, ActivityData}, + json::FederationJson, + }, + config::Data, + protocol::context::WithContext, + traits::{ActivityHandler, Actor, Collection, Object}, +}; +use axum::{ + extract::Path, + response::IntoResponse, + routing::{get, post}, + Router, }; -use crate::backend::federation::objects::edits_collection::{ApubEditCollection, DbEditCollection}; -use crate::backend::federation::objects::instance::ApubInstance; -use crate::backend::federation::objects::user::ApubUser; -use crate::common::DbArticle; -use crate::common::DbInstance; -use crate::common::DbPerson; -use activitypub_federation::axum::inbox::{receive_activity, ActivityData}; -use activitypub_federation::axum::json::FederationJson; -use activitypub_federation::config::Data; -use activitypub_federation::protocol::context::WithContext; -use activitypub_federation::traits::Actor; -use activitypub_federation::traits::Object; -use activitypub_federation::traits::{ActivityHandler, Collection}; -use axum::extract::Path; -use axum::response::IntoResponse; -use axum::routing::{get, post}; -use axum::Router; use axum_macros::debug_handler; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; diff --git a/src/backend/mod.rs b/src/backend/mod.rs index 883e525..d19ef5b 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -1,38 +1,45 @@ -use crate::backend::config::IbisConfig; -use crate::backend::database::article::DbArticleForm; -use crate::backend::database::instance::DbInstanceForm; -use crate::backend::database::IbisData; -use crate::backend::error::Error; -use crate::backend::error::MyResult; -use crate::backend::federation::activities::submit_article_update; -use crate::backend::federation::routes::federation_routes; -use crate::backend::federation::VerifyUrlData; -use crate::backend::utils::generate_activity_id; -use crate::common::utils::http_protocol_str; -use crate::common::{DbArticle, DbInstance, DbPerson, EditVersion, MAIN_PAGE_NAME}; -use crate::frontend::app::App; -use activitypub_federation::config::{Data, FederationConfig, FederationMiddleware}; -use activitypub_federation::fetch::collection_id::CollectionId; -use activitypub_federation::fetch::object_id::ObjectId; -use activitypub_federation::http_signatures::generate_actor_keypair; +use crate::{ + backend::{ + config::IbisConfig, + database::{article::DbArticleForm, instance::DbInstanceForm, IbisData}, + error::{Error, MyResult}, + federation::{activities::submit_article_update, routes::federation_routes, VerifyUrlData}, + utils::generate_activity_id, + }, + common::{ + utils::http_protocol_str, + DbArticle, + DbInstance, + DbPerson, + EditVersion, + MAIN_PAGE_NAME, + }, + frontend::app::App, +}; +use activitypub_federation::{ + config::{Data, FederationConfig, FederationMiddleware}, + fetch::{collection_id::CollectionId, object_id::ObjectId}, + http_signatures::generate_actor_keypair, +}; use api::api_routes; -use axum::debug_handler; -use axum::headers::HeaderMap; -use axum::http::{HeaderValue, Request}; -use axum::response::IntoResponse; -use axum::routing::get; -use axum::Server; -use axum::ServiceExt; -use axum::{middleware::Next, response::Response, Router}; +use axum::{ + debug_handler, + headers::HeaderMap, + http::{HeaderValue, Request}, + middleware::Next, + response::{IntoResponse, Response}, + routing::get, + Router, + Server, + ServiceExt, +}; use chrono::Local; -use diesel::r2d2::ConnectionManager; -use diesel::r2d2::Pool; -use diesel::PgConnection; -use diesel_migrations::embed_migrations; -use diesel_migrations::EmbeddedMigrations; -use diesel_migrations::MigrationHarness; -use leptos::leptos_config::get_config_from_str; -use leptos::*; +use diesel::{ + r2d2::{ConnectionManager, Pool}, + PgConnection, +}; +use diesel_migrations::{embed_migrations, EmbeddedMigrations, MigrationHarness}; +use leptos::{leptos_config::get_config_from_str, *}; use leptos_axum::{generate_route_list, LeptosRoutes}; use log::info; use tower::Layer; diff --git a/src/backend/utils.rs b/src/backend/utils.rs index 2ec90ad..18a7a46 100644 --- a/src/backend/utils.rs +++ b/src/backend/utils.rs @@ -1,14 +1,12 @@ -use crate::backend::error::MyResult; -use crate::common::EditView; -use crate::common::{utils, EditVersion}; -use activitypub_federation::fetch::object_id::ObjectId; -use activitypub_federation::traits::Object; +use crate::{ + backend::error::MyResult, + common::{utils, utils::extract_domain, EditVersion, EditView}, +}; +use activitypub_federation::{fetch::object_id::ObjectId, traits::Object}; use anyhow::anyhow; use diffy::{apply, Patch}; use rand::{distributions::Alphanumeric, thread_rng, Rng}; use serde::Deserialize; - -use crate::common::utils::extract_domain; use url::{ParseError, Url}; pub fn generate_activity_id(for_url: &ObjectId) -> Result diff --git a/src/common/validation.rs b/src/common/validation.rs index a3cd48a..f2278b7 100644 --- a/src/common/validation.rs +++ b/src/common/validation.rs @@ -1,6 +1,5 @@ use crate::common::DbArticle; -use anyhow::anyhow; -use anyhow::Result; +use anyhow::{anyhow, Result}; pub fn can_edit_article(article: &DbArticle, is_admin: bool) -> Result<()> { let err = anyhow!("Article is protected, only admins on origin instance can edit"); diff --git a/src/frontend/api.rs b/src/frontend/api.rs index 9d760f6..25afbf3 100644 --- a/src/frontend/api.rs +++ b/src/frontend/api.rs @@ -1,11 +1,28 @@ -use crate::common::utils::http_protocol_str; -use crate::common::{ApiConflict, ListArticlesForm, ProtectArticleForm}; -use crate::common::{ArticleView, LoginUserForm, RegisterUserForm}; -use crate::common::{CreateArticleForm, EditArticleForm, ForkArticleForm, LocalUserView}; -use crate::common::{DbArticle, GetArticleForm}; -use crate::common::{DbInstance, FollowInstance, InstanceView, SearchArticleForm}; -use crate::common::{DbPerson, GetUserForm, ResolveObject}; -use crate::frontend::error::MyResult; +use crate::{ + common::{ + utils::http_protocol_str, + ApiConflict, + ArticleView, + CreateArticleForm, + DbArticle, + DbInstance, + DbPerson, + EditArticleForm, + FollowInstance, + ForkArticleForm, + GetArticleForm, + GetUserForm, + InstanceView, + ListArticlesForm, + LocalUserView, + LoginUserForm, + ProtectArticleForm, + RegisterUserForm, + ResolveObject, + SearchArticleForm, + }, + frontend::error::MyResult, +}; use anyhow::anyhow; use reqwest::{Client, RequestBuilder, StatusCode}; use serde::{Deserialize, Serialize}; diff --git a/src/frontend/app.rs b/src/frontend/app.rs index f42da6a..409cdc4 100644 --- a/src/frontend/app.rs +++ b/src/frontend/app.rs @@ -1,29 +1,44 @@ -use crate::common::LocalUserView; -use crate::frontend::api::ApiClient; -use crate::frontend::backend_hostname; -use crate::frontend::components::nav::Nav; -use crate::frontend::pages::article::actions::ArticleActions; -use crate::frontend::pages::article::create::CreateArticle; -use crate::frontend::pages::article::edit::EditArticle; -use crate::frontend::pages::article::history::ArticleHistory; -use crate::frontend::pages::article::list::ListArticles; -use crate::frontend::pages::article::read::ReadArticle; -use crate::frontend::pages::conflicts::Conflicts; -use crate::frontend::pages::diff::EditDiff; -use crate::frontend::pages::instance_details::InstanceDetails; -use crate::frontend::pages::login::Login; -use crate::frontend::pages::register::Register; -use crate::frontend::pages::search::Search; -use crate::frontend::pages::user_profile::UserProfile; -use leptos::{ - component, create_local_resource, create_rw_signal, expect_context, provide_context, - use_context, view, IntoView, RwSignal, SignalGet, SignalGetUntracked, SignalUpdate, +use crate::{ + common::LocalUserView, + frontend::{ + api::ApiClient, + backend_hostname, + components::nav::Nav, + pages::{ + article::{ + actions::ArticleActions, + create::CreateArticle, + edit::EditArticle, + history::ArticleHistory, + list::ListArticles, + read::ReadArticle, + }, + conflicts::Conflicts, + diff::EditDiff, + instance_details::InstanceDetails, + login::Login, + register::Register, + search::Search, + user_profile::UserProfile, + }, + }, }; -use leptos_meta::provide_meta_context; -use leptos_meta::*; -use leptos_router::Route; -use leptos_router::Router; -use leptos_router::Routes; +use leptos::{ + component, + create_local_resource, + create_rw_signal, + expect_context, + provide_context, + use_context, + view, + IntoView, + RwSignal, + SignalGet, + SignalGetUntracked, + SignalUpdate, +}; +use leptos_meta::{provide_meta_context, *}; +use leptos_router::{Route, Router, Routes}; use reqwest::Client; // https://book.leptos.dev/15_global_state.html diff --git a/src/frontend/components/article_nav.rs b/src/frontend/components/article_nav.rs index 42e94f2..0198d1a 100644 --- a/src/frontend/components/article_nav.rs +++ b/src/frontend/components/article_nav.rs @@ -1,7 +1,7 @@ -use crate::common::validation::can_edit_article; -use crate::common::ArticleView; -use crate::frontend::app::GlobalState; -use crate::frontend::article_link; +use crate::{ + common::{validation::can_edit_article, ArticleView}, + frontend::{app::GlobalState, article_link}, +}; use leptos::*; use leptos_router::*; diff --git a/src/frontend/components/nav.rs b/src/frontend/components/nav.rs index a32f6a0..e14b25c 100644 --- a/src/frontend/components/nav.rs +++ b/src/frontend/components/nav.rs @@ -1,6 +1,5 @@ use crate::frontend::app::GlobalState; -use leptos::*; -use leptos::{component, use_context, view, IntoView, RwSignal, SignalWith}; +use leptos::{component, use_context, view, IntoView, RwSignal, SignalWith, *}; use leptos_router::*; #[component] diff --git a/src/frontend/markdown.rs b/src/frontend/markdown.rs index 1af830b..919c040 100644 --- a/src/frontend/markdown.rs +++ b/src/frontend/markdown.rs @@ -1,6 +1,11 @@ use crate::frontend::backend_hostname; -use markdown_it::parser::inline::{InlineRule, InlineState}; -use markdown_it::{MarkdownIt, Node, NodeValue, Renderer}; +use markdown_it::{ + parser::inline::{InlineRule, InlineState}, + MarkdownIt, + Node, + NodeValue, + Renderer, +}; pub fn markdown_parser() -> MarkdownIt { let mut parser = MarkdownIt::new(); diff --git a/src/frontend/mod.rs b/src/frontend/mod.rs index 45eae52..3f6ec6b 100644 --- a/src/frontend/mod.rs +++ b/src/frontend/mod.rs @@ -1,5 +1,4 @@ -use crate::common::utils::extract_domain; -use crate::common::{DbArticle, DbPerson}; +use crate::common::{utils::extract_domain, DbArticle, DbPerson}; use leptos::*; pub mod api; diff --git a/src/frontend/pages/article/actions.rs b/src/frontend/pages/article/actions.rs index 45ce8be..01fee0e 100644 --- a/src/frontend/pages/article/actions.rs +++ b/src/frontend/pages/article/actions.rs @@ -1,10 +1,14 @@ -use crate::common::ForkArticleForm; -use crate::frontend::app::GlobalState; -use crate::frontend::article_link; -use crate::frontend::article_title; -use crate::frontend::components::article_nav::ArticleNav; -use crate::frontend::pages::article_resource; -use crate::frontend::DbArticle; +use crate::{ + common::ForkArticleForm, + frontend::{ + app::GlobalState, + article_link, + article_title, + components::article_nav::ArticleNav, + pages::article_resource, + DbArticle, + }, +}; use leptos::*; use leptos_router::Redirect; diff --git a/src/frontend/pages/article/create.rs b/src/frontend/pages/article/create.rs index 19e56a3..3457527 100644 --- a/src/frontend/pages/article/create.rs +++ b/src/frontend/pages/article/create.rs @@ -1,5 +1,4 @@ -use crate::common::CreateArticleForm; -use crate::frontend::app::GlobalState; +use crate::{common::CreateArticleForm, frontend::app::GlobalState}; use leptos::*; use leptos_router::Redirect; diff --git a/src/frontend/pages/article/edit.rs b/src/frontend/pages/article/edit.rs index d13b5b3..420beed 100644 --- a/src/frontend/pages/article/edit.rs +++ b/src/frontend/pages/article/edit.rs @@ -1,8 +1,12 @@ -use crate::common::{ApiConflict, ArticleView, EditArticleForm}; -use crate::frontend::app::GlobalState; -use crate::frontend::article_title; -use crate::frontend::components::article_nav::ArticleNav; -use crate::frontend::pages::article_resource; +use crate::{ + common::{ApiConflict, ArticleView, EditArticleForm}, + frontend::{ + app::GlobalState, + article_title, + components::article_nav::ArticleNav, + pages::article_resource, + }, +}; use leptos::*; use leptos_router::use_params_map; diff --git a/src/frontend/pages/article/history.rs b/src/frontend/pages/article/history.rs index 557a4f1..2a2c274 100644 --- a/src/frontend/pages/article/history.rs +++ b/src/frontend/pages/article/history.rs @@ -1,6 +1,9 @@ -use crate::frontend::components::article_nav::ArticleNav; -use crate::frontend::pages::article_resource; -use crate::frontend::{article_title, user_link}; +use crate::frontend::{ + article_title, + components::article_nav::ArticleNav, + pages::article_resource, + user_link, +}; use leptos::*; #[component] diff --git a/src/frontend/pages/article/list.rs b/src/frontend/pages/article/list.rs index 858fcb0..0f0b58a 100644 --- a/src/frontend/pages/article/list.rs +++ b/src/frontend/pages/article/list.rs @@ -1,6 +1,7 @@ -use crate::common::ListArticlesForm; -use crate::frontend::app::GlobalState; -use crate::frontend::{article_link, article_title}; +use crate::{ + common::ListArticlesForm, + frontend::{app::GlobalState, article_link, article_title}, +}; use leptos::*; use web_sys::wasm_bindgen::JsCast; diff --git a/src/frontend/pages/article/read.rs b/src/frontend/pages/article/read.rs index 53f47cf..98873af 100644 --- a/src/frontend/pages/article/read.rs +++ b/src/frontend/pages/article/read.rs @@ -1,7 +1,9 @@ -use crate::frontend::article_title; -use crate::frontend::components::article_nav::ArticleNav; -use crate::frontend::markdown::markdown_parser; -use crate::frontend::pages::article_resource; +use crate::frontend::{ + article_title, + components::article_nav::ArticleNav, + markdown::markdown_parser, + pages::article_resource, +}; use leptos::*; #[component] diff --git a/src/frontend/pages/conflicts.rs b/src/frontend/pages/conflicts.rs index b01bfb8..f162a1b 100644 --- a/src/frontend/pages/conflicts.rs +++ b/src/frontend/pages/conflicts.rs @@ -1,6 +1,4 @@ -use crate::frontend::app::GlobalState; -use crate::frontend::article_link; -use crate::frontend::article_title; +use crate::frontend::{app::GlobalState, article_link, article_title}; use leptos::*; #[component] diff --git a/src/frontend/pages/diff.rs b/src/frontend/pages/diff.rs index 0afdb48..6f0dcac 100644 --- a/src/frontend/pages/diff.rs +++ b/src/frontend/pages/diff.rs @@ -1,6 +1,4 @@ -use crate::frontend::components::article_nav::ArticleNav; -use crate::frontend::pages::article_resource; -use crate::frontend::user_link; +use crate::frontend::{components::article_nav::ArticleNav, pages::article_resource, user_link}; use leptos::*; use leptos_router::*; diff --git a/src/frontend/pages/instance_details.rs b/src/frontend/pages/instance_details.rs index ebacb11..2f5233e 100644 --- a/src/frontend/pages/instance_details.rs +++ b/src/frontend/pages/instance_details.rs @@ -1,6 +1,7 @@ -use crate::common::utils::http_protocol_str; -use crate::common::{DbInstance, FollowInstance}; -use crate::frontend::app::GlobalState; +use crate::{ + common::{utils::http_protocol_str, DbInstance, FollowInstance}, + frontend::app::GlobalState, +}; use leptos::*; use leptos_router::use_params_map; use url::Url; diff --git a/src/frontend/pages/login.rs b/src/frontend/pages/login.rs index 720436e..08385d3 100644 --- a/src/frontend/pages/login.rs +++ b/src/frontend/pages/login.rs @@ -1,6 +1,7 @@ -use crate::common::LoginUserForm; -use crate::frontend::app::GlobalState; -use crate::frontend::components::credentials::*; +use crate::{ + common::LoginUserForm, + frontend::{app::GlobalState, components::credentials::*}, +}; use leptos::*; use leptos_router::Redirect; diff --git a/src/frontend/pages/mod.rs b/src/frontend/pages/mod.rs index 413bec4..d92ece4 100644 --- a/src/frontend/pages/mod.rs +++ b/src/frontend/pages/mod.rs @@ -1,5 +1,7 @@ -use crate::common::{ArticleView, GetArticleForm, MAIN_PAGE_NAME}; -use crate::frontend::app::GlobalState; +use crate::{ + common::{ArticleView, GetArticleForm, MAIN_PAGE_NAME}, + frontend::app::GlobalState, +}; use leptos::{create_resource, Resource, SignalGet}; use leptos_router::use_params_map; diff --git a/src/frontend/pages/register.rs b/src/frontend/pages/register.rs index 883cc52..9735814 100644 --- a/src/frontend/pages/register.rs +++ b/src/frontend/pages/register.rs @@ -1,7 +1,7 @@ -use crate::common::{LocalUserView, RegisterUserForm}; -use crate::frontend::app::GlobalState; -use crate::frontend::components::credentials::*; -use crate::frontend::error::MyResult; +use crate::{ + common::{LocalUserView, RegisterUserForm}, + frontend::{app::GlobalState, components::credentials::*, error::MyResult}, +}; use leptos::{logging::log, *}; #[component] diff --git a/src/frontend/pages/search.rs b/src/frontend/pages/search.rs index 0029849..a470ae9 100644 --- a/src/frontend/pages/search.rs +++ b/src/frontend/pages/search.rs @@ -1,6 +1,7 @@ -use crate::common::{DbArticle, DbInstance, SearchArticleForm}; -use crate::frontend::app::GlobalState; -use crate::frontend::{article_link, article_title}; +use crate::{ + common::{DbArticle, DbInstance, SearchArticleForm}, + frontend::{app::GlobalState, article_link, article_title}, +}; use leptos::*; use leptos_router::use_query_map; use serde::{Deserialize, Serialize}; diff --git a/src/frontend/pages/user_profile.rs b/src/frontend/pages/user_profile.rs index 9c2efdb..2e940da 100644 --- a/src/frontend/pages/user_profile.rs +++ b/src/frontend/pages/user_profile.rs @@ -1,6 +1,7 @@ -use crate::common::{DbPerson, GetUserForm}; -use crate::frontend::app::GlobalState; -use crate::frontend::user_title; +use crate::{ + common::{DbPerson, GetUserForm}, + frontend::{app::GlobalState, user_title}, +}; use leptos::*; use leptos_router::use_params_map; diff --git a/src/main.rs b/src/main.rs index f7da268..f5d0e4f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,8 +23,7 @@ pub async fn main() -> ibis_lib::backend::error::MyResult<()> { #[cfg(not(feature = "ssr"))] fn main() { use ibis_lib::frontend::app::App; - use leptos::mount_to_body; - use leptos::view; + use leptos::{mount_to_body, view}; _ = console_log::init_with_level(log::Level::Debug); console_error_panic_hook::set_once(); diff --git a/tests/common.rs b/tests/common.rs index afc3026..52bdf03 100644 --- a/tests/common.rs +++ b/tests/common.rs @@ -1,19 +1,26 @@ #![allow(clippy::unwrap_used)] -use ibis_lib::backend::config::{IbisConfig, IbisConfigDatabase, IbisConfigFederation}; -use ibis_lib::backend::start; -use ibis_lib::common::RegisterUserForm; -use ibis_lib::frontend::api::ApiClient; -use ibis_lib::frontend::error::MyResult; +use ibis_lib::{ + backend::{ + config::{IbisConfig, IbisConfigDatabase, IbisConfigFederation}, + start, + }, + common::RegisterUserForm, + frontend::{api::ApiClient, error::MyResult}, +}; use reqwest::ClientBuilder; -use std::env::current_dir; -use std::fs::{create_dir_all, remove_dir_all}; -use std::ops::Deref; -use std::process::{Command, Stdio}; -use std::sync::atomic::{AtomicI32, Ordering}; -use std::sync::Once; -use std::thread::{sleep, spawn}; -use std::time::Duration; +use std::{ + env::current_dir, + fs::{create_dir_all, remove_dir_all}, + ops::Deref, + process::{Command, Stdio}, + sync::{ + atomic::{AtomicI32, Ordering}, + Once, + }, + thread::{sleep, spawn}, + time::Duration, +}; use tokio::task::JoinHandle; use tracing::log::LevelFilter; diff --git a/tests/test.rs b/tests/test.rs index cc9b65b..6be8412 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -5,14 +5,23 @@ extern crate ibis_lib; mod common; use crate::common::{TestData, TEST_ARTICLE_DEFAULT_TEXT}; -use ibis_lib::common::utils::extract_domain; -use ibis_lib::common::{ - ArticleView, EditArticleForm, ForkArticleForm, GetArticleForm, GetUserForm, ListArticlesForm, - ProtectArticleForm, +use ibis_lib::{ + common::{ + utils::extract_domain, + ArticleView, + CreateArticleForm, + EditArticleForm, + ForkArticleForm, + GetArticleForm, + GetUserForm, + ListArticlesForm, + LoginUserForm, + ProtectArticleForm, + RegisterUserForm, + SearchArticleForm, + }, + frontend::error::MyResult, }; -use ibis_lib::common::{CreateArticleForm, SearchArticleForm}; -use ibis_lib::common::{LoginUserForm, RegisterUserForm}; -use ibis_lib::frontend::error::MyResult; use pretty_assertions::{assert_eq, assert_ne}; use url::Url;