From 88a6e38ee92c259d242302ce6d08c24bac3823ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20G=C3=B3mez?= Date: Mon, 15 Dec 2025 17:38:51 +0100 Subject: [PATCH] refactor: use applesauce for profile parsing --- src/hooks/useProfile.ts | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/hooks/useProfile.ts b/src/hooks/useProfile.ts index d42bbba..eeb07f6 100644 --- a/src/hooks/useProfile.ts +++ b/src/hooks/useProfile.ts @@ -1,6 +1,6 @@ import { useState, useEffect } from "react"; import { profileLoader } from "@/services/loaders"; -import { ProfileContent } from "applesauce-core/helpers"; +import { ProfileContent, getProfileContent } from "applesauce-core/helpers"; import { kinds } from "nostr-tools"; import db from "@/services/db"; @@ -23,23 +23,22 @@ export function useProfile(pubkey?: string): ProfileContent | undefined { next: async (fetchedEvent) => { if (!fetchedEvent || !fetchedEvent.content) return; - try { - const profileData = JSON.parse( - fetchedEvent.content, - ) as ProfileContent; + // Use applesauce helper for safe profile parsing + const profileData = getProfileContent(fetchedEvent); + if (!profileData) { + console.error("[useProfile] Failed to parse profile for:", pubkey); + return; + } - // Save to IndexedDB - await db.profiles.put({ - ...profileData, - pubkey, - created_at: fetchedEvent.created_at, - }); + // Save to IndexedDB + await db.profiles.put({ + ...profileData, + pubkey, + created_at: fetchedEvent.created_at, + }); - if (mounted) { - setProfile(profileData); - } - } catch (e) { - console.error("[useProfile] Failed to parse profile:", e); + if (mounted) { + setProfile(profileData); } }, error: (err) => {