mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-11-05 20:32:27 +00:00
feat: pass nip71 metadata through publish pipeline
This commit is contained in:
1 parent
1d8fa2d0c0
commit
9041f9c0b7
5 files changed
+440
-28
No files matched your search
@@ -125,6 +125,73 @@ class R2Service {
|
||||
this.emit("uploadProgress", { fraction });
|
||||
}
|
||||
|
||||
buildNip71MetadataForUpload(existingMetadata, { publicUrl = "", file = null } = {}) {
|
||||
const base =
|
||||
existingMetadata && typeof existingMetadata === "object"
|
||||
? { ...existingMetadata }
|
||||
: {};
|
||||
|
||||
const cloneImetaVariant = (variant) => {
|
||||
if (!variant || typeof variant !== "object") {
|
||||
return {
|
||||
m: "",
|
||||
dim: "",
|
||||
url: "",
|
||||
x: "",
|
||||
image: [],
|
||||
fallback: [],
|
||||
service: [],
|
||||
autoGenerated: true,
|
||||
};
|
||||
}
|
||||
return {
|
||||
...variant,
|
||||
image: Array.isArray(variant.image) ? [...variant.image] : [],
|
||||
fallback: Array.isArray(variant.fallback) ? [...variant.fallback] : [],
|
||||
service: Array.isArray(variant.service) ? [...variant.service] : [],
|
||||
};
|
||||
};
|
||||
|
||||
const imetaList = Array.isArray(base.imeta)
|
||||
? base.imeta.map((variant) => cloneImetaVariant(variant))
|
||||
: [];
|
||||
|
||||
if (!imetaList.length) {
|
||||
imetaList.push({
|
||||
m: "",
|
||||
dim: "",
|
||||
url: "",
|
||||
x: "",
|
||||
image: [],
|
||||
fallback: [],
|
||||
service: [],
|
||||
autoGenerated: true,
|
||||
});
|
||||
} else {
|
||||
const primary = imetaList[0];
|
||||
if (!Array.isArray(primary.image)) primary.image = [];
|
||||
if (!Array.isArray(primary.fallback)) primary.fallback = [];
|
||||
if (!Array.isArray(primary.service)) primary.service = [];
|
||||
}
|
||||
|
||||
const primaryVariant = imetaList[0];
|
||||
const normalizedUrl =
|
||||
typeof publicUrl === "string" ? publicUrl.trim() : String(publicUrl || "").trim();
|
||||
if (normalizedUrl && (!primaryVariant.url || !String(primaryVariant.url).trim())) {
|
||||
primaryVariant.url = normalizedUrl;
|
||||
}
|
||||
|
||||
const mimeType =
|
||||
file && typeof file.type === "string" ? file.type.trim() : "";
|
||||
if (mimeType && (!primaryVariant.m || !String(primaryVariant.m).trim())) {
|
||||
primaryVariant.m = mimeType;
|
||||
}
|
||||
|
||||
base.imeta = imetaList;
|
||||
|
||||
return base;
|
||||
}
|
||||
|
||||
populateCloudflareSettingsInputs(settings) {
|
||||
const data = {
|
||||
accountId: settings?.accountId || "",
|
||||
@@ -704,6 +771,14 @@ class R2Service {
|
||||
enableComments,
|
||||
};
|
||||
|
||||
const mergedNip71 = this.buildNip71MetadataForUpload(metadata?.nip71, {
|
||||
publicUrl,
|
||||
file,
|
||||
});
|
||||
if (mergedNip71 && Object.keys(mergedNip71).length) {
|
||||
payload.nip71 = mergedNip71;
|
||||
}
|
||||
|
||||
const published = await publishVideoNote(payload, {
|
||||
onSuccess: () => {
|
||||
if (typeof onReset === "function") {
|
||||
|
||||
Reference in new issue
Block a user