Report persisted schema validation failures

This commit is contained in:
Eric Bailey
2024-06-04 14:17:00 -05:00
parent 551af88f22
commit ded615d9f9
+11 -2
View File
@@ -1,7 +1,7 @@
import AsyncStorage from '@react-native-async-storage/async-storage'
import {Schema, schema} from '#/state/persisted/schema'
import {logger} from '#/logger'
import {Schema, schema} from '#/state/persisted/schema'
const BSKY_STORAGE = 'BSKY_STORAGE'
@@ -13,8 +13,17 @@ export async function write(value: Schema) {
export async function read(): Promise<Schema | undefined> {
const rawData = await AsyncStorage.getItem(BSKY_STORAGE)
const objData = rawData ? JSON.parse(rawData) : undefined
if (schema.safeParse(objData).success) {
const parsed = schema.safeParse(objData)
if (parsed.success) {
return objData
} else {
const errors = parsed.error.errors.map(e => ({
code: e.code,
expected: e.expected,
path: e.path,
}))
logger.error(`persisted store: data failed validation on read`, {errors})
return undefined
}
}