add: ability to generate invite codes in bulk add: better mark as nsfw

ui
This commit is contained in:
trisua 2025-06-23 13:48:16 -04:00
parent 2a77c61bf2
commit 4843688fcf
13 changed files with 126 additions and 90 deletions

View file

@ -832,8 +832,9 @@ pub async fn refresh_grant_request(
/// Generate an invite code.
///
/// Does not support third-party grants.
pub async fn generate_invite_code_request(
pub async fn generate_invite_codes_request(
jar: CookieJar,
Path(count): Path<usize>,
Extension(data): Extension<State>,
) -> impl IntoResponse {
let data = &(data.read().await).0;
@ -846,15 +847,25 @@ pub async fn generate_invite_code_request(
return Json(Error::NotAllowed.into());
}
match data
.create_invite_code(InviteCode::new(user.id), &user)
.await
{
Ok(x) => Json(ApiReturn {
ok: true,
message: "Code generated".to_string(),
payload: Some(x.code),
}),
Err(e) => Json(e.into()),
if count > 48 {
return Json(Error::DataTooLong("count".to_string()).into());
}
let mut out_string = String::new();
for _ in 0..count {
match data
.create_invite_code(InviteCode::new(user.id), &user)
.await
{
Ok(x) => out_string += &(x.code + "\n"),
Err(_) => break,
}
}
Json(ApiReturn {
ok: true,
message: "Success".to_string(),
payload: Some(out_string),
})
}

View file

@ -441,10 +441,7 @@ pub async fn posts_request(
};
check_user_blocked_or_private!(Some(&user), other_user, data, @api);
match data
.get_posts_by_user(id, 12, props.page, &Some(user.clone()))
.await
{
match data.get_posts_by_user(id, 12, props.page).await {
Ok(posts) => {
let ignore_users = crate::ignore_users_gen!(user!, #data);
Json(ApiReturn {

View file

@ -37,7 +37,10 @@ pub fn routes() -> Router {
.route("/util/proxy", get(util::proxy_request))
.route("/util/lang", get(util::set_langfile_request))
.route("/util/ip", get(util::ip_test_request))
.route("/invite", post(auth::profile::generate_invite_code_request))
.route(
"/invites/{count}",
post(auth::profile::generate_invite_codes_request),
)
// reactions
.route("/reactions", post(reactions::create_request))
.route("/reactions/{id}", get(reactions::get_request))

View file

@ -625,12 +625,10 @@ pub async fn swiss_army_timeline_request(
check_user_blocked_or_private!(user, other_user, data, jar);
if req.tag.is_empty() {
data.0
.get_posts_by_user(req.user_id, 12, req.page, &user)
.await
data.0.get_posts_by_user(req.user_id, 12, req.page).await
} else {
data.0
.get_posts_by_user_tag(req.user_id, &req.tag, 12, req.page, &user)
.get_posts_by_user_tag(req.user_id, &req.tag, 12, req.page)
.await
}
} else {

View file

@ -101,7 +101,11 @@ pub async fn settings_request(
}
};
let invites = match data.0.get_invite_codes_by_owner(profile.id).await {
let invites = match data
.0
.get_invite_codes_by_owner(profile.id, 12, req.page)
.await
{
Ok(l) => match data.0.fill_invite_codes(l).await {
Ok(l) => l,
Err(e) => {