add reygiri page
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import type { Const } from '@/model/const'
|
||||
import type { CaptureSite } from '@/model/captureSite'
|
||||
|
||||
export const REYGIri_SITES_KEY = 'reygiri_sites'
|
||||
|
||||
export function normalizeReygiriSitesConst(response: Const | Const[] | null | undefined): {
|
||||
constId: number | null
|
||||
sites: CaptureSite[]
|
||||
} {
|
||||
const record = Array.isArray(response) ? response[0] : response
|
||||
if (!record) {
|
||||
return { constId: null, sites: [] }
|
||||
}
|
||||
|
||||
return {
|
||||
constId: record.id ?? record.const_id ?? null,
|
||||
sites: parseReygiriSitesValue(record.value),
|
||||
}
|
||||
}
|
||||
|
||||
export function parseReygiriSitesValue(value: string | null | undefined): CaptureSite[] {
|
||||
if (!value) return []
|
||||
|
||||
try {
|
||||
const parsed = JSON.parse(value)
|
||||
if (!Array.isArray(parsed)) return []
|
||||
|
||||
return parsed
|
||||
.map((item, index) => ({
|
||||
id: String(item?.id ?? `site-${index + 1}`),
|
||||
name: String(item?.name ?? item?.title ?? item?.title_fa ?? item?.caption ?? '').trim(),
|
||||
url: String(item?.url ?? item?.link ?? item?.value ?? '').trim(),
|
||||
}))
|
||||
.filter((item) => item.name && item.url)
|
||||
} catch {
|
||||
return []
|
||||
}
|
||||
}
|
||||
|
||||
export function serializeReygiriSites(sites: CaptureSite[]): string {
|
||||
return JSON.stringify(
|
||||
sites.map(({ id, name, url }) => ({
|
||||
id,
|
||||
name,
|
||||
url,
|
||||
}))
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user