add button to erase deleted notes now into the options

This commit is contained in:
zadam 2020-12-06 22:11:49 +01:00
parent 58555b3660
commit e56979c482
6 changed files with 33 additions and 5 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "trilium", "name": "trilium",
"version": "0.45.5", "version": "0.45.6",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -51,6 +51,12 @@ const TPL = `
<label for="erase-notes-after-time-in-seconds">Erase notes after X seconds</label> <label for="erase-notes-after-time-in-seconds">Erase notes after X seconds</label>
<input class="form-control" id="erase-notes-after-time-in-seconds" type="number" min="0"> <input class="form-control" id="erase-notes-after-time-in-seconds" type="number" min="0">
</div> </div>
<p>You can also trigger erasing manually:</p>
<button id="erase-deleted-notes-now-button" class="btn">Erase deleted notes now</button>
<br/><br/>
</div> </div>
<div> <div>
@ -117,6 +123,13 @@ export default class ProtectedSessionOptions {
return false; return false;
}); });
this.$eraseDeletedNotesButton = $("#erase-deleted-notes-now-button");
this.$eraseDeletedNotesButton.on('click', () => {
server.post('notes/erase-deleted-notes-now').then(() => {
toastService.showMessage("Deleted notes have been erased.");
});
});
this.$protectedSessionTimeout = $("#protected-session-timeout-in-seconds"); this.$protectedSessionTimeout = $("#protected-session-timeout-in-seconds");
this.$protectedSessionTimeout.on('change', () => { this.$protectedSessionTimeout.on('change', () => {

View File

@ -193,6 +193,10 @@ function duplicateSubtree(req) {
return noteService.duplicateSubtree(noteId, parentNoteId); return noteService.duplicateSubtree(noteId, parentNoteId);
} }
function eraseDeletedNotesNow() {
noteService.eraseDeletedNotesNow();
}
module.exports = { module.exports = {
getNote, getNote,
updateNote, updateNote,
@ -204,5 +208,6 @@ module.exports = {
setNoteTypeMime, setNoteTypeMime,
getRelationMap, getRelationMap,
changeTitle, changeTitle,
duplicateSubtree duplicateSubtree,
eraseDeletedNotesNow
}; };

View File

@ -38,6 +38,8 @@ function saveSyncSeed(req) {
}] }]
} }
log.info("Saved sync seed.");
sqlInit.createDatabaseForSync(options); sqlInit.createDatabaseForSync(options);
} }

View File

@ -153,6 +153,7 @@ function register(app) {
route(GET, '/api/notes/:noteId/revisions/:noteRevisionId/download', [auth.checkApiAuthOrElectron], noteRevisionsApiRoute.downloadNoteRevision); route(GET, '/api/notes/:noteId/revisions/:noteRevisionId/download', [auth.checkApiAuthOrElectron], noteRevisionsApiRoute.downloadNoteRevision);
apiRoute(PUT, '/api/notes/:noteId/restore-revision/:noteRevisionId', noteRevisionsApiRoute.restoreNoteRevision); apiRoute(PUT, '/api/notes/:noteId/restore-revision/:noteRevisionId', noteRevisionsApiRoute.restoreNoteRevision);
apiRoute(POST, '/api/notes/relation-map', notesApiRoute.getRelationMap); apiRoute(POST, '/api/notes/relation-map', notesApiRoute.getRelationMap);
apiRoute(POST, '/api/notes/erase-deleted-notes-now', notesApiRoute.eraseDeletedNotesNow);
apiRoute(PUT, '/api/notes/:noteId/change-title', notesApiRoute.changeTitle); apiRoute(PUT, '/api/notes/:noteId/change-title', notesApiRoute.changeTitle);
apiRoute(POST, '/api/notes/:noteId/duplicate/:parentNoteId', notesApiRoute.duplicateSubtree); apiRoute(POST, '/api/notes/:noteId/duplicate/:parentNoteId', notesApiRoute.duplicateSubtree);

View File

@ -668,8 +668,10 @@ function scanForLinks(note) {
} }
} }
function eraseDeletedNotes() { function eraseDeletedNotes(eraseNotesAfterTimeInSeconds = null) {
const eraseNotesAfterTimeInSeconds = optionService.getOptionInt('eraseNotesAfterTimeInSeconds'); if (eraseNotesAfterTimeInSeconds === null) {
eraseNotesAfterTimeInSeconds = optionService.getOptionInt('eraseNotesAfterTimeInSeconds');
}
const cutoffDate = new Date(Date.now() - eraseNotesAfterTimeInSeconds * 1000); const cutoffDate = new Date(Date.now() - eraseNotesAfterTimeInSeconds * 1000);
@ -719,6 +721,10 @@ function eraseDeletedNotes() {
log.info(`Erased notes: ${JSON.stringify(noteIdsToErase)}`); log.info(`Erased notes: ${JSON.stringify(noteIdsToErase)}`);
} }
function eraseDeletedNotesNow() {
eraseDeletedNotes(0);
}
// do a replace in str - all keys should be replaced by the corresponding values // do a replace in str - all keys should be replaced by the corresponding values
function replaceByMap(str, mapObj) { function replaceByMap(str, mapObj) {
const re = new RegExp(Object.keys(mapObj).join("|"),"g"); const re = new RegExp(Object.keys(mapObj).join("|"),"g");
@ -841,5 +847,6 @@ module.exports = {
duplicateSubtree, duplicateSubtree,
duplicateSubtreeWithoutRoot, duplicateSubtreeWithoutRoot,
getUndeletedParentBranches, getUndeletedParentBranches,
triggerNoteTitleChanged triggerNoteTitleChanged,
eraseDeletedNotesNow
}; };