Compare commits

..

6 commits

5 changed files with 12 additions and 8 deletions

View file

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

View file

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

View file

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

View file

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

View file

@ -10,7 +10,7 @@ const nonExistingLanguagesCache = new Set<string>();
export const loadLanguage = (lang: string) =>
new Promise<void>((resolve, reject) => {
// for now
if (!defaultStore.state.useEmojiCdn) return resolve();
if (!defaultStore.state.useEmojiCdn) return reject();
// cached non-existing language
if (nonExistingLanguagesCache.has(lang)) return reject();
// load language with autoloader