mirror of
https://git.v0l.io/florian/bouquet.git
synced 2025-03-17 16:43:00 +01:00
chore: updated packages
This commit is contained in:
parent
0ed3c21370
commit
5e6dee66f5
1
.gitignore
vendored
1
.gitignore
vendored
@ -26,3 +26,4 @@ dist-ssr
|
||||
|
||||
package-lock.json
|
||||
bun.lockb
|
||||
.nsite/
|
3220
package-lock.json
generated
3220
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
64
package.json
64
package.json
@ -13,46 +13,46 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@catamphetamine/id3js": "^1.0.2",
|
||||
"@heroicons/react": "^2.1.5",
|
||||
"@noble/hashes": "^1.4.0",
|
||||
"@nostr-dev-kit/ndk": "^2.10.0",
|
||||
"@nostr-dev-kit/ndk-cache-dexie": "^2.5.1",
|
||||
"@tanstack/react-query": "^5.51.21",
|
||||
"@tanstack/react-query-devtools": "^5.51.21",
|
||||
"@heroicons/react": "^2.2.0",
|
||||
"@noble/hashes": "^1.6.1",
|
||||
"@nostr-dev-kit/ndk": "^2.10.7",
|
||||
"@nostr-dev-kit/ndk-cache-dexie": "^2.5.8",
|
||||
"@tanstack/react-query": "^5.62.10",
|
||||
"@tanstack/react-query-devtools": "^5.62.10",
|
||||
"add": "^2.0.6",
|
||||
"axios": "^1.7.3",
|
||||
"blossom-client-sdk": "^0.9.1",
|
||||
"axios": "^1.7.9",
|
||||
"blossom-client-sdk": "^2.1.1",
|
||||
"blurhash": "^2.0.5",
|
||||
"dayjs": "^1.11.12",
|
||||
"dayjs": "^1.11.13",
|
||||
"lodash": "^4.17.21",
|
||||
"nostr-tools": "^2.7.1",
|
||||
"p-limit": "^6.1.0",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-pdf": "^9.1.0",
|
||||
"react-router-dom": "^6.26.0"
|
||||
"nostr-tools": "^2.10.4",
|
||||
"p-limit": "^6.2.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-pdf": "^9.2.1",
|
||||
"react-router-dom": "^7.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tanstack/eslint-plugin-query": "^5.51.15",
|
||||
"@types/lodash": "^4.17.7",
|
||||
"@types/react": "^18.3.3",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"@typescript-eslint/eslint-plugin": "^7.17.0",
|
||||
"@typescript-eslint/parser": "^7.17.0",
|
||||
"@vitejs/plugin-react-swc": "^3.7.0",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"@tanstack/eslint-plugin-query": "^5.62.9",
|
||||
"@types/lodash": "^4.17.13",
|
||||
"@types/react": "^19.0.2",
|
||||
"@types/react-dom": "^19.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^8.18.2",
|
||||
"@typescript-eslint/parser": "^8.18.2",
|
||||
"@vitejs/plugin-react-swc": "^3.7.2",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"daisyui": "latest",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-plugin-react-hooks": "^4.6.2",
|
||||
"eslint-plugin-react-refresh": "^0.4.9",
|
||||
"postcss": "^8.4.40",
|
||||
"prettier": "^3.3.3",
|
||||
"tailwindcss": "^3.4.7",
|
||||
"typescript": "^5.5.4",
|
||||
"vite": "^5.3.5",
|
||||
"eslint": "^9.17.0",
|
||||
"eslint-plugin-react-hooks": "^5.1.0",
|
||||
"eslint-plugin-react-refresh": "^0.4.16",
|
||||
"postcss": "^8.4.49",
|
||||
"prettier": "^3.4.2",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"typescript": "^5.7.2",
|
||||
"vite": "^6.0.6",
|
||||
"vite-bundle-visualizer": "^1.2.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rollup/rollup-linux-x64-gnu": "4.19.2"
|
||||
"@rollup/rollup-linux-x64-gnu": "4.29.1"
|
||||
}
|
||||
}
|
||||
|
@ -185,16 +185,16 @@ const BlobList = ({ blobs, onDelete, title, className = '' }: BlobListProps) =>
|
||||
<tbody>
|
||||
{blobs.map(blob => (
|
||||
<tr
|
||||
className={`hover ${selectedBlobs[blob.sha256? blob.sha256: blob.url] ? 'selected' : ''}`}
|
||||
className={`hover ${selectedBlobs[blob.sha256 ? blob.sha256 : blob.url] ? 'selected' : ''}`}
|
||||
key={blob.sha256}
|
||||
onClick={e => handleSelectBlob(blob.sha256? blob.sha256 : blob.url, e)}
|
||||
onClick={e => handleSelectBlob(blob.sha256 ? blob.sha256 : blob.url, e)}
|
||||
>
|
||||
<td className="whitespace-nowrap w-12">
|
||||
<input
|
||||
type="checkbox"
|
||||
className="checkbox checkbox-primary checkbox-sm mr-2"
|
||||
checked={!!selectedBlobs[blob.sha256? blob.sha256 : blob.url]}
|
||||
onChange={e => handleSelectBlob(blob.sha256? blob.sha256 : blob.url, e)}
|
||||
checked={!!selectedBlobs[blob.sha256 ? blob.sha256 : blob.url]}
|
||||
onChange={e => handleSelectBlob(blob.sha256 ? blob.sha256 : blob.url, e)}
|
||||
onClick={e => e.stopPropagation()}
|
||||
/>
|
||||
<MimeTypeIcon type={blob.type} />
|
||||
|
@ -127,6 +127,7 @@ const UploadFileSelection: React.FC<UploadFileSelectionProps> = ({
|
||||
<div className="grid gap-2" style={{ gridTemplateColumns: '2em auto' }}>
|
||||
{servers.map(s => (
|
||||
<CheckBox
|
||||
key={s.name}
|
||||
name={s.name}
|
||||
disabled={uploadBusy}
|
||||
checked={transfers[s.name]?.enabled || false}
|
||||
|
@ -34,8 +34,8 @@ function Home() {
|
||||
const deleteBlob = useMutation({
|
||||
mutationFn: async ({ server, hash }: { server: Server; hash: string }) => {
|
||||
if (server.type === 'blossom') {
|
||||
const deleteAuth = await BlossomClient.getDeleteAuth(hash, signEventTemplate, 'Delete Blob');
|
||||
return BlossomClient.deleteBlob(server.url, hash, deleteAuth);
|
||||
const deleteAuth = await BlossomClient.createDeleteAuth(signEventTemplate, hash, 'Delete Blob');
|
||||
return BlossomClient.deleteBlob(server.url, hash, { auth: deleteAuth });
|
||||
} else {
|
||||
return await deleteNip96File(server, hash, signEventTemplate);
|
||||
}
|
||||
|
@ -141,7 +141,7 @@ function Upload() {
|
||||
for (const file of filesToUpload) {
|
||||
const authStartTime = Date.now();
|
||||
// TODO do this only once for each file. Currently this is called for every server
|
||||
const uploadAuth = await BlossomClient.getUploadAuth(file, signEventTemplate, 'Upload Blob');
|
||||
const uploadAuth = await BlossomClient.createUploadAuth(signEventTemplate, file, 'Upload Blob');
|
||||
console.log(`Created auth event in ${Date.now() - authStartTime} ms`, uploadAuth);
|
||||
|
||||
try {
|
||||
@ -221,9 +221,13 @@ function Upload() {
|
||||
|
||||
//console.log(transfers);
|
||||
// TODO transfer can not be accessed yet, errors are not visible here. TODO pout errors somewhere else
|
||||
// setter for error transfers has not executed when we reach here.
|
||||
const errorsTransfers = Object.keys(transfers).filter(ts => transfers[ts].enabled && !!transfers[ts].error);
|
||||
console.log('errorCheck', errorsTransfers);
|
||||
if (errorsTransfers.length == 0) {
|
||||
// Only go to the next step if no errors have occured
|
||||
// TODO why dont we detect errors here?????? INVESTIGATE
|
||||
// Should show button to "skip" despite of errors
|
||||
setUploadStep(2);
|
||||
}
|
||||
};
|
||||
|
@ -31,11 +31,11 @@ export async function fetchBlossomList(
|
||||
pubkey: string,
|
||||
signEventTemplate: (template: EventTemplate) => Promise<SignedEvent>
|
||||
): Promise<BlobDescriptor[]> {
|
||||
const listAuthEvent = await BlossomClient.getListAuth(signEventTemplate, 'List Blobs');
|
||||
const blobs = await BlossomClient.listBlobs(serverUrl, pubkey!, undefined, listAuthEvent);
|
||||
const listAuthEvent = await BlossomClient.createListAuth(signEventTemplate, 'List Blobs');
|
||||
const blobs = await BlossomClient.listBlobs(serverUrl, pubkey!, { auth: listAuthEvent });
|
||||
|
||||
// fallback to deprecated created attibute for servers that are not using 'uploaded' yet
|
||||
return blobs.map(b => ({ ...b, uploaded: b.uploaded || b.created || dayjs().unix() }));
|
||||
return blobs.map(b => ({ ...b, uploaded: b.uploaded || dayjs().unix() }));
|
||||
}
|
||||
|
||||
export const uploadBlossomBlob = async (
|
||||
@ -44,7 +44,7 @@ export const uploadBlossomBlob = async (
|
||||
signEventTemplate: (template: EventTemplate) => Promise<SignedEvent>,
|
||||
onUploadProgress?: (progressEvent: AxiosProgressEvent) => void
|
||||
) => {
|
||||
const uploadAuth = await BlossomClient.getUploadAuth(file, signEventTemplate, 'Upload Blob');
|
||||
const uploadAuth = await BlossomClient.createUploadAuth(signEventTemplate, file, 'Upload Blob');
|
||||
|
||||
const headers = {
|
||||
Accept: 'application/json',
|
||||
@ -81,7 +81,7 @@ export const mirrordBlossomBlob = async (
|
||||
if (!hash) throw 'The soureUrl does not contain a blossom hash.';
|
||||
|
||||
const blossomClient = new BlossomClient(targetServer, signEventTemplate);
|
||||
const mirrorAuth = await blossomClient.getMirrorAuth(hash, 'Upload Blob');
|
||||
const mirrorAuth = await blossomClient.createMirrorAuth(hash, 'Upload Blob');
|
||||
|
||||
const headers = {
|
||||
Accept: 'application/json',
|
||||
|
@ -1,9 +1,18 @@
|
||||
import type { EventTemplate, SignedEvent } from 'blossom-client-sdk';
|
||||
import NDK, { NDKEvent, NDKNip07Signer, NDKNip46Signer, NDKPrivateKeySigner, NDKUser } from '@nostr-dev-kit/ndk';
|
||||
import NDK, {
|
||||
NDKCacheAdapter,
|
||||
NDKEvent,
|
||||
NDKNip07Signer,
|
||||
NDKNip46Signer,
|
||||
NDKPrivateKeySigner,
|
||||
NDKUser,
|
||||
} from '@nostr-dev-kit/ndk';
|
||||
import { generateSecretKey, nip19 } from 'nostr-tools';
|
||||
import { decrypt } from 'nostr-tools/nip49';
|
||||
import { bytesToHex } from '@noble/hashes/utils';
|
||||
import React, { createContext, useContext, useEffect, useState } from 'react';
|
||||
|
||||
// @ts-expect-error ndk-cache-dexie has no type definitions
|
||||
import NDKCacheAdapterDexie from '@nostr-dev-kit/ndk-cache-dexie';
|
||||
|
||||
type NDKContextType = {
|
||||
@ -17,7 +26,7 @@ type NDKContextType = {
|
||||
publishSignedEvent: (signedEvent: SignedEvent) => Promise<void>;
|
||||
};
|
||||
|
||||
export const defaultRelays = [
|
||||
const defaultRelays = [
|
||||
// 'ws://localhost:4869',
|
||||
'wss://relay.damus.io',
|
||||
'wss://relay.nostr.band',
|
||||
@ -28,13 +37,13 @@ export const defaultRelays = [
|
||||
'wss://purplepag.es/', // needed for user profiles
|
||||
];
|
||||
|
||||
const cacheAdapter = new NDKCacheAdapterDexie({ dbName: 'ndk-cache-3' });
|
||||
const dexieAdapter = new NDKCacheAdapterDexie({ dbName: 'ndk-cache-3' });
|
||||
|
||||
const ndk = new NDK({
|
||||
cacheAdapter,
|
||||
cacheAdapter: dexieAdapter as NDKCacheAdapter,
|
||||
autoConnectUserRelays: true,
|
||||
enableOutboxModel: true,
|
||||
explicitRelayUrls: defaultRelays
|
||||
explicitRelayUrls: defaultRelays,
|
||||
});
|
||||
|
||||
export const NDKContext = createContext<NDKContextType>({
|
||||
@ -83,9 +92,6 @@ export const NDKContextProvider = ({ children }: { children: React.ReactElement
|
||||
console.log('Found user', user);
|
||||
|
||||
signer = new NDKNip46Signer(ndk, connectionString, localSigner);
|
||||
|
||||
signer.remoteUser = user;
|
||||
signer.remotePubkey = user.pubkey;
|
||||
} else if (connectionString.startsWith('bunker://')) {
|
||||
const uri = new URL(connectionString);
|
||||
|
||||
|
@ -173,7 +173,6 @@ export async function uploadNip96File(
|
||||
}
|
||||
|
||||
return {
|
||||
created: dayjs().unix(), // todo fix
|
||||
uploaded: dayjs().unix(), // todo fix
|
||||
type: getValueByTag(result.nip94_event?.tags, 'm'),
|
||||
sha256: x,
|
||||
|
Loading…
x
Reference in New Issue
Block a user