2026-01-13 14:49:19 +01:00

39 lines
1.1 KiB
TypeScript

export type PresentationProfileData = {
authorName?: string
presentation?: string
contentDescription?: string
mainnetAddress?: string
pictureUrl?: string
category?: string
}
export function parsePresentationProfileJson(json: string): PresentationProfileData | null {
try {
const parsed: unknown = JSON.parse(json)
if (typeof parsed !== 'object' || parsed === null) {
return null
}
const obj = parsed as Record<string, unknown>
return {
...readOptionalStringFields(obj, ['authorName', 'presentation', 'contentDescription', 'mainnetAddress', 'pictureUrl', 'category']),
}
} catch (error) {
console.error('Error parsing presentation profile JSON:', error)
return null
}
}
function readOptionalStringFields<TKeys extends readonly string[]>(
obj: Record<string, unknown>,
keys: TKeys
): Partial<Record<TKeys[number], string>> {
const result: Partial<Record<TKeys[number], string>> = {}
for (const key of keys as ReadonlyArray<TKeys[number]>) {
const value = obj[key]
if (typeof value === 'string') {
result[key] = value
}
}
return result
}