Bluesky app fork with some witchin' additions 馃挮
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 52 lines 1.0 kB view raw
1import {type AppBskyActorDefs, nuxSchema} from '@atproto/api' 2 3import { 4 type AppNux, 5 type Nux, 6 nuxNames, 7 NuxSchemas, 8} from '#/state/queries/nuxs/definitions' 9 10export function parseAppNux(nux: AppBskyActorDefs.Nux): AppNux | undefined { 11 if (!nuxNames.has(nux.id as Nux)) return 12 if (!nuxSchema.safeParse(nux).success) return 13 14 const {data, ...rest} = nux 15 16 const schema = NuxSchemas[nux.id as Nux] 17 18 if (schema && data) { 19 const parsedData = JSON.parse(data) 20 21 if (!schema.safeParse(parsedData).success) return 22 23 return { 24 ...rest, 25 data: parsedData, 26 } as AppNux 27 } 28 29 return { 30 ...rest, 31 data: undefined, 32 } as AppNux 33} 34 35export function serializeAppNux(nux: AppNux): AppBskyActorDefs.Nux { 36 const {data, ...rest} = nux 37 const schema = NuxSchemas[nux.id as Nux] 38 39 const result: AppBskyActorDefs.Nux = { 40 ...rest, 41 data: undefined, 42 } 43 44 if (schema) { 45 schema.parse(data) 46 result.data = JSON.stringify(data) 47 } 48 49 nuxSchema.parse(result) 50 51 return result 52}