From 3e6ebc62cc6d16aa8734dbc1a358ea46a5c0e452 Mon Sep 17 00:00:00 2001 From: hzrd149 Date: Mon, 19 Aug 2024 11:17:02 -0500 Subject: [PATCH] add blossom uploads --- package-lock.json | 62 ++++++++++++++++++++++++ package.json | 1 + src/components/CreateMeritRequest.svelte | 25 +++++++--- src/components/CreateNewProduct.svelte | 11 ++++- src/components/RichTextArea.svelte | 48 ++++++++++++++++++ src/components/UploadMediaLink.svelte | 46 ++++++++++++++++++ src/lib/blossom/pasteImage.ts | 33 +++++++++++++ src/lib/blossom/servers.ts | 37 ++++++++++++++ src/lib/blossom/signer.ts | 16 ++++++ 9 files changed, 270 insertions(+), 9 deletions(-) create mode 100644 src/components/RichTextArea.svelte create mode 100644 src/components/UploadMediaLink.svelte create mode 100644 src/lib/blossom/pasteImage.ts create mode 100644 src/lib/blossom/servers.ts create mode 100644 src/lib/blossom/signer.ts diff --git a/package-lock.json b/package-lock.json index dc7e3c1..88b116c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "bitcoin-address-validation": "^2.2.3", "bits-ui": "^0.21.10", "bloomfilter": "^0.0.18", + "blossom-client-sdk": "^0.9.1", "clsx": "^2.1.1", "cmdk-sv": "^0.0.17", "embla-carousel-svelte": "^8.1.3", @@ -1888,6 +1889,16 @@ "resolved": "https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.18.tgz", "integrity": "sha512-CbnyHE78gY1tpXS/Ap+B0RJxKdRWCDzjBnX97UJSG8rdLv1PK8GiTWc/CCQyWu6PWVD4lUceeFrqC6Mf3nMgOA==" }, + "node_modules/blossom-client-sdk": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/blossom-client-sdk/-/blossom-client-sdk-0.9.1.tgz", + "integrity": "sha512-lEZ4uNzM09rhp7mjzmgLDC3OEgFd76GkmR90fye/IT5HVCofIT6ldBfyqBY9DcuM1S+XNa1Cu14wFg95CyH8Ag==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.4.0", + "cross-fetch": "^4.0.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2259,6 +2270,35 @@ "node": ">= 0.6" } }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5480,6 +5520,12 @@ "node": ">=6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, "node_modules/trough": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", @@ -5823,6 +5869,12 @@ "node": ">= 8" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, "node_modules/webln": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/webln/-/webln-0.3.2.tgz", @@ -5869,6 +5921,16 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index ebd7027..6371d5f 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "bitcoin-address-validation": "^2.2.3", "bits-ui": "^0.21.10", "bloomfilter": "^0.0.18", + "blossom-client-sdk": "^0.9.1", "clsx": "^2.1.1", "cmdk-sv": "^0.0.17", "embla-carousel-svelte": "^8.1.3", diff --git a/src/components/CreateMeritRequest.svelte b/src/components/CreateMeritRequest.svelte index 668477f..32f6ea0 100644 --- a/src/components/CreateMeritRequest.svelte +++ b/src/components/CreateMeritRequest.svelte @@ -4,7 +4,6 @@ import { Input } from '$lib/components/ui/input/index.js'; import { Label } from '$lib/components/ui/label/index.js'; import * as Alert from '@/components/ui/alert'; - import Textarea from '@/components/ui/textarea/textarea.svelte'; import { ndk } from '@/ndk'; import { currentUser } from '@/stores/session'; import { NDKEvent } from '@nostr-dev-kit/ndk'; @@ -15,6 +14,9 @@ import CalculateSats from './CalculateSats.svelte'; import { isGitHubIssuesOrPullUrl, parseProblem } from '@/helpers'; import Login from './Login.svelte'; + import RichTextArea from './RichTextArea.svelte'; + import UploadMediaLink from './UploadMediaLink.svelte'; + import type { BlobDescriptor } from 'blossom-client-sdk'; export let rocket: Rocket; @@ -102,6 +104,10 @@ ); }); } + + function handleUploaded(event: CustomEvent) { + solution += `\n${event.detail.url}\n`; + } @@ -123,7 +129,7 @@
-