Seep in paths
This commit is contained in:
parent
814803edb4
commit
de783b6158
|
@ -112,11 +112,28 @@ export default function Uploader(props: Props) {
|
||||||
const [importSuggestion, setImportSuggestion] = useState<ImportSuggestion>(
|
const [importSuggestion, setImportSuggestion] = useState<ImportSuggestion>(
|
||||||
DEFAULT_IMPORT_SUGGESTION,
|
DEFAULT_IMPORT_SUGGESTION,
|
||||||
);
|
);
|
||||||
|
/**
|
||||||
|
* Paths of file to upload that we've received over the IPC bridge from the
|
||||||
|
* code running in the Node.js layer of our desktop app.
|
||||||
|
*/
|
||||||
|
const [desktopFilePaths, setDesktopFilePaths] = useState<
|
||||||
|
string[] | undefined
|
||||||
|
>();
|
||||||
const [electronFiles, setElectronFiles] = useState<ElectronFile[]>(null);
|
const [electronFiles, setElectronFiles] = useState<ElectronFile[]>(null);
|
||||||
const [webFiles, setWebFiles] = useState([]);
|
const [webFiles, setWebFiles] = useState([]);
|
||||||
|
|
||||||
const toUploadFiles = useRef<File[] | ElectronFile[]>(null);
|
const toUploadFiles = useRef<
|
||||||
|
File[] | ElectronFile[] | string[] | undefined | null
|
||||||
|
>(null);
|
||||||
|
/**
|
||||||
|
* If true, then the next upload we'll be processing was initiated by our
|
||||||
|
* desktop app.
|
||||||
|
*/
|
||||||
const isPendingDesktopUpload = useRef(false);
|
const isPendingDesktopUpload = useRef(false);
|
||||||
|
/**
|
||||||
|
* If set, this will be the name of the collection that our desktop app
|
||||||
|
* wishes for us to upload into.
|
||||||
|
*/
|
||||||
const pendingDesktopUploadCollectionName = useRef<string>("");
|
const pendingDesktopUploadCollectionName = useRef<string>("");
|
||||||
// This is set when the user choses a type to upload from the upload type selector dialog
|
// This is set when the user choses a type to upload from the upload type selector dialog
|
||||||
const pickedUploadType = useRef<PICKED_UPLOAD_TYPE>(null);
|
const pickedUploadType = useRef<PICKED_UPLOAD_TYPE>(null);
|
||||||
|
@ -181,13 +198,10 @@ export default function Uploader(props: Props) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
const upload = (collectionName: string, filePaths: string[]) => {
|
const upload = (collectionName: string, filePaths: string[]) => {
|
||||||
isPendingDesktopUpload.current = true;
|
isPendingDesktopUpload.current = true;
|
||||||
pendingDesktopUploadCollectionName.current = collectionName;
|
pendingDesktopUploadCollectionName.current = collectionName;
|
||||||
|
setDesktopFilePaths(filePaths);
|
||||||
// TODO (MR):
|
|
||||||
// setElectronFiles(filePaths);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const requestSyncWithRemote = () => {
|
const requestSyncWithRemote = () => {
|
||||||
|
@ -284,18 +298,22 @@ export default function Uploader(props: Props) {
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (
|
if (
|
||||||
|
desktopFilePaths?.length > 0 ||
|
||||||
electronFiles?.length > 0 ||
|
electronFiles?.length > 0 ||
|
||||||
webFiles?.length > 0 ||
|
webFiles?.length > 0 ||
|
||||||
appContext.sharedFiles?.length > 0
|
appContext.sharedFiles?.length > 0
|
||||||
) {
|
) {
|
||||||
log.info(
|
log.info(
|
||||||
`upload request type:${
|
`upload request type: ${
|
||||||
electronFiles?.length > 0
|
desktopFilePaths?.length > 0
|
||||||
|
? "desktopFilePaths"
|
||||||
|
: electronFiles?.length > 0
|
||||||
? "electronFiles"
|
? "electronFiles"
|
||||||
: webFiles?.length > 0
|
: webFiles?.length > 0
|
||||||
? "webFiles"
|
? "webFiles"
|
||||||
: "sharedFiles"
|
: "sharedFiles"
|
||||||
} count ${
|
} count ${
|
||||||
|
desktopFilePaths?.length ??
|
||||||
electronFiles?.length ??
|
electronFiles?.length ??
|
||||||
webFiles?.length ??
|
webFiles?.length ??
|
||||||
appContext?.sharedFiles.length
|
appContext?.sharedFiles.length
|
||||||
|
@ -326,9 +344,13 @@ export default function Uploader(props: Props) {
|
||||||
toUploadFiles.current = appContext.sharedFiles;
|
toUploadFiles.current = appContext.sharedFiles;
|
||||||
appContext.resetSharedFiles();
|
appContext.resetSharedFiles();
|
||||||
} else if (electronFiles?.length > 0) {
|
} else if (electronFiles?.length > 0) {
|
||||||
// File selection from desktop app
|
// File selection from desktop app - deprecated
|
||||||
toUploadFiles.current = electronFiles;
|
toUploadFiles.current = electronFiles;
|
||||||
setElectronFiles([]);
|
setElectronFiles([]);
|
||||||
|
} else if (desktopFilePaths && desktopFilePaths.length > 0) {
|
||||||
|
// File selection from our desktop app
|
||||||
|
toUploadFiles.current = desktopFilePaths;
|
||||||
|
setDesktopFilePaths(undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
toUploadFiles.current = filterOutSystemFiles(toUploadFiles.current);
|
toUploadFiles.current = filterOutSystemFiles(toUploadFiles.current);
|
||||||
|
@ -339,7 +361,9 @@ export default function Uploader(props: Props) {
|
||||||
|
|
||||||
const importSuggestion = getImportSuggestion(
|
const importSuggestion = getImportSuggestion(
|
||||||
pickedUploadType.current,
|
pickedUploadType.current,
|
||||||
toUploadFiles.current.map((file) => file["path"]),
|
toUploadFiles.current.map((file) =>
|
||||||
|
typeof file == "string" ? file : file["path"],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
setImportSuggestion(importSuggestion);
|
setImportSuggestion(importSuggestion);
|
||||||
|
|
||||||
|
@ -352,7 +376,7 @@ export default function Uploader(props: Props) {
|
||||||
pickedUploadType.current = null;
|
pickedUploadType.current = null;
|
||||||
props.setLoading(false);
|
props.setLoading(false);
|
||||||
}
|
}
|
||||||
}, [webFiles, appContext.sharedFiles, electronFiles]);
|
}, [webFiles, appContext.sharedFiles, electronFiles, desktopFilePaths]);
|
||||||
|
|
||||||
const resumeDesktopUpload = async (
|
const resumeDesktopUpload = async (
|
||||||
type: PICKED_UPLOAD_TYPE,
|
type: PICKED_UPLOAD_TYPE,
|
||||||
|
@ -636,7 +660,7 @@ export default function Uploader(props: Props) {
|
||||||
try {
|
try {
|
||||||
if (accessedThroughSharedURL) {
|
if (accessedThroughSharedURL) {
|
||||||
log.info(
|
log.info(
|
||||||
`uploading files to pulbic collection - ${props.uploadCollection.name} - ${props.uploadCollection.id}`,
|
`uploading files to public collection - ${props.uploadCollection.name} - ${props.uploadCollection.id}`,
|
||||||
);
|
);
|
||||||
const uploaderName = await getPublicCollectionUploaderName(
|
const uploaderName = await getPublicCollectionUploaderName(
|
||||||
getPublicCollectionUID(
|
getPublicCollectionUID(
|
||||||
|
|
|
@ -205,12 +205,19 @@ export function groupFilesBasedOnParentFolder(
|
||||||
return collectionNameToFilesMap;
|
return collectionNameToFilesMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function filterOutSystemFiles(files: File[] | ElectronFile[]) {
|
export function filterOutSystemFiles(
|
||||||
|
files: File[] | ElectronFile[] | string[] | undefined | null,
|
||||||
|
) {
|
||||||
|
if (!files) return files;
|
||||||
|
|
||||||
if (files[0] instanceof File) {
|
if (files[0] instanceof File) {
|
||||||
const browserFiles = files as File[];
|
const browserFiles = files as File[];
|
||||||
return browserFiles.filter((file) => {
|
return browserFiles.filter((file) => {
|
||||||
return !isSystemFile(file);
|
return !isSystemFile(file);
|
||||||
});
|
});
|
||||||
|
} else if (typeof files[0] == "string") {
|
||||||
|
const filePaths = files as string[];
|
||||||
|
return filePaths.filter((path) => !isHiddenFile(path));
|
||||||
} else {
|
} else {
|
||||||
const electronFiles = files as ElectronFile[];
|
const electronFiles = files as ElectronFile[];
|
||||||
return electronFiles.filter((file) => {
|
return electronFiles.filter((file) => {
|
||||||
|
|
Loading…
Reference in a new issue