mirror of
https://github.com/luminous-devs/lume.git
synced 2024-10-01 09:21:07 +00:00
chore: remove unused code
This commit is contained in:
parent
6e5d0f0e76
commit
31bacc2646
@ -1,30 +1,18 @@
|
|||||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||||
import { RouterProvider, createRouter } from "@tanstack/react-router";
|
import { RouterProvider, createRouter } from "@tanstack/react-router";
|
||||||
import React, { StrictMode } from "react";
|
import { StrictMode } from "react";
|
||||||
import ReactDOM from "react-dom/client";
|
import ReactDOM from "react-dom/client";
|
||||||
import { I18nextProvider } from "react-i18next";
|
|
||||||
import "./app.css";
|
|
||||||
import { type } from "@tauri-apps/plugin-os";
|
|
||||||
import i18n from "./locale";
|
|
||||||
import { routeTree } from "./router.gen"; // auto generated file
|
import { routeTree } from "./router.gen"; // auto generated file
|
||||||
|
import "./app.css";
|
||||||
const queryClient = new QueryClient();
|
|
||||||
const os = await type();
|
|
||||||
|
|
||||||
// Set up a Router instance
|
// Set up a Router instance
|
||||||
|
const queryClient = new QueryClient();
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
routeTree,
|
routeTree,
|
||||||
context: {
|
context: { queryClient },
|
||||||
queryClient,
|
|
||||||
platform: os,
|
|
||||||
},
|
|
||||||
Wrap: ({ children }) => {
|
Wrap: ({ children }) => {
|
||||||
return (
|
return (
|
||||||
<I18nextProvider i18n={i18n} defaultNS={"translation"}>
|
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
|
||||||
<QueryClientProvider client={queryClient}>
|
|
||||||
{children}
|
|
||||||
</QueryClientProvider>
|
|
||||||
</I18nextProvider>
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
import { User } from "@/components/user";
|
|
||||||
import { NostrAccount } from "@lume/system";
|
|
||||||
import { getBitcoinDisplayValues } from "@lume/utils";
|
|
||||||
import { useEffect, useMemo, useState } from "react";
|
|
||||||
|
|
||||||
export function Balance({ account }: { account: string }) {
|
|
||||||
const [balance, setBalance] = useState(0);
|
|
||||||
const value = useMemo(() => getBitcoinDisplayValues(balance), [balance]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
async function getBalance() {
|
|
||||||
const val = await NostrAccount.getBalance();
|
|
||||||
setBalance(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
getBalance();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
data-tauri-drag-region
|
|
||||||
className="flex h-16 items-center justify-end px-3"
|
|
||||||
>
|
|
||||||
<div className="flex items-center gap-2">
|
|
||||||
<div className="text-end">
|
|
||||||
<div className="text-sm leading-tight text-neutral-700 dark:text-neutral-300">
|
|
||||||
Your balance
|
|
||||||
</div>
|
|
||||||
<div className="font-medium leading-tight">
|
|
||||||
₿ {value.bitcoinFormatted}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<User.Provider pubkey={account}>
|
|
||||||
<User.Root>
|
|
||||||
<User.Avatar className="size-9 rounded-full" />
|
|
||||||
</User.Root>
|
|
||||||
</User.Provider>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
@ -1,6 +1,5 @@
|
|||||||
import { LumeWindow, useEvent } from "@lume/system";
|
import { LumeWindow, useEvent } from "@lume/system";
|
||||||
import { LinkIcon } from "@lume/icons";
|
import { LinkIcon } from "@lume/icons";
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { cn } from "@lume/utils";
|
import { cn } from "@lume/utils";
|
||||||
import { User } from "@/components/user";
|
import { User } from "@/components/user";
|
||||||
import { Spinner } from "@lume/ui";
|
import { Spinner } from "@lume/ui";
|
||||||
@ -12,7 +11,6 @@ export function MentionNote({
|
|||||||
eventId: string;
|
eventId: string;
|
||||||
openable?: boolean;
|
openable?: boolean;
|
||||||
}) {
|
}) {
|
||||||
const { t } = useTranslation();
|
|
||||||
const { isLoading, isError, data } = useEvent(eventId);
|
const { isLoading, isError, data } = useEvent(eventId);
|
||||||
|
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
@ -26,7 +24,7 @@ export function MentionNote({
|
|||||||
if (isError || !data) {
|
if (isError || !data) {
|
||||||
return (
|
return (
|
||||||
<div className="w-full p-3 mt-2 border rounded-xl border-black/10 dark:border-white/10">
|
<div className="w-full p-3 mt-2 border rounded-xl border-black/10 dark:border-white/10">
|
||||||
{t("note.error")}
|
Event not found with your current relay set
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -8,18 +8,21 @@ import { Link } from "@tanstack/react-router";
|
|||||||
import { Menu, MenuItem } from "@tauri-apps/api/menu";
|
import { Menu, MenuItem } from "@tauri-apps/api/menu";
|
||||||
import { getCurrent } from "@tauri-apps/api/window";
|
import { getCurrent } from "@tauri-apps/api/window";
|
||||||
import { message } from "@tauri-apps/plugin-dialog";
|
import { message } from "@tauri-apps/plugin-dialog";
|
||||||
|
import { type } from "@tauri-apps/plugin-os";
|
||||||
import { useCallback, useEffect, useMemo, useState } from "react";
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
|
|
||||||
export const Route = createFileRoute("/$account")({
|
export const Route = createFileRoute("/$account")({
|
||||||
beforeLoad: async () => {
|
beforeLoad: async () => {
|
||||||
const accounts = await NostrAccount.getAccounts();
|
const accounts = await NostrAccount.getAccounts();
|
||||||
return { accounts };
|
const os = await type();
|
||||||
|
|
||||||
|
return { accounts, os };
|
||||||
},
|
},
|
||||||
component: Screen,
|
component: Screen,
|
||||||
});
|
});
|
||||||
|
|
||||||
function Screen() {
|
function Screen() {
|
||||||
const { platform } = Route.useRouteContext();
|
const { os } = Route.useRouteContext();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col w-screen h-screen">
|
<div className="flex flex-col w-screen h-screen">
|
||||||
@ -27,7 +30,7 @@ function Screen() {
|
|||||||
data-tauri-drag-region
|
data-tauri-drag-region
|
||||||
className={cn(
|
className={cn(
|
||||||
"flex h-11 shrink-0 items-center justify-between pr-2",
|
"flex h-11 shrink-0 items-center justify-between pr-2",
|
||||||
platform === "macos" ? "ml-2 pl-20" : "pl-4",
|
os === "macos" ? "ml-2 pl-20" : "pl-4",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
|
@ -1,19 +1,9 @@
|
|||||||
import type { Settings } from "@lume/system";
|
|
||||||
import { Spinner } from "@lume/ui";
|
import { Spinner } from "@lume/ui";
|
||||||
import type { QueryClient } from "@tanstack/react-query";
|
import type { QueryClient } from "@tanstack/react-query";
|
||||||
import { Outlet, createRootRouteWithContext } from "@tanstack/react-router";
|
import { Outlet, createRootRouteWithContext } from "@tanstack/react-router";
|
||||||
import type { Platform } from "@tauri-apps/plugin-os";
|
|
||||||
|
|
||||||
interface RouterContext {
|
interface RouterContext {
|
||||||
// System
|
|
||||||
queryClient: QueryClient;
|
queryClient: QueryClient;
|
||||||
// App info
|
|
||||||
platform?: Platform;
|
|
||||||
locale?: string;
|
|
||||||
// Settings
|
|
||||||
settings?: Settings;
|
|
||||||
// Accounts
|
|
||||||
accounts?: string[];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Route = createRootRouteWithContext<RouterContext>()({
|
export const Route = createRootRouteWithContext<RouterContext>()({
|
||||||
|
@ -7,7 +7,6 @@ import { invoke } from "@tauri-apps/api/core";
|
|||||||
import { writeText } from "@tauri-apps/plugin-clipboard-manager";
|
import { writeText } from "@tauri-apps/plugin-clipboard-manager";
|
||||||
import { message } from "@tauri-apps/plugin-dialog";
|
import { message } from "@tauri-apps/plugin-dialog";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
|
|
||||||
export const Route = createFileRoute("/auth/$account/backup")({
|
export const Route = createFileRoute("/auth/$account/backup")({
|
||||||
component: Screen,
|
component: Screen,
|
||||||
@ -15,20 +14,18 @@ export const Route = createFileRoute("/auth/$account/backup")({
|
|||||||
|
|
||||||
function Screen() {
|
function Screen() {
|
||||||
const { account } = Route.useParams();
|
const { account } = Route.useParams();
|
||||||
const { t } = useTranslation();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const [key, setKey] = useState(null);
|
const [key, setKey] = useState(null);
|
||||||
const [passphase, setPassphase] = useState("");
|
const [passphase, setPassphase] = useState("");
|
||||||
const [copied, setCopied] = useState(false);
|
const [copied, setCopied] = useState(false);
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [confirm, setConfirm] = useState({ c1: false, c2: false, c3: false });
|
const [confirm, setConfirm] = useState({ c1: false, c2: false });
|
||||||
|
|
||||||
const navigate = useNavigate();
|
|
||||||
|
|
||||||
const submit = async () => {
|
const submit = async () => {
|
||||||
try {
|
try {
|
||||||
if (key) {
|
if (key) {
|
||||||
if (!confirm.c1 || !confirm.c2 || !confirm.c3) {
|
if (!confirm.c1 || !confirm.c2) {
|
||||||
return await message("You need to confirm before continue", {
|
return await message("You need to confirm before continue", {
|
||||||
title: "Backup",
|
title: "Backup",
|
||||||
kind: "info",
|
kind: "info",
|
||||||
@ -137,7 +134,7 @@ function Screen() {
|
|||||||
className="text-sm leading-none text-neutral-800 dark:text-neutral-200"
|
className="text-sm leading-none text-neutral-800 dark:text-neutral-200"
|
||||||
htmlFor="confirm1"
|
htmlFor="confirm1"
|
||||||
>
|
>
|
||||||
{t("backup.confirm1")}
|
I will make sure keep it safe and not sharing with anyone.
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
@ -157,27 +154,7 @@ function Screen() {
|
|||||||
className="text-sm leading-none text-neutral-800 dark:text-neutral-200"
|
className="text-sm leading-none text-neutral-800 dark:text-neutral-200"
|
||||||
htmlFor="confirm2"
|
htmlFor="confirm2"
|
||||||
>
|
>
|
||||||
{t("backup.confirm2")}
|
I understand I cannot recover private key.
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div className="flex items-center gap-2">
|
|
||||||
<Checkbox.Root
|
|
||||||
checked={confirm.c3}
|
|
||||||
onCheckedChange={() =>
|
|
||||||
setConfirm((state) => ({ ...state, c3: !state.c3 }))
|
|
||||||
}
|
|
||||||
className="flex items-center justify-center rounded-md outline-none appearance-none size-6 bg-neutral-100 dark:bg-white/10 dark:hover:bg-white/20"
|
|
||||||
id="confirm3"
|
|
||||||
>
|
|
||||||
<Checkbox.Indicator className="text-blue-500">
|
|
||||||
<CheckIcon className="size-4" />
|
|
||||||
</Checkbox.Indicator>
|
|
||||||
</Checkbox.Root>
|
|
||||||
<label
|
|
||||||
className="text-sm leading-none text-neutral-800 dark:text-neutral-200"
|
|
||||||
htmlFor="confirm3"
|
|
||||||
>
|
|
||||||
{t("backup.confirm3")}
|
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -191,7 +168,7 @@ function Screen() {
|
|||||||
disabled={loading}
|
disabled={loading}
|
||||||
className="inline-flex items-center justify-center w-full font-semibold text-white bg-blue-500 rounded-lg h-11 shrink-0 hover:bg-blue-600 disabled:opacity-50"
|
className="inline-flex items-center justify-center w-full font-semibold text-white bg-blue-500 rounded-lg h-11 shrink-0 hover:bg-blue-600 disabled:opacity-50"
|
||||||
>
|
>
|
||||||
{loading ? <Spinner /> : t("global.continue")}
|
{loading ? <Spinner /> : "Continue"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -7,21 +7,18 @@ import { createFileRoute, useNavigate } from "@tanstack/react-router";
|
|||||||
import { message } from "@tauri-apps/plugin-dialog";
|
import { message } from "@tauri-apps/plugin-dialog";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
|
|
||||||
export const Route = createFileRoute("/auth/create-profile")({
|
export const Route = createFileRoute("/auth/create-profile")({
|
||||||
component: Screen,
|
|
||||||
loader: async () => {
|
loader: async () => {
|
||||||
const account = await NostrAccount.createAccount();
|
const account = await NostrAccount.createAccount();
|
||||||
return account;
|
return account;
|
||||||
},
|
},
|
||||||
|
component: Screen,
|
||||||
});
|
});
|
||||||
|
|
||||||
function Screen() {
|
function Screen() {
|
||||||
const account = Route.useLoaderData();
|
const account = Route.useLoaderData();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const { t } = useTranslation();
|
|
||||||
const { register, handleSubmit } = useForm();
|
const { register, handleSubmit } = useForm();
|
||||||
|
|
||||||
const [picture, setPicture] = useState<string>("");
|
const [picture, setPicture] = useState<string>("");
|
||||||
@ -87,7 +84,7 @@ function Screen() {
|
|||||||
>
|
>
|
||||||
<div className="flex flex-col gap-1">
|
<div className="flex flex-col gap-1">
|
||||||
<label htmlFor="display_name" className="font-medium">
|
<label htmlFor="display_name" className="font-medium">
|
||||||
{t("user.displayName")} *
|
Display Name *
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
type={"text"}
|
type={"text"}
|
||||||
@ -99,7 +96,7 @@ function Screen() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-1">
|
<div className="flex flex-col gap-1">
|
||||||
<label htmlFor="name" className="font-medium">
|
<label htmlFor="name" className="font-medium">
|
||||||
{t("user.name")}
|
Name
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
type={"text"}
|
type={"text"}
|
||||||
@ -111,7 +108,7 @@ function Screen() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-1">
|
<div className="flex flex-col gap-1">
|
||||||
<label htmlFor="about" className="font-medium">
|
<label htmlFor="about" className="font-medium">
|
||||||
{t("user.bio")}
|
Bio
|
||||||
</label>
|
</label>
|
||||||
<textarea
|
<textarea
|
||||||
{...register("about")}
|
{...register("about")}
|
||||||
@ -122,7 +119,7 @@ function Screen() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-1">
|
<div className="flex flex-col gap-1">
|
||||||
<label htmlFor="website" className="font-medium">
|
<label htmlFor="website" className="font-medium">
|
||||||
{t("user.website")}
|
Website
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
type="url"
|
type="url"
|
||||||
@ -136,7 +133,7 @@ function Screen() {
|
|||||||
type="submit"
|
type="submit"
|
||||||
className="inline-flex items-center justify-center w-full mt-3 font-semibold text-white bg-blue-500 rounded-lg h-11 shrink-0 hover:bg-blue-600 disabled:opacity-50"
|
className="inline-flex items-center justify-center w-full mt-3 font-semibold text-white bg-blue-500 rounded-lg h-11 shrink-0 hover:bg-blue-600 disabled:opacity-50"
|
||||||
>
|
>
|
||||||
{loading ? <Spinner /> : t("global.continue")}
|
{loading ? <Spinner /> : "Continue"}
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
import type { EventWithReplies } from "@lume/types";
|
|
||||||
import { Spinner } from "@lume/ui";
|
|
||||||
import { cn } from "@lume/utils";
|
|
||||||
import { useEffect, useState } from "react";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { Reply } from "./reply";
|
|
||||||
import { LumeEvent } from "@lume/system";
|
|
||||||
|
|
||||||
export function ReplyList({
|
|
||||||
eventId,
|
|
||||||
className,
|
|
||||||
}: {
|
|
||||||
eventId: string;
|
|
||||||
className?: string;
|
|
||||||
}) {
|
|
||||||
const [t] = useTranslation();
|
|
||||||
const [data, setData] = useState<null | EventWithReplies[]>(null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
async function getReplies() {
|
|
||||||
const events = await LumeEvent.getReplies(eventId);
|
|
||||||
setData(events);
|
|
||||||
}
|
|
||||||
getReplies();
|
|
||||||
}, [eventId]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className={cn("flex flex-col", className)}>
|
|
||||||
<div className="h-11 flex px-3 items-center text-sm font-semibold text-neutral-700 dark:text-neutral-300 border-t border-neutral-100 dark:border-neutral-900">
|
|
||||||
Replies ({data?.length ?? 0})
|
|
||||||
</div>
|
|
||||||
{!data ? (
|
|
||||||
<div className="flex h-16 items-center justify-center p-3">
|
|
||||||
<Spinner className="size-5" />
|
|
||||||
</div>
|
|
||||||
) : data.length === 0 ? (
|
|
||||||
<div className="flex w-full items-center justify-center">
|
|
||||||
<div className="flex flex-col items-center justify-center gap-2 py-6">
|
|
||||||
<h3 className="text-3xl">👋</h3>
|
|
||||||
<p className="leading-none text-neutral-600 dark:text-neutral-400">
|
|
||||||
{t("note.reply.empty")}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
data.map((event) => <Reply key={event.id} event={event} />)
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
@ -8,15 +8,12 @@ import {
|
|||||||
import { cn } from "@lume/utils";
|
import { cn } from "@lume/utils";
|
||||||
import { Link } from "@tanstack/react-router";
|
import { Link } from "@tanstack/react-router";
|
||||||
import { Outlet, createFileRoute } from "@tanstack/react-router";
|
import { Outlet, createFileRoute } from "@tanstack/react-router";
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
|
|
||||||
export const Route = createFileRoute("/settings")({
|
export const Route = createFileRoute("/settings")({
|
||||||
component: Screen,
|
component: Screen,
|
||||||
});
|
});
|
||||||
|
|
||||||
function Screen() {
|
function Screen() {
|
||||||
const { t } = useTranslation();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col w-full h-full">
|
<div className="flex flex-col w-full h-full">
|
||||||
<div
|
<div
|
||||||
@ -36,9 +33,7 @@ function Screen() {
|
|||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<SettingsIcon className="size-5 shrink-0" />
|
<SettingsIcon className="size-5 shrink-0" />
|
||||||
<p className="text-sm font-medium">
|
<p className="text-sm font-medium">General</p>
|
||||||
{t("settings.general.title")}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
@ -55,9 +50,7 @@ function Screen() {
|
|||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<UserIcon className="size-5 shrink-0" />
|
<UserIcon className="size-5 shrink-0" />
|
||||||
<p className="text-sm font-medium">
|
<p className="text-sm font-medium">User</p>
|
||||||
{t("settings.user.title")}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
@ -108,9 +101,7 @@ function Screen() {
|
|||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<SecureIcon className="size-5 shrink-0" />
|
<SecureIcon className="size-5 shrink-0" />
|
||||||
<p className="text-sm font-medium">
|
<p className="text-sm font-medium">Backup</p>
|
||||||
{t("settings.backup.title")}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
/** user-defined commands **/
|
/** user-defined commands **/
|
||||||
|
|
||||||
export const commands = {
|
export const commands = {
|
||||||
async getRelays() : Promise<Result<Relays, null>> {
|
async getRelays() : Promise<Result<Relays, string>> {
|
||||||
try {
|
try {
|
||||||
return { status: "ok", data: await TAURI_INVOKE("get_relays") };
|
return { status: "ok", data: await TAURI_INVOKE("get_relays") };
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -12,7 +12,7 @@ try {
|
|||||||
else return { status: "error", error: e as any };
|
else return { status: "error", error: e as any };
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async connectRelay(relay: string) : Promise<Result<boolean, null>> {
|
async connectRelay(relay: string) : Promise<Result<boolean, string>> {
|
||||||
try {
|
try {
|
||||||
return { status: "ok", data: await TAURI_INVOKE("connect_relay", { relay }) };
|
return { status: "ok", data: await TAURI_INVOKE("connect_relay", { relay }) };
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -20,7 +20,7 @@ try {
|
|||||||
else return { status: "error", error: e as any };
|
else return { status: "error", error: e as any };
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async removeRelay(relay: string) : Promise<Result<boolean, null>> {
|
async removeRelay(relay: string) : Promise<Result<boolean, string>> {
|
||||||
try {
|
try {
|
||||||
return { status: "ok", data: await TAURI_INVOKE("remove_relay", { relay }) };
|
return { status: "ok", data: await TAURI_INVOKE("remove_relay", { relay }) };
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -28,7 +28,7 @@ try {
|
|||||||
else return { status: "error", error: e as any };
|
else return { status: "error", error: e as any };
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async getBootstrapRelays() : Promise<Result<string[], null>> {
|
async getBootstrapRelays() : Promise<Result<string[], string>> {
|
||||||
try {
|
try {
|
||||||
return { status: "ok", data: await TAURI_INVOKE("get_bootstrap_relays") };
|
return { status: "ok", data: await TAURI_INVOKE("get_bootstrap_relays") };
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
Loading…
Reference in New Issue
Block a user