add: move database drivers to oiseau

This commit is contained in:
trisua 2025-06-08 14:15:42 -04:00
parent 40fce4bc77
commit 81036e3733
57 changed files with 638 additions and 1106 deletions

View file

@ -120,7 +120,7 @@ macro_rules! get_lang {
macro_rules! user_banned {
($user:expr, $other_user:ident, $data:ident, $jar:ident) => {
let lang = get_lang!($jar, $data.0);
let mut context = initial_context(&$data.0.0, lang, &$user).await;
let mut context = initial_context(&$data.0.0.0, lang, &$user).await;
context.insert("profile", &$other_user);
return Ok(Html(
@ -168,7 +168,7 @@ macro_rules! check_user_blocked_or_private {
&& !ua.permissions.check(FinePermission::MANAGE_USERS)
{
let lang = get_lang!($jar, $data.0);
let mut context = initial_context(&$data.0.0, lang, &$user).await;
let mut context = initial_context(&$data.0.0.0, lang, &$user).await;
context.insert("profile", &$other_user);
context.insert(
@ -198,7 +198,7 @@ macro_rules! check_user_blocked_or_private {
.is_err()
{
let lang = get_lang!($jar, $data.0);
let mut context = initial_context(&$data.0.0, lang, &$user).await;
let mut context = initial_context(&$data.0.0.0, lang, &$user).await;
context.insert("profile", &$other_user);
context.insert(
@ -232,7 +232,7 @@ macro_rules! check_user_blocked_or_private {
}
} else {
let lang = get_lang!($jar, $data.0);
let mut context = initial_context(&$data.0.0, lang, &$user).await;
let mut context = initial_context(&$data.0.0.0, lang, &$user).await;
context.insert("profile", &$other_user);
context.insert("follow_requested", &false);

View file

@ -194,7 +194,8 @@ media_theme_pref();
.replaceAll(" months ago", "m")
.replaceAll(" month ago", "m")
.replaceAll(" years ago", "y")
.replaceAll(" year ago", "y") || "";
.replaceAll(" year ago", "y")
.replaceAll("Yesterday", "1d") || "";
element.innerText =
pretty === undefined ? then.toLocaleDateString() : pretty;

View file

@ -92,13 +92,20 @@ pub async fn proxy_request(
req.data.insert("format".to_string(), "json".to_string());
req.data.insert(
"api_key".to_string(),
data.0.connections.last_fm_key.as_ref().unwrap().to_string(),
data.0
.0
.connections
.last_fm_key
.as_ref()
.unwrap()
.to_string(),
);
req.data.insert(
"api_sig".to_string(),
LastFmConnection::signature(
req.data.clone(),
data.0
.0
.connections
.last_fm_secret
.as_ref()

View file

@ -17,7 +17,7 @@ pub async fn stripe_webhook(
) -> impl IntoResponse {
let data = &(data.read().await).0;
if data.0.stripe.is_none() {
if data.0.0.stripe.is_none() {
return Json(Error::MiscError("Disabled".to_string()).into());
}
@ -29,7 +29,7 @@ pub async fn stripe_webhook(
let req = match stripe::Webhook::construct_event(
&body,
sig.to_str().unwrap(),
&data.0.stripe.as_ref().unwrap().webhook_signing_secret,
&data.0.0.stripe.as_ref().unwrap().webhook_signing_secret,
) {
Ok(e) => e,
Err(e) => return Json(Error::MiscError(e.to_string()).into()),

View file

@ -58,7 +58,7 @@ pub async fn avatar_request(
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),
@ -74,7 +74,7 @@ pub async fn avatar_request(
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),
@ -83,7 +83,7 @@ pub async fn avatar_request(
};
let path = PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"avatars",
&format!(
"{}.{}",
@ -96,7 +96,7 @@ pub async fn avatar_request(
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),
@ -126,7 +126,7 @@ pub async fn banner_request(
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-banner.svg",
]))),
@ -135,7 +135,7 @@ pub async fn banner_request(
};
let path = PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"banners",
&format!(
"{}.{}",
@ -148,7 +148,7 @@ pub async fn banner_request(
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-banner.svg",
]))),
@ -194,7 +194,7 @@ pub async fn upload_avatar_request(
// mime changed; delete old image
let path = pathd!(
"{}/avatars/{}.{}",
data.0.dirs.media,
data.0.0.dirs.media,
&auth_user.id,
auth_user.settings.avatar_mime.replace("image/", "")
);
@ -206,7 +206,7 @@ pub async fn upload_avatar_request(
let path = pathd!(
"{}/avatars/{}.{}",
data.0.dirs.media,
data.0.0.dirs.media,
&auth_user.id,
mime.replace("image/", "")
);
@ -292,7 +292,7 @@ pub async fn upload_banner_request(
// mime changed; delete old image
let path = pathd!(
"{}/banners/{}.{}",
data.0.dirs.media,
data.0.0.dirs.media,
&auth_user.id,
auth_user.settings.banner_mime.replace("image/", "")
);
@ -304,7 +304,7 @@ pub async fn upload_banner_request(
let path = pathd!(
"{}/banners/{}.{}",
data.0.dirs.media,
data.0.0.dirs.media,
&auth_user.id,
mime.replace("image/", "")
);

View file

@ -46,7 +46,7 @@ pub async fn register_request(
// get real ip
let real_ip = headers
.get(data.0.security.real_ip_header.to_owned())
.get(data.0.0.security.real_ip_header.to_owned())
.unwrap_or(&HeaderValue::from_static(""))
.to_str()
.unwrap_or("")
@ -62,7 +62,7 @@ pub async fn register_request(
}
// check captcha
let client = TurnstileClient::new(data.0.turnstile.secret_key.clone().into());
let client = TurnstileClient::new(data.0.0.turnstile.secret_key.clone().into());
let validated = match client
.siteverify(SiteVerifyRequest {
@ -126,7 +126,7 @@ pub async fn login_request(
// get real ip
let real_ip = headers
.get(data.0.security.real_ip_header.to_owned())
.get(data.0.0.security.real_ip_header.to_owned())
.unwrap_or(&HeaderValue::from_static(""))
.to_str()
.unwrap_or("")

View file

@ -516,7 +516,9 @@ pub async fn subscription_handler(
pub async fn handle_socket(socket: WebSocket, db: DataManager, user_id: String, stream_id: String) {
let (mut sink, mut stream) = socket.split();
let socket_id = tetratto_shared::hash::salt();
db.2.incr("atto.active_connections:users".to_string()).await;
db.0.1
.incr("atto.active_connections:users".to_string())
.await;
// get channel permissions
let channel = format!("{user_id}/{stream_id}");
@ -551,7 +553,7 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, user_id: String,
let heartbeat_c = heartbeat_uri.clone();
let mut redis_task = tokio::spawn(async move {
// forward messages from redis to the socket
let mut pubsub = dbc.2.client.get_async_pubsub().await.unwrap();
let mut pubsub = dbc.0.1.client.get_async_pubsub().await.unwrap();
pubsub.subscribe(channel_c).await.unwrap();
pubsub.subscribe(heartbeat_c).await.unwrap();
@ -581,7 +583,7 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, user_id: String,
}
});
let db2c = db.2.clone();
let db2c = db.0.1.clone();
let heartbeat_c = heartbeat_uri.clone();
let heartbeat_task = tokio::spawn(async move {
let mut con = db2c.get_con().await;
@ -608,7 +610,9 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, user_id: String,
}
heartbeat_task.abort(); // kill
db.2.decr("atto.active_connections:users".to_string()).await;
db.0.1
.decr("atto.active_connections:users".to_string())
.await;
tracing::info!("socket terminate");
}
@ -628,7 +632,7 @@ pub async fn post_to_socket_request(
return Json(Error::NotAllowed.into());
}
let mut con = data.2.get_con().await;
let mut con = data.0.1.get_con().await;
con.publish::<String, String, ()>(
format!("{user_id}/{id}"),
serde_json::to_string(&msg).unwrap(),

View file

@ -190,7 +190,7 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, community_id: Str
let channel_id_c = channel_id.clone();
let mut redis_task = tokio::spawn(async move {
// forward messages from redis to the socket
let mut pubsub = dbc.2.client.get_async_pubsub().await.unwrap();
let mut pubsub = dbc.0.1.client.get_async_pubsub().await.unwrap();
pubsub.subscribe(user.id).await.unwrap();
pubsub.subscribe(channel_id_c).await.unwrap();
@ -239,7 +239,7 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, community_id: Str
}
});
let db2c = db.2.clone();
let db2c = db.0.1.clone();
let heartbeat_task = tokio::spawn(async move {
let mut con = db2c.get_con().await;
let mut heartbeat = tokio::time::interval(Duration::from_secs(10));
@ -259,7 +259,9 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, community_id: Str
}
});
db.2.incr("atto.active_connections:chats".to_string()).await;
db.0.1
.incr("atto.active_connections:chats".to_string())
.await;
tokio::select! {
_ = (&mut recv_task) => redis_task.abort(),
@ -267,7 +269,9 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, community_id: Str
}
heartbeat_task.abort(); // kill
db.2.decr("atto.active_connections:chats".to_string()).await;
db.0.1
.decr("atto.active_connections:chats".to_string())
.await;
tracing::info!("socket terminate");
}

View file

@ -34,7 +34,7 @@ pub async fn get_request(
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),
@ -47,7 +47,7 @@ pub async fn get_request(
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),
@ -59,13 +59,13 @@ pub async fn get_request(
.get_upload_by_id(emoji.0.unwrap().upload_id)
.await
.unwrap();
let path = upload.path(&data.0);
let path = upload.path(&data.0.0);
if !exists(&path).unwrap() {
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),
@ -140,12 +140,12 @@ pub async fn create_request(
{
Ok(_) => {
if is_animated {
if let Err(e) = upload.write(&data.0, &img.0) {
if let Err(e) = upload.write(&data.0.0, &img.0) {
return Json(Error::MiscError(e.to_string()).into());
}
} else {
if let Err(e) =
save_webp_buffer(&upload.path(&data.0).to_string(), img.0.to_vec(), None)
save_webp_buffer(&upload.path(&data.0.0).to_string(), img.0.to_vec(), None)
{
return Json(Error::MiscError(e.to_string()).into());
}
@ -158,7 +158,7 @@ pub async fn create_request(
})
}
Err(e) => {
if let Err(e) = upload.remove(&data.0) {
if let Err(e) = upload.remove(&data.0.0) {
return Json(e.into());
}

View file

@ -25,7 +25,7 @@ pub async fn avatar_request(
return (
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),
@ -34,7 +34,7 @@ pub async fn avatar_request(
};
let path = PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"community_avatars",
&format!("{}.avif", &community.id),
]);
@ -43,7 +43,7 @@ pub async fn avatar_request(
return (
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),
@ -70,7 +70,7 @@ pub async fn banner_request(
return (
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-banner.svg",
]))),
@ -79,7 +79,7 @@ pub async fn banner_request(
};
let path = PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"community_banners",
&format!("{}.avif", &community.id),
]);
@ -88,7 +88,7 @@ pub async fn banner_request(
return (
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-banner.svg",
]))),
@ -130,7 +130,7 @@ pub async fn upload_avatar_request(
let path = pathd!(
"{}/community_avatars/{}.avif",
data.0.dirs.media,
data.0.0.dirs.media,
&community.id
);
@ -185,7 +185,7 @@ pub async fn upload_banner_request(
let path = pathd!(
"{}/community_banners/{}.avif",
data.0.dirs.media,
data.0.0.dirs.media,
&community.id
);

View file

@ -51,7 +51,7 @@ pub async fn create_request(
// get real ip
let real_ip = headers
.get(data.0.security.real_ip_header.to_owned())
.get(data.0.0.security.real_ip_header.to_owned())
.unwrap_or(&HeaderValue::from_static(""))
.to_str()
.unwrap_or("")
@ -159,7 +159,7 @@ pub async fn create_request(
};
if let Err(e) =
save_webp_buffer(&upload.path(&data.0).to_string(), image.to_vec(), None)
save_webp_buffer(&upload.path(&data.0.0).to_string(), image.to_vec(), None)
{
return Json(Error::MiscError(e.to_string()).into());
}

View file

@ -23,7 +23,7 @@ pub async fn create_request(
// get real ip
let real_ip = headers
.get(data.0.security.real_ip_header.to_owned())
.get(data.0.0.security.real_ip_header.to_owned())
.unwrap_or(&HeaderValue::from_static(""))
.to_str()
.unwrap_or("")

View file

@ -13,13 +13,13 @@ pub async fn get_request(
let data = &(data.read().await).0;
let upload = data.get_upload_by_id(id).await.unwrap();
let path = upload.path(&data.0);
let path = upload.path(&data.0.0);
if !exists(&path).unwrap() {
return Err((
[("Content-Type", "image/svg+xml")],
Body::from(read_image(PathBufD::current().extend(&[
data.0.dirs.media.as_str(),
data.0.0.dirs.media.as_str(),
"images",
"default-avatar.svg",
]))),

View file

@ -22,7 +22,7 @@ pub async fn proxy_request(
) -> impl IntoResponse {
let data = &(data.read().await);
let http = &data.2;
let data = &data.0;
let data = &data.0.0;
let image_url = &props.url;
@ -148,7 +148,7 @@ pub async fn ip_test_request(
) -> impl IntoResponse {
let data = &(data.read().await).0;
headers
.get(data.0.security.real_ip_header.to_owned())
.get(data.0.0.security.real_ip_header.to_owned())
.unwrap_or(&HeaderValue::from_static(""))
.to_str()
.unwrap_or("")

View file

@ -19,7 +19,7 @@ pub async fn login_request(jar: CookieJar, Extension(data): Extension<State>) ->
// }
let lang = get_lang!(jar, data.0);
let context = initial_context(&data.0.0, lang, &user).await;
let context = initial_context(&data.0.0.0, lang, &user).await;
Html(data.1.render("auth/login.html", &context).unwrap())
}
@ -37,7 +37,7 @@ pub async fn register_request(
// }
let lang = get_lang!(jar, data.0);
let context = initial_context(&data.0.0, lang, &user).await;
let context = initial_context(&data.0.0.0, lang, &user).await;
Html(data.1.render("auth/register.html", &context).unwrap())
}
@ -55,7 +55,7 @@ pub async fn connection_callback_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("connection_type", &service);
Html(data.1.render("auth/connection.html", &context).unwrap())

View file

@ -102,7 +102,7 @@ pub async fn app_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user.clone())).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user.clone())).await;
context.insert("selected_community", &selected_community);
context.insert("selected_channel", &selected_channel);
@ -208,7 +208,7 @@ pub async fn stream_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("messages", &messages);
context.insert("message", &message);
@ -269,7 +269,7 @@ pub async fn message_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("can_manage_messages", &can_manage_messages);
context.insert("message", &message);
@ -338,7 +338,7 @@ pub async fn channels_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("channels", &channels);
context.insert("page", &props.page);

View file

@ -188,7 +188,7 @@ pub async fn list_request(jar: CookieJar, Extension(data): Extension<State>) ->
}
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &communities);
context.insert("popular_list", &popular_list);
@ -225,7 +225,7 @@ pub async fn search_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &communities);
context.insert("page", &req.page);
@ -270,7 +270,7 @@ pub async fn create_post_request(
let mut communities: Vec<Community> = Vec::new();
for membership in memberships {
if membership.community == data.0.0.town_square {
if membership.community == data.0.0.0.town_square {
// we already pulled the town square
continue;
}
@ -319,7 +319,7 @@ pub async fn create_post_request(
// ...
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("draft", &draft);
context.insert("drafts", &drafts);
@ -416,7 +416,7 @@ pub async fn feed_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let (
is_owner,
@ -506,7 +506,7 @@ pub async fn questions_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let (
is_owner,
@ -600,7 +600,7 @@ pub async fn settings_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("community", &community);
@ -745,7 +745,7 @@ pub async fn post_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let (
is_owner,
@ -873,7 +873,7 @@ pub async fn reposts_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let (
is_owner,
@ -1018,7 +1018,7 @@ pub async fn likes_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
let (
is_owner,
@ -1115,7 +1115,7 @@ pub async fn members_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let (
is_owner,
@ -1212,7 +1212,7 @@ pub async fn question_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let (
is_owner,

View file

@ -53,7 +53,7 @@ pub async fn index_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &None).await;
let mut context = initial_context(&data.0.0.0, lang, &None).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -81,7 +81,7 @@ pub async fn index_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -117,7 +117,7 @@ pub async fn popular_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -159,7 +159,7 @@ pub async fn following_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -197,7 +197,7 @@ pub async fn all_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -233,7 +233,7 @@ pub async fn index_questions_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -273,7 +273,7 @@ pub async fn popular_questions_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -315,7 +315,7 @@ pub async fn following_questions_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -346,7 +346,7 @@ pub async fn all_questions_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
context.insert("list", &list);
context.insert("page", &req.page);
@ -400,7 +400,7 @@ pub async fn notifications_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("page", &props.page);
context.insert("profile", &profile);
@ -490,7 +490,7 @@ pub async fn requests_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("page", &props.page);
context.insert("profile", &profile);
@ -516,7 +516,7 @@ pub async fn markdown_document_request(
));
}
let path = PathBufD::current().extend(&[&data.0.0.dirs.docs, &name]);
let path = PathBufD::current().extend(&[&data.0.0.0.dirs.docs, &name]);
let file = match read_to_string(&path) {
Ok(f) => f,
Err(e) => {
@ -527,7 +527,7 @@ pub async fn markdown_document_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
context.insert("file", &file);
context.insert("file_name", &name);
@ -616,7 +616,7 @@ pub async fn search_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &list);
context.insert("profile", &profile);

View file

@ -123,7 +123,7 @@ pub async fn render_error(
user: &Option<User>,
) -> String {
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, user).await;
let mut context = initial_context(&data.0.0.0, lang, user).await;
context.insert("error_text", &e.to_string());
data.1.render("misc/error.html", &context).unwrap()
}

View file

@ -40,7 +40,7 @@ pub async fn audit_log_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("items", &items);
context.insert("page", &req.page);
@ -76,7 +76,7 @@ pub async fn reports_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("items", &items);
context.insert("page", &req.page);
@ -107,7 +107,7 @@ pub async fn file_report_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("asset", &req.asset);
context.insert("asset_type", &req.asset_type);
@ -145,7 +145,7 @@ pub async fn ip_bans_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("items", &items);
context.insert("page", &req.page);
@ -195,7 +195,7 @@ pub async fn manage_profile_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("profile", &profile);
context.insert("associations", &associations);
@ -242,7 +242,7 @@ pub async fn manage_profile_warnings_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("profile", &profile);
context.insert("items", &list);
@ -271,13 +271,14 @@ pub async fn stats_request(jar: CookieJar, Extension(data): Extension<State>) ->
}
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert(
"active_users_chats",
&data
.0
.2
.0
.1
.get("atto.active_connections:chats".to_string())
.await
.unwrap_or("0".to_string())
@ -288,7 +289,8 @@ pub async fn stats_request(jar: CookieJar, Extension(data): Extension<State>) ->
"active_users",
&data
.0
.2
.0
.1
.get("atto.active_connections:users".to_string())
.await
.unwrap_or("0".to_string())

View file

@ -90,7 +90,7 @@ pub async fn settings_request(
let tokens = profile.tokens.clone();
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("profile", &profile);
context.insert("page", &req.page);
@ -223,7 +223,7 @@ pub async fn posts_request(
// check for warning
if props.warning {
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
context.insert("profile", &other_user);
context.insert("warning_hash", &hash(other_user.settings.warning.clone()));
@ -311,7 +311,7 @@ pub async fn posts_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let is_self = if let Some(ref ua) = user {
ua.id == other_user.id
@ -416,7 +416,7 @@ pub async fn replies_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let is_self = if let Some(ref ua) = user {
ua.id == other_user.id
@ -521,7 +521,7 @@ pub async fn media_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let is_self = if let Some(ref ua) = user {
ua.id == other_user.id
@ -628,7 +628,7 @@ pub async fn outbox_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user.clone())).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user.clone())).await;
let is_self = user.id == other_user.id;
@ -709,7 +709,7 @@ pub async fn following_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let is_self = if let Some(ref ua) = user {
ua.id == other_user.id
@ -803,7 +803,7 @@ pub async fn followers_request(
// init context
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
let mut context = initial_context(&data.0.0.0, lang, &user).await;
let is_self = if let Some(ref ua) = user {
ua.id == other_user.id

View file

@ -26,7 +26,7 @@ pub async fn list_request(jar: CookieJar, Extension(data): Extension<State>) ->
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("list", &list);
@ -83,7 +83,7 @@ pub async fn posts_request(
};
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("page", &req.page);
context.insert("stack", &stack);
@ -144,7 +144,7 @@ pub async fn manage_request(
}
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &Some(user)).await;
let mut context = initial_context(&data.0.0.0, lang, &Some(user)).await;
context.insert("stack", &stack);
context.insert("users", &users);