wip: fully migrate to tauri v2

This commit is contained in:
Ren Amamiya 2023-10-06 09:08:37 +07:00
parent 9627c40d75
commit c71bfb3f6d
21 changed files with 62 additions and 193 deletions

View File

@ -18,7 +18,6 @@
"**/*.{ts, tsx, css, md, html, json}": "prettier --cache --write"
},
"dependencies": {
"@dnd-kit/core": "^6.0.8",
"@fontsource-variable/inter": "^5.0.12",
"@getalby/sdk": "^2.4.0",
"@nostr-dev-kit/ndk": "^1.3.1",
@ -33,9 +32,8 @@
"@radix-ui/react-popover": "^1.0.7",
"@radix-ui/react-tooltip": "^1.0.7",
"@tanstack/react-query": "^4.35.7",
"@tauri-apps/api": "^1.5.0",
"@tauri-apps/api": "2.0.0-alpha.8",
"@tauri-apps/plugin-app": "2.0.0-alpha.1",
"@tauri-apps/plugin-cli": "2.0.0-alpha.1",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-alpha.1",
"@tauri-apps/plugin-dialog": "2.0.0-alpha.1",
"@tauri-apps/plugin-fs": "2.0.0-alpha.1",
@ -44,7 +42,10 @@
"@tauri-apps/plugin-os": "2.0.0-alpha.2",
"@tauri-apps/plugin-process": "2.0.0-alpha.1",
"@tauri-apps/plugin-shell": "2.0.0-alpha.1",
"@tauri-apps/plugin-sql": "2.0.0-alpha.1",
"@tauri-apps/plugin-stronghold": "2.0.0-alpha.2",
"@tauri-apps/plugin-updater": "2.0.0-alpha.1",
"@tauri-apps/plugin-upload": "2.0.0-alpha.1",
"@tauri-apps/plugin-window": "2.0.0-alpha.1",
"@tiptap/extension-image": "^2.1.11",
"@tiptap/extension-mention": "^2.1.11",
@ -72,10 +73,6 @@
"react-router-dom": "^6.16.0",
"reactflow": "^11.9.2",
"remark-gfm": "^3.0.1",
"tauri-plugin-sql-api": "github:tauri-apps/tauri-plugin-sql#v1",
"tauri-plugin-store-api": "github:tauri-apps/tauri-plugin-store#v1",
"tauri-plugin-stronghold-api": "github:tauri-apps/tauri-plugin-stronghold#v1",
"tauri-plugin-upload-api": "github:tauri-apps/tauri-plugin-upload#v1",
"tippy.js": "^6.3.7",
"virtua": "^0.9.1",
"zustand": "^4.4.2"

View File

@ -5,9 +5,6 @@ settings:
excludeLinksFromLockfile: false
dependencies:
'@dnd-kit/core':
specifier: ^6.0.8
version: 6.0.8(react-dom@18.2.0)(react@18.2.0)
'@fontsource-variable/inter':
specifier: ^5.0.12
version: 5.0.12
@ -51,14 +48,11 @@ dependencies:
specifier: ^4.35.7
version: 4.35.7(react-dom@18.2.0)(react@18.2.0)
'@tauri-apps/api':
specifier: ^1.5.0
version: 1.5.0
specifier: 2.0.0-alpha.8
version: 2.0.0-alpha.8
'@tauri-apps/plugin-app':
specifier: 2.0.0-alpha.1
version: 2.0.0-alpha.1
'@tauri-apps/plugin-cli':
specifier: 2.0.0-alpha.1
version: 2.0.0-alpha.1
'@tauri-apps/plugin-clipboard-manager':
specifier: 2.0.0-alpha.1
version: 2.0.0-alpha.1
@ -83,9 +77,18 @@ dependencies:
'@tauri-apps/plugin-shell':
specifier: 2.0.0-alpha.1
version: 2.0.0-alpha.1
'@tauri-apps/plugin-sql':
specifier: 2.0.0-alpha.1
version: 2.0.0-alpha.1
'@tauri-apps/plugin-stronghold':
specifier: 2.0.0-alpha.2
version: 2.0.0-alpha.2
'@tauri-apps/plugin-updater':
specifier: 2.0.0-alpha.1
version: 2.0.0-alpha.1
'@tauri-apps/plugin-upload':
specifier: 2.0.0-alpha.1
version: 2.0.0-alpha.1
'@tauri-apps/plugin-window':
specifier: 2.0.0-alpha.1
version: 2.0.0-alpha.1
@ -167,18 +170,6 @@ dependencies:
remark-gfm:
specifier: ^3.0.1
version: 3.0.1
tauri-plugin-sql-api:
specifier: github:tauri-apps/tauri-plugin-sql#v1
version: github.com/tauri-apps/tauri-plugin-sql/1c79471feb06366fe1c11cb1cb6c67bcdb80c215
tauri-plugin-store-api:
specifier: github:tauri-apps/tauri-plugin-store#v1
version: github.com/tauri-apps/tauri-plugin-store/1a741b721ed1eae0de0d811ecfe86fc6ad54fb73
tauri-plugin-stronghold-api:
specifier: github:tauri-apps/tauri-plugin-stronghold#v1
version: github.com/tauri-apps/tauri-plugin-stronghold/d87b778f48ee12435efcf3f82d2e5efbb9541759
tauri-plugin-upload-api:
specifier: github:tauri-apps/tauri-plugin-upload#v1
version: github.com/tauri-apps/tauri-plugin-upload/5348082f7436b01f0b5c08d6ddfc4f760abbac7e
tippy.js:
specifier: ^6.3.7
version: 6.3.7
@ -420,37 +411,6 @@ packages:
to-fast-properties: 2.0.0
dev: true
/@dnd-kit/accessibility@3.0.1(react@18.2.0):
resolution: {integrity: sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==}
peerDependencies:
react: '>=16.8.0'
dependencies:
react: 18.2.0
tslib: 2.6.2
dev: false
/@dnd-kit/core@6.0.8(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
'@dnd-kit/accessibility': 3.0.1(react@18.2.0)
'@dnd-kit/utilities': 3.2.1(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
tslib: 2.6.2
dev: false
/@dnd-kit/utilities@3.2.1(react@18.2.0):
resolution: {integrity: sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==}
peerDependencies:
react: '>=16.8.0'
dependencies:
react: 18.2.0
tslib: 2.6.2
dev: false
/@esbuild/android-arm64@0.18.20:
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
engines: {node: '>=12'}
@ -1932,13 +1892,13 @@ packages:
use-sync-external-store: 1.2.0(react@18.2.0)
dev: false
/@tauri-apps/api@1.5.0:
resolution: {integrity: sha512-yQY9wpVNuiYhLLuyDlu1nBpqJELT1fGp7OctN4rW9I2W1T2p7A3tqPxsEzQprEwneQRBAlPM9vC8NsnMbct+pg==}
/@tauri-apps/api@2.0.0-alpha.6:
resolution: {integrity: sha512-ZMOc3eu9amwvkC6M69h3hWt4/EsFaAXmtkiw4xd2LN59/lTb4ZQiVfq2QKlRcu1rj3n/Tcr7U30ZopvHwXBGIg==}
engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
dev: false
/@tauri-apps/api@2.0.0-alpha.6:
resolution: {integrity: sha512-ZMOc3eu9amwvkC6M69h3hWt4/EsFaAXmtkiw4xd2LN59/lTb4ZQiVfq2QKlRcu1rj3n/Tcr7U30ZopvHwXBGIg==}
/@tauri-apps/api@2.0.0-alpha.8:
resolution: {integrity: sha512-3hZ+7EzUA11KN+O/Y4KgmjR+ldhXLdNllkw//hv/AaNsktEopCRBuKfVRLzVK3yov+Z+GzgxqFlwgJ1v6g1iKw==}
engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
dev: false
@ -2055,12 +2015,6 @@ packages:
'@tauri-apps/api': 2.0.0-alpha.6
dev: false
/@tauri-apps/plugin-cli@2.0.0-alpha.1:
resolution: {integrity: sha512-CsEGByU9btlLWgo2WGsWnvMFHY7za+K5tAcCo5c6xgyOGplx+PrN63ZDxVvF686ZpjxtItoRra8lesqXHToGMg==}
dependencies:
'@tauri-apps/api': 2.0.0-alpha.6
dev: false
/@tauri-apps/plugin-clipboard-manager@2.0.0-alpha.1:
resolution: {integrity: sha512-zXybHu31RCx58ZGU7/kUHcvoXW2AX6kBXBZsKHv4rYe7Z869WmDLDC7iU23/dAJLu7xAPTJzJ/HbeMfbrfJ4hg==}
dependencies:
@ -2109,12 +2063,30 @@ packages:
'@tauri-apps/api': 2.0.0-alpha.6
dev: false
/@tauri-apps/plugin-sql@2.0.0-alpha.1:
resolution: {integrity: sha512-HzFjcISMnkYR4lSOEAvtOUUT/YIMU2mz+oVGdVzVYAM5gzt8Xmooapp66UCJ/ugTlpd0angSkqfRgU3eQVS7Mg==}
dependencies:
'@tauri-apps/api': 2.0.0-alpha.6
dev: false
/@tauri-apps/plugin-stronghold@2.0.0-alpha.2:
resolution: {integrity: sha512-G01gRHjD1QCNn2EK/hgHJYy0tFEfjuKpU104JOgeYVEbkJX7G92hjxfyLqe++LoihPF/sUa6VHEUVVXBsRa71Q==}
dependencies:
'@tauri-apps/api': 2.0.0-alpha.6
dev: false
/@tauri-apps/plugin-updater@2.0.0-alpha.1:
resolution: {integrity: sha512-rJoVc/N8gg1MkUOFZdx5h39V47elddwnOjs0sAPhaGfwct7okmFMRnXpN/MwHoprTkK2+6EDLOvhf0jFMiy4JA==}
dependencies:
'@tauri-apps/api': 2.0.0-alpha.6
dev: false
/@tauri-apps/plugin-upload@2.0.0-alpha.1:
resolution: {integrity: sha512-MSQesuCrQqPJtn1kbO428sz2M2q+G/jrOV2J3nxVrxUkISQvn2vK/vmMZ8e3p/dT5hdzs10Xz6KC9GZ67BCMVg==}
dependencies:
'@tauri-apps/api': 2.0.0-alpha.6
dev: false
/@tauri-apps/plugin-window@2.0.0-alpha.1:
resolution: {integrity: sha512-dFOAgal/3Txz3SQ+LNQq0AK1EPC+acdaFlwPVB/6KXUZYmaFleIlzgxDVoJCQ+/xOhxvYrdQaFLefh0I/Kldbg==}
dependencies:
@ -6810,35 +6782,3 @@ packages:
/zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
dev: false
github.com/tauri-apps/tauri-plugin-sql/1c79471feb06366fe1c11cb1cb6c67bcdb80c215:
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-sql/tar.gz/1c79471feb06366fe1c11cb1cb6c67bcdb80c215}
name: tauri-plugin-sql-api
version: 0.0.0
dependencies:
'@tauri-apps/api': 1.5.0
dev: false
github.com/tauri-apps/tauri-plugin-store/1a741b721ed1eae0de0d811ecfe86fc6ad54fb73:
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-store/tar.gz/1a741b721ed1eae0de0d811ecfe86fc6ad54fb73}
name: tauri-plugin-store-api
version: 0.0.0
dependencies:
'@tauri-apps/api': 1.5.0
dev: false
github.com/tauri-apps/tauri-plugin-stronghold/d87b778f48ee12435efcf3f82d2e5efbb9541759:
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-stronghold/tar.gz/d87b778f48ee12435efcf3f82d2e5efbb9541759}
name: tauri-plugin-stronghold-api
version: 0.0.0
dependencies:
'@tauri-apps/api': 1.5.0
dev: false
github.com/tauri-apps/tauri-plugin-upload/5348082f7436b01f0b5c08d6ddfc4f760abbac7e:
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-upload/tar.gz/5348082f7436b01f0b5c08d6ddfc4f760abbac7e}
name: tauri-plugin-upload-api
version: 0.0.0
dependencies:
'@tauri-apps/api': 1.5.0
dev: false

