Compare commits

..

4 commits

4 changed files with 7 additions and 11 deletions

View file

@ -1,12 +1,10 @@
import { unsafeCast } from "./unsafe-cast.js";
export type Promiseable<T> = { export type Promiseable<T> = {
[K in keyof T]: Promise<T[K]> | T[K]; [K in keyof T]: Promise<T[K]> | T[K];
}; };
export async function awaitAll<T>(obj: Promiseable<T>): Promise<T> { export async function awaitAll<T>(obj: Promiseable<T>): Promise<T> {
const target = {} as T; const target = {} as T;
const keys = unsafeCast<(keyof T)[]>(Object.keys(obj)); const keys = Object.keys(obj) as unknown as (keyof T)[];
const values = Object.values(obj) as any[]; const values = Object.values(obj) as any[];
const resolvedValues = await Promise.all( const resolvedValues = await Promise.all(

View file

@ -1,4 +0,0 @@
// unsafe type cast
export function unsafeCast<T>(val: unknown): T {
return val as T;
}

View file

@ -1,8 +1,6 @@
import { Users } from "@/models/index.js"; import { Users } from "@/models/index.js";
import { publishInternalEvent } from "@/services/stream.js"; import { publishInternalEvent } from "@/services/stream.js";
import define from "../../define.js"; import define from "../../define.js";
import type { EmojiModPerm } from "@/models/entities/user.js";
import { unsafeCast } from "@/prelude/unsafe-cast.js";
export const meta = { export const meta = {
tags: ["admin"], tags: ["admin"],
@ -33,8 +31,12 @@ export default define(meta, paramDef, async (ps) => {
); );
} }
const _emojiModPerm =
(ps.emojiModPerm as "unauthorized" | "add" | "mod" | "full") ??
"unauthorized";
await Users.update(user.id, { await Users.update(user.id, {
emojiModPerm: unsafeCast<EmojiModPerm>(ps.emojiModPerm), emojiModPerm: _emojiModPerm,
}); });
publishInternalEvent("userChangeModeratorState", { publishInternalEvent("userChangeModeratorState", {

View file

@ -17,7 +17,7 @@ export const paramDef = {
required: ["userId", "text"], required: ["userId", "text"],
} as const; } as const;
export default define(meta, paramDef, async (ps) => { export default define(meta, paramDef, async (ps, me) => {
const user = await Users.findOneBy({ id: ps.userId }); const user = await Users.findOneBy({ id: ps.userId });
if (user == null) { if (user == null) {