1
0
Fork 0
forked from Mirrors/gomuks

web/util: move type validation to utils

This commit is contained in:
Tulir Asokan 2024-11-27 01:13:14 +02:00
parent f4020f588f
commit ef937ae0d8
2 changed files with 18 additions and 6 deletions

View file

@ -17,6 +17,7 @@ import { Fragment, JSX } from "react"
import { ACLEventContent } from "@/api/types"
import { listDiff } from "@/util/diff.ts"
import { humanJoinReact, joinReact } from "@/util/reactjoin.tsx"
import { ensureArray, ensureStringArray } from "@/util/validation.ts"
import EventContentProps from "./props.ts"
function joinServers(arr: string[]): JSX.Element[] {
@ -49,15 +50,11 @@ function makeACLChangeString(
return joinReact(parts)
}
function ensureArray(val: unknown): string[] {
return Array.isArray(val) ? val : []
}
const ACLBody = ({ event, sender }: EventContentProps) => {
const content = event.content as ACLEventContent
const prevContent = event.unsigned.prev_content as ACLEventContent | undefined
const [addedAllow, removedAllow] = listDiff(ensureArray(content.allow), ensureArray(prevContent?.allow))
const [addedDeny, removedDeny] = listDiff(ensureArray(content.deny), ensureArray(prevContent?.deny))
const [addedAllow, removedAllow] = listDiff(ensureStringArray(content.allow), ensureStringArray(prevContent?.allow))
const [addedDeny, removedDeny] = listDiff(ensureStringArray(content.deny), ensureStringArray(prevContent?.deny))
const prevAllowIP = prevContent?.allow_ip_literals ?? true
const newAllowIP = content.allow_ip_literals ?? true
if (

View file

@ -58,3 +58,18 @@ export function parseMXC(mxc: unknown): [string, string] | [] {
}
return [match[1], match[2]]
}
export function ensureString(value: unknown): string {
if (typeof value !== "string") {
return ""
}
return value
}
export function ensureArray(val: unknown): unknown[] {
return Array.isArray(val) ? val : []
}
export function ensureStringArray(val: unknown): string[] {
return ensureArray(val).map(ensureString)
}