View File

@ -32,14 +32,14 @@ tauri-plugin-process = { git = "https://github.com/tauri-apps/plugins-workspace"
tauri-plugin-shell = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-updater = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-window = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-sql = { git = "hhttps://github.com/tauri-apps/plugins-workspace", branch = "v2", features = [
"sqlite",
] }
tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-autostart = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-stronghold = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-store = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-upload = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-sql = { git = "hhttps://github.com/tauri-apps/plugins-workspace", branch = "v2", features = [
"sqlite",
] }
sqlx-cli = { version = "0.7.0", default-features = false, features = [
"sqlite",
] }

View File

@ -12,8 +12,6 @@ use tauri::{Manager, WindowEvent};
use tauri_plugin_autostart::MacosLauncher;
use tauri_plugin_sql::{Migration, MigrationKind};
use webpage::{Webpage, WebpageOptions};
use window_vibrancy::{apply_mica, apply_vibrancy, NSVisualEffectMaterial};
use window_shadows::set_shadow;
#[cfg(target_os = "macos")]
use traffic_light::TrafficLight;
@ -120,7 +118,6 @@ fn main() {
}
})
.plugin(tauri_plugin_app::init())
.plugin(tauri_plugin_cli::init())
.plugin(tauri_plugin_clipboard_manager::init())
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_fs::init())
@ -129,6 +126,7 @@ fn main() {
.plugin(tauri_plugin_os::init())
.plugin(tauri_plugin_process::init())
.plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_upload::init())
.plugin(tauri_plugin_updater::Builder::new().build())
.plugin(tauri_plugin_window::init())
.plugin(

View File

@ -59,7 +59,7 @@ export default function App() {
headers: {
Accept: 'application/nostr+json',
},
}).then((res) => res.data),
}).then((res) => res.json()),
});
};

