Skip to content

Commit

Permalink
Don't try transfer if dropped on focused item
Browse files Browse the repository at this point in the history
  • Loading branch information
DustinBrett committed Feb 16, 2025
1 parent 5367c8d commit 997dfd9
Showing 1 changed file with 58 additions and 52 deletions.
110 changes: 58 additions & 52 deletions components/system/Files/FileManager/useFileDrop.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,68 +95,74 @@ const useFileDrop = ({
(event: DragEvent | React.DragEvent<HTMLElement>): void => {
if (MOUNTABLE_EXTENSIONS.has(getExtension(directory))) return;

if (updatePositions && event.target instanceof HTMLElement) {
const { files, text } = getEventData(event as React.DragEvent);
if (event.target instanceof HTMLElement) {
if (event.target.closest(".focus-within")?.contains(event.target)) {
return;
}

if (files.length === 0 && text === "") return;
if (updatePositions) {
const { files, text } = getEventData(event as React.DragEvent);

const checkUpdatableIcons = async (): Promise<void> => {
const dragPosition = {
x: event.clientX,
y: event.clientY,
} as DragPosition;
if (files.length === 0 && text === "") return;

let fileEntries: string[] = [];
const checkUpdatableIcons = async (): Promise<void> => {
const dragPosition = {
x: event.clientX,
y: event.clientY,
} as DragPosition;

if (text) {
try {
fileEntries = JSON.parse(text) as string[];
} catch {
// Ignore failed JSON parsing
}
let fileEntries: string[] = [];

if (!Array.isArray(fileEntries)) return;
if (text) {
try {
fileEntries = JSON.parse(text) as string[];
} catch {
// Ignore failed JSON parsing
}

const [firstEntry] = fileEntries;
if (!Array.isArray(fileEntries)) return;

if (!firstEntry) return;
const [firstEntry] = fileEntries;

if (
firstEntry.startsWith(directory) &&
basename(firstEntry) === relative(directory, firstEntry)
) {
return;
}
if (!firstEntry) return;

fileEntries = fileEntries.map((entry) => basename(entry));
} else if (files instanceof FileList) {
fileEntries = [...files].map((file) => file.name);
} else {
fileEntries = [...files]
.map((file) => file.getAsFile()?.name || "")
.filter(Boolean);
}
if (
firstEntry.startsWith(directory) &&
basename(firstEntry) === relative(directory, firstEntry)
) {
return;
}

fileEntries = await getIteratedNames(
fileEntries,
directory,
iconPositions,
exists
);

updateIconPositions(
directory,
event.target as HTMLElement,
iconPositions,
sortOrders,
dragPosition,
fileEntries,
setIconPositions,
exists
);
};

checkUpdatableIcons();
fileEntries = fileEntries.map((entry) => basename(entry));
} else if (files instanceof FileList) {
fileEntries = [...files].map((file) => file.name);
} else {
fileEntries = [...files]
.map((file) => file.getAsFile()?.name || "")
.filter(Boolean);
}

fileEntries = await getIteratedNames(
fileEntries,
directory,
iconPositions,
exists
);

updateIconPositions(
directory,
event.target as HTMLElement,
iconPositions,
sortOrders,
dragPosition,
fileEntries,
setIconPositions,
exists
);
};

checkUpdatableIcons();
}
}

const hasUpdateId = typeof id === "string";
Expand Down

0 comments on commit 997dfd9

Please sign in to comment.