39 lines
1.1 KiB
TypeScript
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
|
|
}
|