View File

@ -1,8 +1,8 @@
import { appConfigDir } from '@tauri-apps/api/path';
import { Stronghold } from '@tauri-apps/plugin-stronghold';
import { useEffect, useState } from 'react';
import { Resolver, useForm } from 'react-hook-form';
import { useNavigate } from 'react-router-dom';
import { Stronghold } from 'tauri-plugin-stronghold-api';
import { useStorage } from '@libs/storage/provider';

View File

@ -1,8 +1,8 @@
import { appConfigDir } from '@tauri-apps/api/path';
import { Stronghold } from '@tauri-apps/plugin-stronghold';
import { useEffect, useState } from 'react';
import { Resolver, useForm } from 'react-hook-form';
import { useNavigate } from 'react-router-dom';
import { Stronghold } from 'tauri-plugin-stronghold-api';
import { useStorage } from '@libs/storage/provider';

View File

@ -1,9 +1,9 @@
import { useQueryClient } from '@tanstack/react-query';
import { appConfigDir } from '@tauri-apps/api/path';
import { Stronghold } from '@tauri-apps/plugin-stronghold';
import { useState } from 'react';
import { Resolver, useForm } from 'react-hook-form';
import { useNavigate } from 'react-router-dom';
import { Stronghold } from 'tauri-plugin-stronghold-api';
import { useStorage } from '@libs/storage/provider';

