@launchmenu/applet-notes
Version:
An applet to make short notes
76 lines • 8.53 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupNotes = void 0;
const fs_1 = require("fs");
const path_1 = __importDefault(require("path"));
const core_1 = require("@launchmenu/core");
const settings_1 = require("../settings");
const uuid_1 = require("uuid");
/**
* Sets up the notes
* @param config The configuration for the notes to add
* @returns A function that can be invoked to restore the previous notes
*/
async function setupNotes({ LM, notes, categories, }) {
// Obtain the notes json file
const { notesDir } = LM.getSettingsManager().getSettingsContext().get(settings_1.settings);
const dir = notesDir.get();
const noteFilesDir = path_1.default.join(dir, "notes");
const notesPath = path_1.default.join(dir, "notes.json");
// Rename the old notes file
const notesID = (await fs_1.promises.readdir(dir))
.map(dir => dir.match(/notes-BU(\d*)\.json/))
.reduce((cur, match) => Math.max(match ? Number(match[1]) : 0, cur), 0) + 1;
const notesBUPath = path_1.default.join(dir, `notes-BU${notesID}.json`);
const prevNotesPath = path_1.default.join(dir, notesID == 1 ? "notes.json" : `notes-BU${notesID - 1}.json`);
if (fs_1.existsSync(prevNotesPath))
await fs_1.promises.rename(prevNotesPath, notesBUPath);
// Rename the old notes dir
const dirID = (await fs_1.promises.readdir(dir))
.map(dir => dir.match(/notes-BU(\d*)$/))
.reduce((cur, match) => Math.max(match ? Number(match[1]) : 0, cur), 0) + 1;
const dirBUPath = path_1.default.join(dir, `notes-BU${dirID}`);
const prevDirPath = path_1.default.join(dir, dirID == 1 ? "notes" : `notes-BU${dirID - 1}`);
if (fs_1.existsSync(prevDirPath))
await fs_1.promises.rename(prevDirPath, dirBUPath);
// Create files for each of the notes
if (!fs_1.existsSync(noteFilesDir))
await fs_1.promises.mkdir(noteFilesDir, { recursive: true });
const noteLocations = await Promise.all(notes.map(async ({ content, ...rest }, i) => {
const ID = uuid_1.v4();
const location = path_1.default.join(noteFilesDir, `${ID}.txt`);
await fs_1.promises.writeFile(location, content);
return { ID, location, modifiedAt: Date.now() + i * 10, ...rest };
}));
// Store the notes and categories in the notes file
const notesContent = JSON.stringify({ notes: noteLocations, categories }, null, 4);
await fs_1.promises.writeFile(notesPath, notesContent);
// Return the function that can be used to restore the notes
return async () => {
await core_1.wait(1000);
if (fs_1.existsSync(notesBUPath)) {
const nextScriptStarted = fs_1.existsSync(path_1.default.join(dir, `notes-BU${notesID + 1}.json`));
if (!nextScriptStarted) {
// Rename isn't picked up by the file watcher :/
const content = await fs_1.promises.readFile(notesBUPath, "utf8");
await fs_1.promises.writeFile(notesPath, content);
await fs_1.promises.unlink(notesBUPath);
await core_1.wait(50);
}
}
if (fs_1.existsSync(dirBUPath)) {
const nextScriptStarted = fs_1.existsSync(path_1.default.join(dir, `notes-BU${dirID + 1}`));
if (!nextScriptStarted) {
await fs_1.promises.rmdir(noteFilesDir, { recursive: true });
await core_1.wait(50);
await fs_1.promises.rename(dirBUPath, noteFilesDir);
await core_1.wait(50);
}
}
};
}
exports.setupNotes = setupNotes;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBOb3Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWNvcmRTY3JpcHRzL3NldHVwTm90ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsMkJBQThDO0FBQzlDLGdEQUF3QjtBQUN4QiwyQ0FBa0Q7QUFDbEQsMENBQXFDO0FBQ3JDLCtCQUFnQztBQUVoQzs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLFVBQVUsQ0FBQyxFQUM3QixFQUFFLEVBQ0YsS0FBSyxFQUNMLFVBQVUsR0FVYjtJQUNHLDZCQUE2QjtJQUM3QixNQUFNLEVBQUMsUUFBUSxFQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLENBQUMsbUJBQVEsQ0FBQyxDQUFDO0lBQzlFLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUUzQixNQUFNLFlBQVksR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUUvQyw0QkFBNEI7SUFDNUIsTUFBTSxPQUFPLEdBQ1QsQ0FBQyxNQUFNLGFBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQzVDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFD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
;