From 5a3003abe5ab6b64ba345960532b46d7c7df52ce Mon Sep 17 00:00:00 2001 From: zmeyer44 Date: Sun, 15 Oct 2023 22:55:33 -0400 Subject: [PATCH] adding sricter ts rules means lots of clean up ;} --- app/(app)/(profile)/[npub]/page.tsx | 14 +++++++------- app/_providers/ndk/context/Users.ts | 5 +++-- app/_providers/ndk/context/index.tsx | 4 ++-- app/_providers/ndk/utils/notes.ts | 2 +- bun.lockb | Bin 303818 -> 304198 bytes components/CreatorCard/index.tsx | 2 +- components/KindCard/1.tsx | 2 +- components/KindCard/30023.tsx | 4 +++- .../KindCard/components/ProfileHeader.tsx | 4 ++-- components/TextRendering/index.tsx | 12 ++++++++---- lib/hooks/useCurrentUser.ts | 4 +++- lib/hooks/useLocalStorage.ts | 2 +- lib/nostr/utils.ts | 14 +++++++------- package.json | 1 + reset.d.ts | 1 + tsconfig.json | 1 + 16 files changed, 42 insertions(+), 30 deletions(-) create mode 100644 reset.d.ts diff --git a/app/(app)/(profile)/[npub]/page.tsx b/app/(app)/(profile)/[npub]/page.tsx index 1843108..2849b23 100644 --- a/app/(app)/(profile)/[npub]/page.tsx +++ b/app/(app)/(profile)/[npub]/page.tsx @@ -39,7 +39,7 @@ export default function ProfilePage({
- {!!profile.banner && ( + {!!profile?.banner && (
- {profile.image ? ( + {profile?.image ? (

- {profile.displayName ?? profile.name ?? truncateText(npub)} + {profile?.displayName ?? profile?.name ?? truncateText(npub)}

- {!!profile.nip05 && ( + {!!profile?.nip05 && ( )}
- {!!profile.name &&

{profile.name}

} - {!!profile.name && !!profile.nip05 && ( + {!!profile?.name &&

{profile.name}

} + {!!profile?.name && !!profile.nip05 && ( <>
ยท

{profile.nip05}

@@ -100,7 +100,7 @@ export default function ProfilePage({ )}
- {!!profile.about && ( + {!!profile?.about && (

{profile.about}

diff --git a/app/_providers/ndk/context/Users.ts b/app/_providers/ndk/context/Users.ts index 7d2a6e7..4450e8e 100644 --- a/app/_providers/ndk/context/Users.ts +++ b/app/_providers/ndk/context/Users.ts @@ -54,8 +54,9 @@ export const Users = (ndk: NDK | undefined) => { } function getProfile(id: string) { - if (users[id]) { - return users[id].profile!; + const user = users[id]; + if (user) { + return user.profile; } else { fetchUser(id); } diff --git a/app/_providers/ndk/context/index.tsx b/app/_providers/ndk/context/index.tsx index b900ba4..48bb8be 100644 --- a/app/_providers/ndk/context/index.tsx +++ b/app/_providers/ndk/context/index.tsx @@ -56,8 +56,8 @@ interface NDKContext { } | undefined, ) => Promise; - getUser: (_: string) => NDKUser; - getProfile: (_: string) => NDKUserProfile; + getUser: (_: string) => NDKUser | undefined; + getProfile: (_: string) => NDKUserProfile | undefined; } const NDKContext = createContext({ diff --git a/app/_providers/ndk/utils/notes.ts b/app/_providers/ndk/utils/notes.ts index b43d7cc..7b20ef1 100644 --- a/app/_providers/ndk/utils/notes.ts +++ b/app/_providers/ndk/utils/notes.ts @@ -46,7 +46,7 @@ export const parseContent = ({ // Convert legacy mentions to bech32 entities const mentionMatch = text.match(/^#\[(\d+)\]/i); - if (mentionMatch) { + if (mentionMatch && mentionMatch[1]) { const i = parseInt(mentionMatch[1]); if (tags[i]) { diff --git a/bun.lockb b/bun.lockb index 1d4bd3381b6271e5c033495ac3e544aca8338b81..cc3693ea8b58cbb85ef1dd7594b2d3835ea75dea 100755 GIT binary patch delta 45568 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⋘M&VJ%$u2%PhIwi-P}|0ByHWg+jz2} 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 diff --git a/components/KindCard/components/ProfileHeader.tsx b/components/KindCard/components/ProfileHeader.tsx index d7b1e1a..bcfcfe4 100644 --- a/components/KindCard/components/ProfileHeader.tsx +++ b/components/KindCard/components/ProfileHeader.tsx @@ -14,7 +14,7 @@ export default function ProfileHeader({ pubkey }: ProfileHeaderProps) { return ( - + {getTwoLetters({ npub, profile })} @@ -23,7 +23,7 @@ export default function ProfileHeader({ pubkey }: ProfileHeaderProps) { {getNameToShow({ npub, profile })} - {!!profile.nip05 && } + {!!profile?.nip05 && }
); diff --git a/components/TextRendering/index.tsx b/components/TextRendering/index.tsx index 427e384..7e54f83 100644 --- a/components/TextRendering/index.tsx +++ b/components/TextRendering/index.tsx @@ -50,12 +50,16 @@ const RenderText = ({ text }: { text?: string }) => { // specialElement = {specialValuesArray[index]}; } else if (specialValuesArray[index]?.match(nostrPrefixRegex)) { const mention = specialValuesArray[index]?.split(":")[1]; - if (mention.startsWith("nprofile") || mention.startsWith("npub")) { + if ( + mention && + (mention.startsWith("nprofile") || mention.startsWith("npub")) + ) { specialElement = ; } else if ( - mention.startsWith("nevent") || - mention.startsWith("note") || - mention.startsWith("naddr") + mention && + (mention.startsWith("nevent") || + mention.startsWith("note") || + mention.startsWith("naddr")) ) { specialElement = ; } diff --git a/lib/hooks/useCurrentUser.ts b/lib/hooks/useCurrentUser.ts index 5065c3b..c923ffe 100644 --- a/lib/hooks/useCurrentUser.ts +++ b/lib/hooks/useCurrentUser.ts @@ -64,9 +64,11 @@ export default function useCurrentUser() { window.location.reload(); } function handleUpdateUser(userInfo: string) { + const userObject = UserSchema.safeParse(JSON.parse(userInfo)); + if (!userObject.success) return; const parsedData = UserSchema.safeParse({ ...currentUser, - ...JSON.parse(userInfo), + ...userObject, }); if (parsedData.success) { updateCurrentUser({ diff --git a/lib/hooks/useLocalStorage.ts b/lib/hooks/useLocalStorage.ts index 28a292c..85cab1c 100644 --- a/lib/hooks/useLocalStorage.ts +++ b/lib/hooks/useLocalStorage.ts @@ -12,7 +12,7 @@ function useLocalStorage(key: string, initialValue: T) { // Get from local storage by key const item = window.localStorage.getItem(key); // Parse stored json or if none return initialValue - return item ? JSON.parse(item) : initialValue; + return item ? (JSON.parse(item) as T) : initialValue; } catch (error) { // If error also return initialValue console.log(error); diff --git a/lib/nostr/utils.ts b/lib/nostr/utils.ts index a654bc9..105a15f 100644 --- a/lib/nostr/utils.ts +++ b/lib/nostr/utils.ts @@ -14,12 +14,12 @@ export function nip19ToTag(nip19Id: string): string[] | undefined { case "nprofile": tag = ["e", decoded.data.pubkey]; if (decoded.data.relays && decoded.data.relays.length > 0) - tag.push(decoded.data.relays[0]); + tag.push(decoded.data.relays[0] as string); return tag; case "nevent": tag = ["e", decoded.data.id]; if (decoded.data.relays && decoded.data.relays.length > 0) - tag.push(decoded.data.relays[0]); + tag.push(decoded.data.relays[0] as string); return tag; case "naddr": tag = [ @@ -27,7 +27,7 @@ export function nip19ToTag(nip19Id: string): string[] | undefined { `${decoded.data.kind}:${decoded.data.pubkey}:${decoded.data.identifier}`, ]; if (decoded.data.relays && decoded.data.relays.length > 0) { - tag.push(decoded.data.relays[0]); + tag.push(decoded.data.relays[0] as string); } return tag; } @@ -35,12 +35,12 @@ export function nip19ToTag(nip19Id: string): string[] | undefined { export function aTagToNip19(aTag: string[]): string { if (aTag[0] !== "a") throw new Error("Not an a tag"); - const tagIdSplit = aTag[1].split(":"); + const tagIdSplit = aTag[1]!.split(":"); return nip19.naddrEncode({ - kind: parseInt(tagIdSplit[0]), - pubkey: tagIdSplit[1], - identifier: tagIdSplit[2], + kind: parseInt(tagIdSplit[0] as string), + pubkey: tagIdSplit[1] as string, + identifier: tagIdSplit[2] as string, }); } export const getTagValues = (name: string, tags: string[][]) => { diff --git a/package.json b/package.json index c3fa5e7..1df0dee 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ }, "devDependencies": { "@tailwindcss/typography": "^0.5.10", + "@total-typescript/ts-reset": "^0.5.1", "@types/crypto-js": "^4.1.2", "@types/node": "^20", "@types/ramda": "^0.29.6", diff --git a/reset.d.ts b/reset.d.ts new file mode 100644 index 0000000..a3d4a03 --- /dev/null +++ b/reset.d.ts @@ -0,0 +1 @@ +import "@total-typescript/ts-reset"; diff --git a/tsconfig.json b/tsconfig.json index a84e8ed..7aa020b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,7 @@ "isolatedModules": true, "jsx": "preserve", "incremental": true, + "noUncheckedIndexedAccess": true, "plugins": [ { "name": "next"