diff --git a/src/utils/UserDataUtils.ts b/src/utils/UserDataUtils.ts index 83401bb..c5a8a5f 100644 --- a/src/utils/UserDataUtils.ts +++ b/src/utils/UserDataUtils.ts @@ -1,5 +1,6 @@ import { conf } from "../helpers/ConfigHelper"; import { join } from "path"; +import { existsSync, mkdirSync, writeFileSync } from "fs"; /** * User data utilities @@ -19,4 +20,36 @@ export function pathUserData(uri: string = "", sysPath: boolean = false) : strin return join(conf().storageURL, uri).replace(":/", "://"); else return join(conf().storagePath, uri); +} + +/** + * Prepare file creation + * + * @param userID Target user ID + * @param folderName The file directory (based on user_data folder) + */ +export function prepareFileCreation(userID: number, folderName: string) : string { + + // Determine subfolder name + let subfolder : string; + if(userID != 0) + subfolder = join(folderName, userID.toString()); + else + subfolder = folderName; + + const subfolderPath = pathUserData(subfolder, true); + + // Check if the path exists + if(!existsSync(subfolderPath)) { + + // Create the directory + mkdirSync(subfolderPath, { + recursive: true + }); + + // Block directory listing + writeFileSync(join(subfolderPath, "index.html"), ""); + } + + return subfolder; } \ No newline at end of file