mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
Fix owner checks by reusing selected video details
This commit is contained in:
1 parent
012aecef3b
commit
0944ecf32a
3 files changed
+57
-19
No files matched your search
@@ -1473,6 +1473,7 @@ class Application {
|
||||
eventId: video.id,
|
||||
index: Number.isFinite(index) ? index : null,
|
||||
triggerElement: trigger,
|
||||
video,
|
||||
});
|
||||
};
|
||||
this.videoListView.setEditHandler(this.videoListViewEditHandler);
|
||||
@@ -1485,6 +1486,7 @@ class Application {
|
||||
eventId: video.id,
|
||||
index: Number.isFinite(index) ? index : null,
|
||||
triggerElement: trigger,
|
||||
video,
|
||||
});
|
||||
};
|
||||
this.videoListView.setRevertHandler(this.videoListViewRevertHandler);
|
||||
@@ -1496,6 +1498,7 @@ class Application {
|
||||
this.handleFullDeleteVideo({
|
||||
eventId: video.id,
|
||||
index: Number.isFinite(index) ? index : null,
|
||||
video,
|
||||
});
|
||||
};
|
||||
this.videoListView.setDeleteHandler(this.videoListViewDeleteHandler);
|
||||
@@ -8754,8 +8757,9 @@ class Application {
|
||||
const isElement = (value) =>
|
||||
typeof Element !== "undefined" && value instanceof Element;
|
||||
let triggerElement = null;
|
||||
let providedVideo = null;
|
||||
if (target && typeof target === "object") {
|
||||
const eventId =
|
||||
let eventId =
|
||||
typeof target.eventId === "string" ? target.eventId.trim() : "";
|
||||
let index = null;
|
||||
if (typeof target.index === "number" && Number.isInteger(target.index)) {
|
||||
@@ -8766,18 +8770,29 @@ class Application {
|
||||
const parsed = Number.parseInt(target.index.trim(), 10);
|
||||
index = Number.isNaN(parsed) ? null : parsed;
|
||||
}
|
||||
const targetVideo = target.video;
|
||||
if (targetVideo && typeof targetVideo === "object") {
|
||||
const candidateId =
|
||||
typeof targetVideo.id === "string" ? targetVideo.id.trim() : "";
|
||||
if (candidateId) {
|
||||
providedVideo = targetVideo;
|
||||
if (!eventId) {
|
||||
eventId = candidateId;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isElement(target.triggerElement)) {
|
||||
triggerElement = target.triggerElement;
|
||||
} else if (isElement(target.trigger)) {
|
||||
triggerElement = target.trigger;
|
||||
}
|
||||
return { eventId, index, triggerElement };
|
||||
return { eventId, index, triggerElement, video: providedVideo };
|
||||
}
|
||||
|
||||
if (typeof target === "string") {
|
||||
const trimmed = target.trim();
|
||||
if (!trimmed) {
|
||||
return { eventId: "", index: null, triggerElement };
|
||||
return { eventId: "", index: null, triggerElement, video: null };
|
||||
}
|
||||
if (/^-?\d+$/.test(trimmed)) {
|
||||
const parsed = Number.parseInt(trimmed, 10);
|
||||
@@ -8785,22 +8800,24 @@ class Application {
|
||||
eventId: "",
|
||||
index: Number.isNaN(parsed) ? null : parsed,
|
||||
triggerElement,
|
||||
video: null,
|
||||
};
|
||||
}
|
||||
return { eventId: trimmed, index: null, triggerElement };
|
||||
return { eventId: trimmed, index: null, triggerElement, video: null };
|
||||
}
|
||||
|
||||
if (typeof target === "number" && Number.isInteger(target)) {
|
||||
return { eventId: "", index: target, triggerElement };
|
||||
return { eventId: "", index: target, triggerElement, video: null };
|
||||
}
|
||||
|
||||
return { eventId: "", index: null, triggerElement };
|
||||
return { eventId: "", index: null, triggerElement, video: null };
|
||||
}
|
||||
|
||||
async resolveVideoActionTarget({
|
||||
eventId = "",
|
||||
index = null,
|
||||
preloadedList,
|
||||
video: providedVideo = null,
|
||||
} = {}) {
|
||||
const trimmedEventId = typeof eventId === "string" ? eventId.trim() : "";
|
||||
const normalizedIndex =
|
||||
@@ -8808,13 +8825,28 @@ class Application {
|
||||
? index
|
||||
: null;
|
||||
|
||||
const initialVideo =
|
||||
providedVideo && typeof providedVideo === "object" ? providedVideo : null;
|
||||
const providedId =
|
||||
initialVideo && typeof initialVideo.id === "string"
|
||||
? initialVideo.id.trim()
|
||||
: "";
|
||||
const targetEventId = trimmedEventId || providedId;
|
||||
|
||||
const candidateLists = Array.isArray(preloadedList)
|
||||
? [preloadedList]
|
||||
: [];
|
||||
|
||||
if (providedId) {
|
||||
this.videosMap.set(providedId, initialVideo);
|
||||
if (!trimmedEventId || providedId === trimmedEventId) {
|
||||
return initialVideo;
|
||||
}
|
||||
}
|
||||
|
||||
for (const list of candidateLists) {
|
||||
if (trimmedEventId) {
|
||||
const match = list.find((video) => video?.id === trimmedEventId);
|
||||
if (targetEventId) {
|
||||
const match = list.find((video) => video?.id === targetEventId);
|
||||
if (match) {
|
||||
this.videosMap.set(match.id, match);
|
||||
return match;
|
||||
@@ -8833,26 +8865,26 @@ class Application {
|
||||
}
|
||||
}
|
||||
|
||||
if (trimmedEventId) {
|
||||
const fromMap = this.videosMap.get(trimmedEventId);
|
||||
if (targetEventId) {
|
||||
const fromMap = this.videosMap.get(targetEventId);
|
||||
if (fromMap) {
|
||||
return fromMap;
|
||||
}
|
||||
|
||||
const activeVideos = nostrClient.getActiveVideos();
|
||||
const fromActive = activeVideos.find((video) => video.id === trimmedEventId);
|
||||
const fromActive = activeVideos.find((video) => video.id === targetEventId);
|
||||
if (fromActive) {
|
||||
this.videosMap.set(fromActive.id, fromActive);
|
||||
return fromActive;
|
||||
}
|
||||
|
||||
const fromAll = nostrClient.allEvents.get(trimmedEventId);
|
||||
const fromAll = nostrClient.allEvents.get(targetEventId);
|
||||
if (fromAll) {
|
||||
this.videosMap.set(fromAll.id, fromAll);
|
||||
return fromAll;
|
||||
}
|
||||
|
||||
const fetched = await nostrClient.getEventById(trimmedEventId);
|
||||
const fetched = await nostrClient.getEventById(targetEventId);
|
||||
if (fetched) {
|
||||
this.videosMap.set(fetched.id, fetched);
|
||||
return fetched;
|
||||
|
||||
@@ -4436,21 +4436,24 @@ export async function renderChannelVideosFromList({
|
||||
videoCard.onEdit = ({ video: editVideo, index: editIndex }) => {
|
||||
app?.handleEditVideo?.({
|
||||
eventId: editVideo?.id || "",
|
||||
index: Number.isFinite(editIndex) ? editIndex : null
|
||||
index: Number.isFinite(editIndex) ? editIndex : null,
|
||||
video: editVideo || null
|
||||
});
|
||||
};
|
||||
|
||||
videoCard.onRevert = ({ video: revertVideo, index: revertIndex }) => {
|
||||
app?.handleRevertVideo?.({
|
||||
eventId: revertVideo?.id || "",
|
||||
index: Number.isFinite(revertIndex) ? revertIndex : null
|
||||
index: Number.isFinite(revertIndex) ? revertIndex : null,
|
||||
video: revertVideo || null
|
||||
});
|
||||
};
|
||||
|
||||
videoCard.onDelete = ({ video: deleteVideo, index: deleteIndex }) => {
|
||||
app?.handleFullDeleteVideo?.({
|
||||
eventId: deleteVideo?.id || "",
|
||||
index: Number.isFinite(deleteIndex) ? deleteIndex : null
|
||||
index: Number.isFinite(deleteIndex) ? deleteIndex : null,
|
||||
video: deleteVideo || null
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
+6
-3
@@ -1252,7 +1252,8 @@ class SubscriptionsManager {
|
||||
}
|
||||
app?.handleEditVideo?.({
|
||||
eventId: video.id,
|
||||
index: Number.isFinite(index) ? index : null
|
||||
index: Number.isFinite(index) ? index : null,
|
||||
video
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1262,7 +1263,8 @@ class SubscriptionsManager {
|
||||
}
|
||||
app?.handleRevertVideo?.({
|
||||
eventId: video.id,
|
||||
index: Number.isFinite(index) ? index : null
|
||||
index: Number.isFinite(index) ? index : null,
|
||||
video
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1272,7 +1274,8 @@ class SubscriptionsManager {
|
||||
}
|
||||
app?.handleFullDeleteVideo?.({
|
||||
eventId: video.id,
|
||||
index: Number.isFinite(index) ? index : null
|
||||
index: Number.isFinite(index) ? index : null,
|
||||
video
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user