View File

@ -1,9 +1,9 @@
import { appConfigDir } from '@tauri-apps/api/path';
import { Stronghold } from '@tauri-apps/plugin-stronghold';
import { getPublicKey, nip19 } from 'nostr-tools';
import { useState } from 'react';
import { Resolver, useForm } from 'react-hook-form';
import { Link, useNavigate } from 'react-router-dom';
import { Stronghold } from 'tauri-plugin-stronghold-api';
import { useStorage } from '@libs/storage/provider';

View File

@ -1,8 +1,8 @@
import { appConfigDir } from '@tauri-apps/api/path';
import { Stronghold } from '@tauri-apps/plugin-stronghold';
import { useState } from 'react';
import { Resolver, useForm } from 'react-hook-form';
import { Link, useNavigate } from 'react-router-dom';
import { Stronghold } from 'tauri-plugin-stronghold-api';
import { useStorage } from '@libs/storage/provider';

View File

@ -1,5 +1,5 @@
import { invoke } from '@tauri-apps/api';
import { message } from '@tauri-apps/plugin-dialog';
import { invoke } from '@tauri-apps/api/tauri';
import { useEffect } from 'react';
import { useNDK } from '@libs/ndk/provider';

View File

@ -60,7 +60,6 @@ export function EditProfileModal() {
const res = await fetch(verifyURL, {
method: 'GET',
timeout: 10,
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
@ -68,7 +67,7 @@ export function EditProfileModal() {
if (!res.ok) throw new Error(`Failed to fetch NIP-05 service: ${nip05}`);
const data = res.data as NIP05;
const data: NIP05 = await res.json();
if (data.names) {
if (data.names[localPath] !== db.account.pubkey) return false;
return true;
@ -144,7 +143,7 @@ export function EditProfileModal() {
Edit profile
</button>
</Dialog.Trigger>
<Dialog.Portal className="relative z-10">
<Dialog.Portal>
<Dialog.Overlay className="fixed inset-0 z-50 bg-black/80 backdrop-blur-2xl" />
<Dialog.Content className="fixed inset-0 z-50 flex min-h-full items-center justify-center">
<div className="relative h-min w-full max-w-xl rounded-xl bg-white/10 backdrop-blur-xl">

View File

@ -1,54 +0,0 @@
import { NDKCacheAdapter } from '@nostr-dev-kit/ndk';
import { NDKEvent, NDKSubscription } from '@nostr-dev-kit/ndk';
import { Store } from 'tauri-plugin-store-api';
export default class TauriAdapter implements NDKCacheAdapter {
public store: Store;
readonly locking: boolean;
constructor() {
this.store = new Store('.ndk_cache.dat');
this.locking = true;
}
public async query(subscription: NDKSubscription): Promise<void> {
const { filter } = subscription;
if (filter.authors && filter.kinds) {
const promises = [];
for (const author of filter.authors) {
for (const kind of filter.kinds) {
const key = `${author}:${kind}`;
promises.push(this.store.get(key));
}
}
const results = await Promise.all(promises);
for (const result of results) {
if (result) {
const ndkEvent = new NDKEvent(subscription.ndk, JSON.parse(result as string));
subscription.eventReceived(ndkEvent, undefined, true);
}
}
}
}
public async setEvent(event: NDKEvent): Promise<void> {
const nostrEvent = await event.toNostrEvent();
if (event.kind !== 3) {
const key = `${nostrEvent.pubkey}:${nostrEvent.kind}`;
return new Promise((resolve) => {
Promise.all([this.store.set(key, JSON.stringify(nostrEvent))]).then(() =>
resolve()
);
});
}
}
public async saveCache(): Promise<void> {
return await this.store.save();
}
}

View File

@ -30,7 +30,6 @@ export const NDKInstance = () => {
try {
const res = await fetch(`https://${url.hostname}`, {
method: 'GET',
timeout: { secs: 5, nanos: 0 },
headers: {
Accept: 'application/nostr+json',
},

View File

@ -1,8 +1,8 @@
import { NDKEvent } from '@nostr-dev-kit/ndk';
import { BaseDirectory, removeFile } from '@tauri-apps/plugin-fs';
import { Platform } from '@tauri-apps/plugin-os';
import Database from 'tauri-plugin-sql-api';
import { Stronghold } from 'tauri-plugin-stronghold-api';
import Database from '@tauri-apps/plugin-sql';
import { Stronghold } from '@tauri-apps/plugin-stronghold';
import { FULL_RELAYS } from '@stores/constants';

View File

@ -1,7 +1,7 @@
import { message } from '@tauri-apps/plugin-dialog';
import { platform } from '@tauri-apps/plugin-os';
import Database from '@tauri-apps/plugin-sql';
import { PropsWithChildren, createContext, useContext, useEffect, useState } from 'react';
import Database from 'tauri-plugin-sql-api';
import { LumeStorage } from '@libs/storage/instance';

View File

@ -30,7 +30,6 @@ export const NIP05 = memo(function NIP05({
const res = await fetch(verifyURL, {
method: 'GET',
timeout: 10,
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
@ -38,7 +37,7 @@ export const NIP05 = memo(function NIP05({
if (!res.ok) throw new Error(`Failed to fetch NIP-05 service: ${nip05}`);
const data = res.data as NIP05;
const data: NIP05 = await res.json();
if (data.names) {
if (data.names[localPath] !== pubkey) return false;
return true;

View File

@ -1,5 +1,5 @@
import { downloadDir } from '@tauri-apps/api/path';
import { download } from 'tauri-plugin-upload-api';
import { download } from '@tauri-apps/plugin-upload';
import { DownloadIcon } from '@shared/icons';

View File

@ -7,7 +7,7 @@ import {
NDKUser,
} from '@nostr-dev-kit/ndk';
import { message, open } from '@tauri-apps/plugin-dialog';
import { Body, fetch } from '@tauri-apps/plugin-http';
import { fetch } from '@tauri-apps/plugin-http';
import { LRUCache } from 'lru-cache';
import { NostrEventExt } from 'nostr-fetch';
import { nip19 } from 'nostr-tools';
@ -18,7 +18,6 @@ import { useStorage } from '@libs/storage/provider';
import { useStronghold } from '@stores/stronghold';
import { createBlobFromFile } from '@utils/createBlobFromFile';
import { nHoursAgo } from '@utils/date';
import { getMultipleRandom } from '@utils/transform';
import { NDKEventWithReplies, NostrBuildResponse } from '@utils/types';
@ -413,27 +412,19 @@ export function useNostr() {
error: 'Cancelled',
};
} else {
filepath = selected;
filepath = selected.path;
}
}
const filename = filepath.split('/').pop();
const filetype = filename.split('.').pop();
const formData = new FormData();
formData.append('file', filepath);
const fileData = await createBlobFromFile(filepath);
const res: NostrBuildResponse = await fetch(
'https://nostr.build/api/v2/upload/files',
{
method: 'POST',
timeout: 30,
headers: { 'Content-Type': 'multipart/form-data' },
body: Body.form({
fileData: {
file: fileData,
mime: `image/${filetype}`,
fileName: filename,
},
}),
body: formData,
}
);

View File

@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api/tauri';
import { invoke } from '@tauri-apps/api';
import { Opengraph } from '@utils/types';

View File

@ -94,7 +94,7 @@ export interface NDKEventWithReplies extends NDKEvent {
export interface NostrBuildResponse extends Response {
ok: boolean;
data: {
data?: {
message: string;
status: string;
data: Array<{