diff --git a/packages/system/src/commands.ts b/packages/system/src/commands.ts index 3bb09a6c..942c7406 100644 --- a/packages/system/src/commands.ts +++ b/packages/system/src/commands.ts @@ -1,590 +1,413 @@ -// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. -/** user-defined commands **/ + // This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. -export const commands = { - async getRelays(): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_relays") }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async connectRelay(relay: string): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("connect_relay", { relay }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async removeRelay(relay: string): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("remove_relay", { relay }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getAccounts(): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_accounts") }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async createAccount(): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("create_account") }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async saveAccount( - nsec: string, - password: string, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("save_account", { nsec, password }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getEncryptedKey( - npub: string, - password: string, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("get_encrypted_key", { npub, password }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async connectRemoteAccount(uri: string): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("connect_remote_account", { uri }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async loadAccount( - npub: string, - bunker: string | null, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("load_account", { npub, bunker }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async eventToBech32( - id: string, - relays: string[], - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("event_to_bech32", { id, relays }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async userToBech32( - key: string, - relays: string[], - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("user_to_bech32", { key, relays }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async verifyNip05( - key: string, - nip05: string, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("verify_nip05", { key, nip05 }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getCurrentUserProfile(): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("get_current_user_profile"), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getProfile(id: string): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_profile", { id }) }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getContactList(): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_contact_list") }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async setContactList(pubkeys: string[]): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("set_contact_list", { pubkeys }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async createProfile( - name: string, - displayName: string, - about: string, - picture: string, - banner: string, - nip05: string, - lud16: string, - website: string, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("create_profile", { - name, - displayName, - about, - picture, - banner, - nip05, - lud16, - website, - }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async follow( - id: string, - alias: string | null, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("follow", { id, alias }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async unfollow(id: string): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("unfollow", { id }) }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getNstore(key: string): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_nstore", { key }) }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async setNstore( - key: string, - content: string, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("set_nstore", { key, content }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async setNwc(uri: string): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("set_nwc", { uri }) }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async loadNwc(): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("load_nwc") }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getBalance(): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_balance") }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async zapProfile( - id: string, - amount: string, - message: string, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("zap_profile", { id, amount, message }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async zapEvent( - id: string, - amount: string, - message: string, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("zap_event", { id, amount, message }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async friendToFriend(npub: string): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("friend_to_friend", { npub }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getNotifications(): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_notifications") }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getEvent(id: string): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_event", { id }) }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getReplies(id: string): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("get_replies", { id }) }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getEventsBy( - publicKey: string, - asOf: string | null, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("get_events_by", { publicKey, asOf }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getLocalEvents( - pubkeys: string[], - until: string | null, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("get_local_events", { pubkeys, until }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getGlobalEvents( - until: string | null, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("get_global_events", { until }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async getHashtagEvents( - hashtags: string[], - until: string | null, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("get_hashtag_events", { hashtags, until }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async publish( - content: string, - tags: string[][], - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("publish", { content, tags }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async repost(raw: string): Promise> { - try { - return { status: "ok", data: await TAURI_INVOKE("repost", { raw }) }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async showInFolder(path: string): Promise { - await TAURI_INVOKE("show_in_folder", { path }); - }, - async createColumn( - label: string, - x: number, - y: number, - width: number, - height: number, - url: string, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("create_column", { - label, - x, - y, - width, - height, - url, - }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async closeColumn(label: string): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("close_column", { label }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async repositionColumn( - label: string, - x: number, - y: number, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("reposition_column", { label, x, y }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async resizeColumn( - label: string, - width: number, - height: number, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("resize_column", { label, width, height }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async openWindow( - label: string, - title: string, - url: string, - width: number, - height: number, - ): Promise> { - try { - return { - status: "ok", - data: await TAURI_INVOKE("open_window", { - label, - title, - url, - width, - height, - }), - }; - } catch (e) { - if (e instanceof Error) throw e; - else return { status: "error", error: e as any }; - } - }, - async setBadge(count: number): Promise { - await TAURI_INVOKE("set_badge", { count }); - }, -}; + /** user-defined commands **/ -/** user-defined events **/ + export const commands = { +async getRelays() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_relays") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async connectRelay(relay: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("connect_relay", { relay }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async removeRelay(relay: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("remove_relay", { relay }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getAccounts() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_accounts") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async createAccount() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("create_account") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async saveAccount(nsec: string, password: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("save_account", { nsec, password }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getEncryptedKey(npub: string, password: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_encrypted_key", { npub, password }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async connectRemoteAccount(uri: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("connect_remote_account", { uri }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async loadAccount(npub: string, bunker: string | null) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("load_account", { npub, bunker }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async eventToBech32(id: string, relays: string[]) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("event_to_bech32", { id, relays }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async userToBech32(key: string, relays: string[]) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("user_to_bech32", { key, relays }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async verifyNip05(key: string, nip05: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("verify_nip05", { key, nip05 }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getCurrentUserProfile() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_current_user_profile") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getProfile(id: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_profile", { id }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getContactList() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_contact_list") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async setContactList(pubkeys: string[]) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("set_contact_list", { pubkeys }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async createProfile(name: string, displayName: string, about: string, picture: string, banner: string, nip05: string, lud16: string, website: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("create_profile", { name, displayName, about, picture, banner, nip05, lud16, website }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async follow(id: string, alias: string | null) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("follow", { id, alias }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async unfollow(id: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("unfollow", { id }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getNstore(key: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_nstore", { key }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async setNstore(key: string, content: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("set_nstore", { key, content }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async setNwc(uri: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("set_nwc", { uri }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async loadNwc() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("load_nwc") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getBalance() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_balance") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async zapProfile(id: string, amount: string, message: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("zap_profile", { id, amount, message }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async zapEvent(id: string, amount: string, message: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("zap_event", { id, amount, message }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async friendToFriend(npub: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("friend_to_friend", { npub }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getNotifications() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_notifications") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getEvent(id: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_event", { id }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getReplies(id: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_replies", { id }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getEventsBy(publicKey: string, asOf: string | null) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_events_by", { publicKey, asOf }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getLocalEvents(pubkeys: string[], until: string | null) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_local_events", { pubkeys, until }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getGlobalEvents(until: string | null) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_global_events", { until }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getHashtagEvents(hashtags: string[], until: string | null) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_hashtag_events", { hashtags, until }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async publish(content: string, tags: string[][]) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("publish", { content, tags }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async repost(raw: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("repost", { raw }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async showInFolder(path: string) : Promise { +await TAURI_INVOKE("show_in_folder", { path }); +}, +async createColumn(label: string, x: number, y: number, width: number, height: number, url: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("create_column", { label, x, y, width, height, url }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async closeColumn(label: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("close_column", { label }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async repositionColumn(label: string, x: number, y: number) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("reposition_column", { label, x, y }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async resizeColumn(label: string, width: number, height: number) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("resize_column", { label, width, height }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async openWindow(label: string, title: string, url: string, width: number, height: number) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("open_window", { label, title, url, width, height }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async setBadge(count: number) : Promise { +await TAURI_INVOKE("set_badge", { count }); +} +} -/** user-defined statics **/ + /** user-defined events **/ + + + + /** user-defined statics **/ + + /** user-defined types **/ -export type Account = { npub: string; nsec: string }; -export type Relays = { - connected: string[]; - read: string[] | null; - write: string[] | null; - both: string[] | null; -}; +export type Account = { npub: string; nsec: string } +export type Relays = { connected: string[]; read: string[] | null; write: string[] | null; both: string[] | null } /** tauri-specta globals **/ -import { invoke as TAURI_INVOKE } from "@tauri-apps/api/core"; + import { invoke as TAURI_INVOKE } from "@tauri-apps/api/core"; import * as TAURI_API_EVENT from "@tauri-apps/api/event"; import { type WebviewWindow as __WebviewWindow__ } from "@tauri-apps/api/webviewWindow"; type __EventObj__ = { - listen: ( - cb: TAURI_API_EVENT.EventCallback, - ) => ReturnType>; - once: ( - cb: TAURI_API_EVENT.EventCallback, - ) => ReturnType>; - emit: T extends null - ? (payload?: T) => ReturnType - : (payload: T) => ReturnType; + listen: ( + cb: TAURI_API_EVENT.EventCallback + ) => ReturnType>; + once: ( + cb: TAURI_API_EVENT.EventCallback + ) => ReturnType>; + emit: T extends null + ? (payload?: T) => ReturnType + : (payload: T) => ReturnType; }; export type Result = - | { status: "ok"; data: T } - | { status: "error"; error: E }; + | { status: "ok"; data: T } + | { status: "error"; error: E }; function __makeEvents__>( - mappings: Record, + mappings: Record ) { - return new Proxy( - {} as unknown as { - [K in keyof T]: __EventObj__ & { - (handle: __WebviewWindow__): __EventObj__; - }; - }, - { - get: (_, event) => { - const name = mappings[event as keyof T]; + return new Proxy( + {} as unknown as { + [K in keyof T]: __EventObj__ & { + (handle: __WebviewWindow__): __EventObj__; + }; + }, + { + get: (_, event) => { + const name = mappings[event as keyof T]; - return new Proxy((() => {}) as any, { - apply: (_, __, [window]: [__WebviewWindow__]) => ({ - listen: (arg: any) => window.listen(name, arg), - once: (arg: any) => window.once(name, arg), - emit: (arg: any) => window.emit(name, arg), - }), - get: (_, command: keyof __EventObj__) => { - switch (command) { - case "listen": - return (arg: any) => TAURI_API_EVENT.listen(name, arg); - case "once": - return (arg: any) => TAURI_API_EVENT.once(name, arg); - case "emit": - return (arg: any) => TAURI_API_EVENT.emit(name, arg); - } - }, - }); - }, - }, - ); + return new Proxy((() => {}) as any, { + apply: (_, __, [window]: [__WebviewWindow__]) => ({ + listen: (arg: any) => window.listen(name, arg), + once: (arg: any) => window.once(name, arg), + emit: (arg: any) => window.emit(name, arg), + }), + get: (_, command: keyof __EventObj__) => { + switch (command) { + case "listen": + return (arg: any) => TAURI_API_EVENT.listen(name, arg); + case "once": + return (arg: any) => TAURI_API_EVENT.once(name, arg); + case "emit": + return (arg: any) => TAURI_API_EVENT.emit(name, arg); + } + }, + }); + }, + } + ); } + + \ No newline at end of file diff --git a/packages/system/src/event.ts b/packages/system/src/event.ts index 6e2d32ca..1e27ba80 100644 --- a/packages/system/src/event.ts +++ b/packages/system/src/event.ts @@ -22,7 +22,7 @@ export class LumeEvent { return this.tags.filter((tag) => tag[0] === "p").map((tag) => tag[1]); } - static getEventThread(tags: string[][], gossip?: boolean) { + static getEventThread(tags: string[][], gossip = true) { let root: string = null; let reply: string = null; @@ -30,14 +30,22 @@ export class LumeEvent { const events = tags.filter((el) => el[0] === "e" && el[3] !== "mention"); if (gossip) { - const relays = tags.filter((el) => el[0] === "e" && el[2]?.length); + const relays = tags + .filter((el) => el[0] === "e" && el[2]?.length) + .map((tag) => tag[2]); if (relays.length >= 1) { for (const relay of relays) { - if (relay[2]?.length) - commands - .connectRelay(relay[2]) - .then(() => console.log("[gossip]: ", relay[2])); + try { + if (relay.length) { + const url = new URL(relay); + commands + .connectRelay(url.toString()) + .then(() => console.log("[relay hint]: ", url)); + } + } catch (e) { + console.log("[relay hint] error: ", relay); + } } } } @@ -82,6 +90,14 @@ export class LumeEvent { for (const tag of tags) { const rootIndex = events.findIndex((el) => el.id === tag[1]); + // Relay Hint + if (tag[2]?.length) { + const url = new URL(tag[2]); + commands + .connectRelay(url.toString()) + .then(() => console.log("[relay hint]: ", url)); + } + if (rootIndex !== -1) { const rootEvent = events[rootIndex]; diff --git a/src-tauri/src/nostr/event.rs b/src-tauri/src/nostr/event.rs index a0a56575..969d3fb3 100644 --- a/src-tauri/src/nostr/event.rs +++ b/src-tauri/src/nostr/event.rs @@ -13,9 +13,8 @@ pub async fn get_event(id: &str, state: State<'_, Nostr>) -> Result { let relays = event.relays; for relay in relays.into_iter() { - let url = Url::from_str(&relay).unwrap(); - let _ = client.add_relay(&url).await.unwrap_or_default(); - client.connect_relay(&url).await.unwrap_or_default(); + let _ = client.add_relay(&relay).await.unwrap_or_default(); + client.connect_relay(&relay).await.unwrap_or_default(); } Some(event.event_id) } diff --git a/src-tauri/src/nostr/metadata.rs b/src-tauri/src/nostr/metadata.rs index 8450dcea..fe121eef 100644 --- a/src-tauri/src/nostr/metadata.rs +++ b/src-tauri/src/nostr/metadata.rs @@ -4,7 +4,6 @@ use keyring::Entry; use nostr_sdk::prelude::*; use std::{str::FromStr, time::Duration}; use tauri::State; -use url::Url; #[tauri::command] #[specta::specta] @@ -43,7 +42,14 @@ pub async fn get_profile(id: &str, state: State<'_, Nostr>) -> Result = match Nip19::from_bech32(id) { Ok(val) => match val { Nip19::Pubkey(pubkey) => Some(pubkey), - Nip19::Profile(profile) => Some(profile.public_key), + Nip19::Profile(profile) => { + let relays = profile.relays; + for relay in relays.into_iter() { + let _ = client.add_relay(&relay).await.unwrap_or_default(); + client.connect_relay(&relay).await.unwrap_or_default(); + } + Some(profile.public_key) + } _ => None, }, Err(_) => match PublicKey::from_str(id) {