diff --git a/src/db/User.ts b/src/db/User.ts index a8fc7de4..a8aec51f 100644 --- a/src/db/User.ts +++ b/src/db/User.ts @@ -1,4 +1,5 @@ import { HexKey, TaggedRawEvent, UserMetadata } from "../nostr"; +import { hexToBech32 } from "../Util"; export interface MetadataCache extends UserMetadata { /** @@ -22,6 +23,7 @@ export function mapEventToProfile(ev: TaggedRawEvent) { let data: UserMetadata = JSON.parse(ev.content); return { pubkey: ev.pubkey, + npub: hexToBech32("npub", ev.pubkey), created: ev.created_at, loaded: new Date().getTime(), ...data diff --git a/src/db/index.ts b/src/db/index.ts index d5734ccb..8af9d9a8 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -1,5 +1,6 @@ -import Dexie, { Table } from 'dexie'; -import { MetadataCache } from './User'; +import Dexie, { Table } from "dexie"; +import { MetadataCache } from "./User"; +import { hexToBech32 } from "../Util"; export class SnortDB extends Dexie { @@ -7,8 +8,12 @@ export class SnortDB extends Dexie { constructor() { super('snortDB'); - this.version(1).stores({ - users: '++pubkey, name, display_name, picture, nip05' // Primary key and indexed props + this.version(2).stores({ + users: '++pubkey, name, display_name, picture, nip05, npub' + }).upgrade(tx => { + return tx.table("users").toCollection().modify(user => { + user.npub = hexToBech32("npub", user.pubkey) + }) }); } } diff --git a/src/element/Textarea.tsx b/src/element/Textarea.tsx index 21ac610d..11b71887 100644 --- a/src/element/Textarea.tsx +++ b/src/element/Textarea.tsx @@ -32,7 +32,8 @@ const Textarea = ({ users, onChange, ...rest }: any) => { const allUsers = useLiveQuery( () => db.users - .where("name").startsWithIgnoreCase(query) + .where("npub").startsWithIgnoreCase(query) + .or("name").startsWithIgnoreCase(query) .or("display_name").startsWithIgnoreCase(query) .or("nip05").startsWithIgnoreCase(query) .limit(5)