diff --git a/packages/app/src/Login/Preferences.ts b/packages/app/src/Login/Preferences.ts
index 43f6f2a4..1626dcf6 100644
--- a/packages/app/src/Login/Preferences.ts
+++ b/packages/app/src/Login/Preferences.ts
@@ -45,7 +45,7 @@ export interface UserPreferences {
/**
* File uploading service to upload attachments to
*/
- fileUploader: "void.cat" | "nostr.build" | "nostrimg.com" | "void.cat-NIP96";
+ fileUploader: "void.cat" | "nostr.build" | "nostrimg.com" | "void.cat-NIP96" | "nostrcheck.me";
/**
* Use imgproxy to optimize images
diff --git a/packages/app/src/Pages/settings/Preferences.tsx b/packages/app/src/Pages/settings/Preferences.tsx
index 6d7e0d33..0cbab73f 100644
--- a/packages/app/src/Pages/settings/Preferences.tsx
+++ b/packages/app/src/Pages/settings/Preferences.tsx
@@ -474,6 +474,7 @@ const PreferencesPage = () => {
+
diff --git a/packages/app/src/Upload/Nip96.ts b/packages/app/src/Upload/Nip96.ts
index bb815f23..e419bf4b 100644
--- a/packages/app/src/Upload/Nip96.ts
+++ b/packages/app/src/Upload/Nip96.ts
@@ -13,6 +13,11 @@ export class Nip96Uploader implements Uploader {
return [];
}
+ async loadInfo() {
+ const rsp = await fetch(this.url);
+ return (await rsp.json()) as Nip96Info;
+ }
+
async upload(file: File | Blob, filename: string): Promise {
throwIfOffline();
const auth = async (url: string, method: string) => {
@@ -22,18 +27,19 @@ export class Nip96Uploader implements Uploader {
return `Nostr ${base64.encode(new TextEncoder().encode(JSON.stringify(auth)))}`;
};
+ const info = await this.loadInfo();
const fd = new FormData();
fd.append("size", file.size.toString());
fd.append("alt", filename);
fd.append("media_type", file.type);
fd.append("file", file);
- const rsp = await fetch(this.url, {
+ const rsp = await fetch(info.api_url, {
body: fd,
method: "POST",
headers: {
accept: "application/json",
- authorization: await auth(this.url, "POST"),
+ authorization: await auth(info.api_url, "POST"),
},
});
if (rsp.ok) {
@@ -62,6 +68,11 @@ export class Nip96Uploader implements Uploader {
}
}
+export interface Nip96Info {
+ api_url: string;
+ download_url?: string;
+}
+
export interface Nip96Result {
status: string;
message: string;
diff --git a/packages/app/src/Upload/index.ts b/packages/app/src/Upload/index.ts
index ad818125..e51a16cf 100644
--- a/packages/app/src/Upload/index.ts
+++ b/packages/app/src/Upload/index.ts
@@ -78,6 +78,9 @@ export default function useFileUpload(): Uploader {
case "void.cat-NIP96": {
return new Nip96Uploader("https://void.cat/nostr", unwrap(publisher));
}
+ case "nostrcheck.me": {
+ return new Nip96Uploader("https://nostrcheck.me/api/v2/nip96", unwrap(publisher));
+ }
case "nostrimg.com": {
return {
upload: NostrImg,