import dropbox from "../../dropbox.app.mjs";
export default {
name: "List All Files/Subfolders in a Folder",
description: "Retrieves a list of files or subfolders in a specified folder [See the documentation](https://dropbox.github.io/dropbox-sdk-js/Dropbox.html#filesListFolder__anchor)",
key: "dropbox-list-file-folders-in-a-folder",
version: "0.0.10",
type: "action",
props: {
dropbox,
path: {
propDefinition: [
dropbox,
"path",
() => ({
initialOptions: [],
filter: ({ metadata: { metadata: { [".tag"]: type } } }) => type === "folder",
}),
],
description: "Type the folder name to search for it in the user's Dropbox.",
},
recursive: {
type: "boolean",
label: "Recursive",
description: "If `true`, the list folder operation will be applied recursively to all subfolders and the response will contain contents of all subfolders.",
default: true,
},
includeDeleted: {
type: "boolean",
label: "Include Deleted",
description: "If `true`, the results will include files and folders that used to exist but were deleted.",
default: false,
},
includeHasExplicitSharedMembers: {
type: "boolean",
label: "Include has explicit shared members",
description: "If `true`, the results will include a flag for each file indicating whether or not that file has any explicit members.",
default: false,
},
includeMountedFolders: {
type: "boolean",
label: "Include mounted folders",
description: "If `true`, the results will include entries under mounted folders which includes app folder, shared folder and team folder.",
default: false,
},
includeNonDownloadableFiles: {
type: "boolean",
label: "Include non downloadable files",
description: "If `true`, include files that are not downloadable, i.e. Google Docs.",
default: true,
},
limit: {
propDefinition: [
dropbox,
"limit",
],
},
},
async run({ $ }) {
const {
limit,
path,
recursive,
includeDeleted,
includeHasExplicitSharedMembers,
includeMountedFolders,
includeNonDownloadableFiles,
} = this;
const res = await this.dropbox.listFilesFolders({
path: this.dropbox.getPath(path),
recursive,
include_deleted: includeDeleted,
include_has_explicit_shared_members: includeHasExplicitSharedMembers,
include_mounted_folders: includeMountedFolders,
include_non_downloadable_files: includeNonDownloadableFiles,
}, limit);
$.export("$summary", `Files and folders in the path ${path?.label || path} successfully fetched`);
return res;
},
};