feat: use memo for some components

This commit is contained in:
reya 2024-06-26 17:49:36 +07:00
parent 717c3e17df
commit 5c9b599b1e
6 changed files with 519 additions and 731 deletions

View File

@ -4,14 +4,14 @@ import { cn } from "@lume/utils";
import { invoke } from "@tauri-apps/api/core"; import { invoke } from "@tauri-apps/api/core";
import { listen } from "@tauri-apps/api/event"; import { listen } from "@tauri-apps/api/event";
import { getCurrent } from "@tauri-apps/api/webviewWindow"; import { getCurrent } from "@tauri-apps/api/webviewWindow";
import { useCallback, useEffect, useRef, useState } from "react"; import { memo, useCallback, useEffect, useRef, useState } from "react";
type WindowEvent = { type WindowEvent = {
scroll: boolean; scroll: boolean;
resize: boolean; resize: boolean;
}; };
export function Column({ export const Column = memo(function Column({
column, column,
account, account,
}: { }: {
@ -98,7 +98,7 @@ export function Column({
</div> </div>
</div> </div>
); );
} });
function Header({ label, name }: { label: string; name: string }) { function Header({ label, name }: { label: string; name: string }) {
const [title, setTitle] = useState(name); const [title, setTitle] = useState(name);

View File

@ -1,10 +1,10 @@
import { ThreadIcon } from "@lume/icons";
import { Note } from "@/components/note"; import { Note } from "@/components/note";
import { cn } from "@lume/utils"; import { ThreadIcon } from "@lume/icons";
import type { LumeEvent } from "@lume/system"; import type { LumeEvent } from "@lume/system";
import { useMemo } from "react"; import { cn } from "@lume/utils";
import { memo, useMemo } from "react";
export function Conversation({ export const Conversation = memo(function Conversation({
event, event,
className, className,
}: { }: {
@ -44,4 +44,4 @@ export function Conversation({
</Note.Root> </Note.Root>
</Note.Provider> </Note.Provider>
); );
} });

View File

@ -1,9 +1,10 @@
import { QuoteIcon } from "@lume/icons";
import { Note } from "@/components/note"; import { Note } from "@/components/note";
import { cn } from "@lume/utils"; import { QuoteIcon } from "@lume/icons";
import type { LumeEvent } from "@lume/system"; import type { LumeEvent } from "@lume/system";
import { cn } from "@lume/utils";
import { memo } from "react";
export function Quote({ export const Quote = memo(function Quote({
event, event,
className, className,
}: { }: {
@ -40,4 +41,4 @@ export function Quote({
</Note.Root> </Note.Root>
</Note.Provider> </Note.Provider>
); );
} });

View File

@ -1,11 +1,12 @@
import { Spinner } from "@lume/ui";
import { Note } from "@/components/note"; import { Note } from "@/components/note";
import { User } from "@/components/user"; import { User } from "@/components/user";
import { type LumeEvent, NostrQuery } from "@lume/system";
import { Spinner } from "@lume/ui";
import { cn } from "@lume/utils"; import { cn } from "@lume/utils";
import { useQuery } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query";
import { type LumeEvent, NostrQuery } from "@lume/system"; import { memo } from "react";
export function RepostNote({ export const RepostNote = memo(function RepostNote({
event, event,
className, className,
}: { }: {
@ -78,4 +79,4 @@ export function RepostNote({
)} )}
</Note.Root> </Note.Root>
); );
} });

View File

@ -1,14 +1,17 @@
import { cn } from "@lume/utils";
import { Note } from "@/components/note"; import { Note } from "@/components/note";
import type { LumeEvent } from "@lume/system"; import type { LumeEvent } from "@lume/system";
import { cn } from "@lume/utils";
import { memo } from "react";
export function TextNote({ export const TextNote = memo(function TextNote({
event, event,
className, className,
}: { }: {
event: LumeEvent; event: LumeEvent;
className?: string; className?: string;
}) { }) {
console.log("Rendered at: ", event.id, new Date().toLocaleTimeString());
return ( return (
<Note.Provider event={event}> <Note.Provider event={event}>
<Note.Root <Note.Root
@ -31,4 +34,4 @@ export function TextNote({
</Note.Root> </Note.Root>
</Note.Provider> </Note.Provider>
); );
} });

View File

@ -1,3 +1,4 @@
// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. // This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually.
/** user-defined commands **/ /** user-defined commands **/
@ -13,10 +14,7 @@ export const commands = {
}, },
async connectRelay(relay: string) : Promise<Result<boolean, string>> { async connectRelay(relay: string) : Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("connect_relay", { relay }) };
status: "ok",
data: await TAURI_INVOKE("connect_relay", { relay }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -24,10 +22,7 @@ export const commands = {
}, },
async removeRelay(relay: string) : Promise<Result<boolean, string>> { async removeRelay(relay: string) : Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("remove_relay", { relay }) };
status: "ok",
data: await TAURI_INVOKE("remove_relay", { relay }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -43,10 +38,7 @@ export const commands = {
}, },
async saveBootstrapRelays(relays: string) : Promise<Result<null, string>> { async saveBootstrapRelays(relays: string) : Promise<Result<null, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("save_bootstrap_relays", { relays }) };
status: "ok",
data: await TAURI_INVOKE("save_bootstrap_relays", { relays }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -68,29 +60,17 @@ export const commands = {
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async saveAccount( async saveAccount(nsec: string, password: string) : Promise<Result<string, string>> {
nsec: string,
password: string,
): Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("save_account", { nsec, password }) };
status: "ok",
data: await TAURI_INVOKE("save_account", { nsec, password }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async getEncryptedKey( async getEncryptedKey(npub: string, password: string) : Promise<Result<string, string>> {
npub: string,
password: string,
): Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_encrypted_key", { npub, password }) };
status: "ok",
data: await TAURI_INVOKE("get_encrypted_key", { npub, password }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -98,10 +78,7 @@ export const commands = {
}, },
async getPrivateKey(npub: string) : Promise<Result<string, string>> { async getPrivateKey(npub: string) : Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_private_key", { npub }) };
status: "ok",
data: await TAURI_INVOKE("get_private_key", { npub }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -109,24 +86,15 @@ export const commands = {
}, },
async connectRemoteAccount(uri: string) : Promise<Result<string, string>> { async connectRemoteAccount(uri: string) : Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("connect_remote_account", { uri }) };
status: "ok",
data: await TAURI_INVOKE("connect_remote_account", { uri }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async loadAccount( async loadAccount(npub: string, bunker: string | null) : Promise<Result<boolean, string>> {
npub: string,
bunker: string | null,
): Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("load_account", { npub, bunker }) };
status: "ok",
data: await TAURI_INVOKE("load_account", { npub, bunker }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -158,39 +126,15 @@ export const commands = {
}, },
async setContactList(publicKeys: string[]) : Promise<Result<boolean, string>> { async setContactList(publicKeys: string[]) : Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("set_contact_list", { publicKeys }) };
status: "ok",
data: await TAURI_INVOKE("set_contact_list", { publicKeys }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async createProfile( async createProfile(name: string, displayName: string, about: string, picture: string, banner: string, nip05: string, lud16: string, website: string) : Promise<Result<string, string>> {
name: string,
displayName: string,
about: string,
picture: string,
banner: string,
nip05: string,
lud16: string,
website: string,
): Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("create_profile", { name, displayName, about, picture, banner, nip05, lud16, website }) };
status: "ok",
data: await TAURI_INVOKE("create_profile", {
name,
displayName,
about,
picture,
banner,
nip05,
lud16,
website,
}),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -198,10 +142,7 @@ export const commands = {
}, },
async isContactListEmpty() : Promise<Result<boolean, null>> { async isContactListEmpty() : Promise<Result<boolean, null>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("is_contact_list_empty") };
status: "ok",
data: await TAURI_INVOKE("is_contact_list_empty"),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -209,24 +150,15 @@ export const commands = {
}, },
async checkContact(hex: string) : Promise<Result<boolean, null>> { async checkContact(hex: string) : Promise<Result<boolean, null>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("check_contact", { hex }) };
status: "ok",
data: await TAURI_INVOKE("check_contact", { hex }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async toggleContact( async toggleContact(hex: string, alias: string | null) : Promise<Result<string, string>> {
hex: string,
alias: string | null,
): Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("toggle_contact", { hex, alias }) };
status: "ok",
data: await TAURI_INVOKE("toggle_contact", { hex, alias }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -240,15 +172,9 @@ export const commands = {
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async setNstore( async setNstore(key: string, content: string) : Promise<Result<string, string>> {
key: string,
content: string,
): Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("set_nstore", { key, content }) };
status: "ok",
data: await TAURI_INVOKE("set_nstore", { key, content }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -278,31 +204,17 @@ export const commands = {
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async zapProfile( async zapProfile(id: string, amount: string, message: string) : Promise<Result<boolean, string>> {
id: string,
amount: string,
message: string,
): Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("zap_profile", { id, amount, message }) };
status: "ok",
data: await TAURI_INVOKE("zap_profile", { id, amount, message }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async zapEvent( async zapEvent(id: string, amount: string, message: string) : Promise<Result<boolean, string>> {
id: string,
amount: string,
message: string,
): Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("zap_event", { id, amount, message }) };
status: "ok",
data: await TAURI_INVOKE("zap_event", { id, amount, message }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -310,10 +222,7 @@ export const commands = {
}, },
async friendToFriend(npub: string) : Promise<Result<boolean, string>> { async friendToFriend(npub: string) : Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("friend_to_friend", { npub }) };
status: "ok",
data: await TAURI_INVOKE("friend_to_friend", { npub }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -337,24 +246,15 @@ export const commands = {
}, },
async setNewSettings(settings: string) : Promise<Result<null, null>> { async setNewSettings(settings: string) : Promise<Result<null, null>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("set_new_settings", { settings }) };
status: "ok",
data: await TAURI_INVOKE("set_new_settings", { settings }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async verifyNip05( async verifyNip05(key: string, nip05: string) : Promise<Result<boolean, string>> {
key: string,
nip05: string,
): Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("verify_nip05", { key, nip05 }) };
status: "ok",
data: await TAURI_INVOKE("verify_nip05", { key, nip05 }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -362,10 +262,7 @@ export const commands = {
}, },
async getEventMeta(content: string) : Promise<Result<Meta, null>> { async getEventMeta(content: string) : Promise<Result<Meta, null>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_event_meta", { content }) };
status: "ok",
data: await TAURI_INVOKE("get_event_meta", { content }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -379,15 +276,9 @@ export const commands = {
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async getEventFrom( async getEventFrom(id: string, relayHint: string) : Promise<Result<RichEvent, string>> {
id: string,
relayHint: string,
): Promise<Result<RichEvent, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_event_from", { id, relayHint }) };
status: "ok",
data: await TAURI_INVOKE("get_event_from", { id, relayHint }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -403,10 +294,7 @@ export const commands = {
}, },
async listenEventReply(id: string) : Promise<Result<null, string>> { async listenEventReply(id: string) : Promise<Result<null, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("listen_event_reply", { id }) };
status: "ok",
data: await TAURI_INVOKE("listen_event_reply", { id }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -414,108 +302,63 @@ export const commands = {
}, },
async unlistenEventReply(id: string) : Promise<Result<null, null>> { async unlistenEventReply(id: string) : Promise<Result<null, null>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("unlisten_event_reply", { id }) };
status: "ok",
data: await TAURI_INVOKE("unlisten_event_reply", { id }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async getEventsBy( async getEventsBy(publicKey: string, asOf: string | null) : Promise<Result<RichEvent[], string>> {
publicKey: string,
asOf: string | null,
): Promise<Result<RichEvent[], string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_events_by", { publicKey, asOf }) };
status: "ok",
data: await TAURI_INVOKE("get_events_by", { publicKey, asOf }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async getLocalEvents( async getLocalEvents(until: string | null) : Promise<Result<RichEvent[], string>> {
until: string | null,
): Promise<Result<RichEvent[], string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_local_events", { until }) };
status: "ok",
data: await TAURI_INVOKE("get_local_events", { until }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async getGroupEvents( async getGroupEvents(publicKeys: string[], until: string | null) : Promise<Result<RichEvent[], string>> {
publicKeys: string[],
until: string | null,
): Promise<Result<RichEvent[], string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_group_events", { publicKeys, until }) };
status: "ok",
data: await TAURI_INVOKE("get_group_events", { publicKeys, until }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async getGlobalEvents( async getGlobalEvents(until: string | null) : Promise<Result<RichEvent[], string>> {
until: string | null,
): Promise<Result<RichEvent[], string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_global_events", { until }) };
status: "ok",
data: await TAURI_INVOKE("get_global_events", { until }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async getHashtagEvents( async getHashtagEvents(hashtags: string[], until: string | null) : Promise<Result<RichEvent[], string>> {
hashtags: string[],
until: string | null,
): Promise<Result<RichEvent[], string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("get_hashtag_events", { hashtags, until }) };
status: "ok",
data: await TAURI_INVOKE("get_hashtag_events", { hashtags, until }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async publish( async publish(content: string, warning: string | null, difficulty: number | null) : Promise<Result<string, string>> {
content: string,
warning: string | null,
difficulty: number | null,
): Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("publish", { content, warning, difficulty }) };
status: "ok",
data: await TAURI_INVOKE("publish", { content, warning, difficulty }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async reply( async reply(content: string, to: string, root: string | null) : Promise<Result<string, string>> {
content: string,
to: string,
root: string | null,
): Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("reply", { content, to, root }) };
status: "ok",
data: await TAURI_INVOKE("reply", { content, to, root }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -531,10 +374,7 @@ export const commands = {
}, },
async eventToBech32(id: string) : Promise<Result<string, string>> { async eventToBech32(id: string) : Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("event_to_bech32", { id }) };
status: "ok",
data: await TAURI_INVOKE("event_to_bech32", { id }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -542,10 +382,7 @@ export const commands = {
}, },
async userToBech32(user: string) : Promise<Result<string, string>> { async userToBech32(user: string) : Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("user_to_bech32", { user }) };
status: "ok",
data: await TAURI_INVOKE("user_to_bech32", { user }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -556,10 +393,7 @@ export const commands = {
}, },
async createColumn(column: Column) : Promise<Result<string, string>> { async createColumn(column: Column) : Promise<Result<string, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("create_column", { column }) };
status: "ok",
data: await TAURI_INVOKE("create_column", { column }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -567,40 +401,23 @@ export const commands = {
}, },
async closeColumn(label: string) : Promise<Result<boolean, string>> { async closeColumn(label: string) : Promise<Result<boolean, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("close_column", { label }) };
status: "ok",
data: await TAURI_INVOKE("close_column", { label }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async repositionColumn( async repositionColumn(label: string, x: number, y: number) : Promise<Result<null, string>> {
label: string,
x: number,
y: number,
): Promise<Result<null, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("reposition_column", { label, x, y }) };
status: "ok",
data: await TAURI_INVOKE("reposition_column", { label, x, y }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
} }
}, },
async resizeColumn( async resizeColumn(label: string, width: number, height: number) : Promise<Result<null, string>> {
label: string,
width: number,
height: number,
): Promise<Result<null, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("resize_column", { label, width, height }) };
status: "ok",
data: await TAURI_INVOKE("resize_column", { label, width, height }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -608,10 +425,7 @@ export const commands = {
}, },
async openWindow(window: Window) : Promise<Result<null, string>> { async openWindow(window: Window) : Promise<Result<null, string>> {
try { try {
return { return { status: "ok", data: await TAURI_INVOKE("open_window", { window }) };
status: "ok",
data: await TAURI_INVOKE("open_window", { window }),
};
} catch (e) { } catch (e) {
if(e instanceof Error) throw e; if(e instanceof Error) throw e;
else return { status: "error", error: e as any }; else return { status: "error", error: e as any };
@ -622,59 +436,26 @@ export const commands = {
}, },
async setBadge(count: number) : Promise<void> { async setBadge(count: number) : Promise<void> {
await TAURI_INVOKE("set_badge", { count }); await TAURI_INVOKE("set_badge", { count });
}, }
}; }
/** user-defined events **/ /** user-defined events **/
/** user-defined statics **/ /** user-defined statics **/
/** user-defined types **/ /** user-defined types **/
export type Account = { npub: string; nsec: string }; export type Account = { npub: string; nsec: string }
export type Column = { export type Column = { label: string; url: string; x: number; y: number; width: number; height: number }
label: string; export type Meta = { content: string; images: string[]; videos: string[]; events: string[]; mentions: string[]; hashtags: string[] }
url: string; export type Relays = { connected: string[]; read: string[] | null; write: string[] | null; both: string[] | null }
x: number; export type RichEvent = { raw: string; parsed: Meta | null }
y: number; export type Settings = { proxy: string | null; image_resize_service: string | null; use_relay_hint: boolean; content_warning: boolean; display_avatar: boolean; display_zap_button: boolean; display_repost_button: boolean; display_media: boolean }
width: number; export type Window = { label: string; title: string; url: string; width: number; height: number; maximizable: boolean; minimizable: boolean; hidden_title: boolean }
height: number;
};
export type Meta = {
content: string;
images: string[];
videos: string[];
events: string[];
mentions: string[];
hashtags: string[];
};
export type Relays = {
connected: string[];
read: string[] | null;
write: string[] | null;
both: string[] | null;
};
export type RichEvent = { raw: string; parsed: Meta | null };
export type Settings = {
proxy: string | null;
image_resize_service: string | null;
use_relay_hint: boolean;
content_warning: boolean;
display_avatar: boolean;
display_zap_button: boolean;
display_repost_button: boolean;
display_media: boolean;
};
export type Window = {
label: string;
title: string;
url: string;
width: number;
height: number;
maximizable: boolean;
minimizable: boolean;
hidden_title: boolean;
};
/** tauri-specta globals **/ /** tauri-specta globals **/
@ -684,10 +465,10 @@ import { type WebviewWindow as __WebviewWindow__ } from "@tauri-apps/api/webview
type __EventObj__<T> = { type __EventObj__<T> = {
listen: ( listen: (
cb: TAURI_API_EVENT.EventCallback<T>, cb: TAURI_API_EVENT.EventCallback<T>
) => ReturnType<typeof TAURI_API_EVENT.listen<T>>; ) => ReturnType<typeof TAURI_API_EVENT.listen<T>>;
once: ( once: (
cb: TAURI_API_EVENT.EventCallback<T>, cb: TAURI_API_EVENT.EventCallback<T>
) => ReturnType<typeof TAURI_API_EVENT.once<T>>; ) => ReturnType<typeof TAURI_API_EVENT.once<T>>;
emit: T extends null emit: T extends null
? (payload?: T) => ReturnType<typeof TAURI_API_EVENT.emit> ? (payload?: T) => ReturnType<typeof TAURI_API_EVENT.emit>
@ -699,7 +480,7 @@ export type Result<T, E> =
| { status: "error"; error: E }; | { status: "error"; error: E };
function __makeEvents__<T extends Record<string, any>>( function __makeEvents__<T extends Record<string, any>>(
mappings: Record<keyof T, string>, mappings: Record<keyof T, string>
) { ) {
return new Proxy( return new Proxy(
{} as unknown as { {} as unknown as {
@ -729,6 +510,8 @@ function __makeEvents__<T extends Record<string, any>>(
}, },
}); });
}, },
}, }
); );
} }