mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
Merge pull request #2723 from PR0M3TH3AN/refactor-revert-modal-dtag-18208308647871133769
🧹 Refactor RevertModal to use shared d-tag extraction utility
This commit is contained in:
2 files changed
+66
No files matched your search
@@ -1,3 +1,4 @@
|
||||
import { getDTagValueFromTags } from "../../nostr/nip71.js";
|
||||
import { Nip71FormManager } from "./nip71FormManager.js";
|
||||
import { createModalAccessibility } from "./modalAccessibility.js";
|
||||
import { getDTagValueFromTags } from "../../nostr/nip71.js";
|
||||
@@ -595,6 +596,24 @@ export class RevertModal {
|
||||
return;
|
||||
}
|
||||
|
||||
const createdAt = typeof version.created_at === "number" ? version.created_at : 0;
|
||||
const absolute = this.formatAbsoluteTimestamp
|
||||
? this.formatAbsoluteTimestamp(createdAt)
|
||||
: "";
|
||||
const relative = this.formatTimeAgo ? this.formatTimeAgo(createdAt) : "";
|
||||
const description =
|
||||
typeof version.description === "string" ? version.description : "";
|
||||
const thumbnail =
|
||||
typeof version.thumbnail === "string" ? version.thumbnail.trim() : "";
|
||||
const url = typeof version.url === "string" ? version.url.trim() : "";
|
||||
const magnet =
|
||||
typeof version.magnet === "string" ? version.magnet.trim() : "";
|
||||
const rawMagnet =
|
||||
typeof version.rawMagnet === "string" ? version.rawMagnet.trim() : "";
|
||||
const displayMagnet = magnet || rawMagnet;
|
||||
const isPrivate = version.isPrivate === true;
|
||||
const dTagValue = getDTagValueFromTags(version.tags);
|
||||
|
||||
const nip71Metadata = this.buildNip71DisplayMetadata(version);
|
||||
const dTagValue = getDTagValueFromTags(version.tags);
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import { test } from 'node:test';
|
||||
import { getDTagValueFromTags } from '../../js/nostr/nip71.js';
|
||||
|
||||
test('getDTagValueFromTags utility', async (t) => {
|
||||
await t.test('returns empty string for invalid inputs', () => {
|
||||
assert.equal(getDTagValueFromTags(null), '');
|
||||
assert.equal(getDTagValueFromTags(undefined), '');
|
||||
assert.equal(getDTagValueFromTags({}), '');
|
||||
assert.equal(getDTagValueFromTags(''), '');
|
||||
assert.equal(getDTagValueFromTags(123), '');
|
||||
});
|
||||
|
||||
await t.test('returns empty string if no d-tag present', () => {
|
||||
const tags = [['p', 'pubkey'], ['e', 'event-id']];
|
||||
assert.equal(getDTagValueFromTags(tags), '');
|
||||
});
|
||||
|
||||
await t.test('returns correct value for single d-tag', () => {
|
||||
const tags = [['d', 'test-value']];
|
||||
assert.equal(getDTagValueFromTags(tags), 'test-value');
|
||||
});
|
||||
|
||||
await t.test('returns first value for multiple d-tags', () => {
|
||||
const tags = [['d', 'first'], ['d', 'second']];
|
||||
assert.equal(getDTagValueFromTags(tags), 'first');
|
||||
});
|
||||
|
||||
await t.test('skips invalid d-tags (malformed)', () => {
|
||||
const tags = [
|
||||
['d'], // missing value
|
||||
['d', 123], // value not string
|
||||
['d', null], // value not string
|
||||
'invalid', // tag not array
|
||||
['d', 'valid'],
|
||||
];
|
||||
assert.equal(getDTagValueFromTags(tags), 'valid');
|
||||
});
|
||||
|
||||
await t.test('handles empty d-tag value correctly', () => {
|
||||
// nip71 implementation returns empty string if value is empty string, OR skips it?
|
||||
// Implementation: if (typeof tag[1] === "string" && tag[1]) { return tag[1]; }
|
||||
// So it skips empty strings.
|
||||
const tags = [['d', ''], ['d', 'fallback']];
|
||||
assert.equal(getDTagValueFromTags(tags), 'fallback');
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user