Notes/src/services/cls.js

97 lines
1.9 KiB
JavaScript
Raw Normal View History

const clsHooked = require('cls-hooked');
const namespace = clsHooked.createNamespace("trilium");
2020-06-20 12:31:38 +02:00
function init(callback) {
return namespace.runAndReturn(callback);
}
function wrap(callback) {
2020-09-01 00:05:19 +02:00
return () => {
try {
init(callback);
}
catch (e) {
console.log(`Error occurred: ${e.message}: ${e.stack}`);
}
}
}
2020-06-15 17:56:53 +02:00
function get(key) {
return namespace.get(key);
}
function set(key, value) {
namespace.set(key, value);
}
2020-11-23 22:52:48 +01:00
function getHoistedNoteId() {
2020-12-14 23:59:05 +01:00
return namespace.get('hoistedNoteId') || 'root';
2020-11-23 22:52:48 +01:00
}
function getComponentId() {
return namespace.get('componentId');
2018-03-30 13:20:36 -04:00
}
function getLocalNowDateTime() {
return namespace.get('localNowDateTime');
}
function disableEntityEvents() {
namespace.set('disableEntityEvents', true);
}
function enableEntityEvents() {
namespace.set('disableEntityEvents', false);
}
function isEntityEventsDisabled() {
return !!namespace.get('disableEntityEvents');
}
function getAndClearEntityChangeIds() {
const entityChangeIds = namespace.get('entityChangeIds') || [];
namespace.set('entityChangeIds', []);
return entityChangeIds;
2020-01-31 22:32:24 +01:00
}
2020-12-14 14:17:51 +01:00
function addEntityChange(entityChange) {
if (namespace.get('ignoreEntityChangeIds')) {
return;
}
const entityChangeIds = namespace.get('entityChangeIds') || [];
2020-01-31 22:32:24 +01:00
// store only ID since the record can be modified (e.g. in erase)
entityChangeIds.push(entityChange.id);
2020-01-31 22:32:24 +01:00
namespace.set('entityChangeIds', entityChangeIds);
2020-01-31 22:32:24 +01:00
}
function reset() {
clsHooked.reset();
}
function ignoreEntityChangeIds() {
namespace.set('ignoreEntityChangeIds', true);
2020-04-06 20:59:04 +02:00
}
module.exports = {
init,
wrap,
2020-06-15 17:56:53 +02:00
get,
set,
2018-03-30 13:20:36 -04:00
namespace,
2020-11-23 22:52:48 +01:00
getHoistedNoteId,
getComponentId,
getLocalNowDateTime,
disableEntityEvents,
enableEntityEvents,
isEntityEventsDisabled,
2020-01-31 22:32:24 +01:00
reset,
getAndClearEntityChangeIds,
2020-12-14 14:17:51 +01:00
addEntityChange,
ignoreEntityChangeIds
2020-06-15 17:56:53 +02:00
};