mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
Merge branch 'master' into m41
This commit is contained in:
commit
b25c1d6fa8
3
.idea/.gitignore
generated
vendored
3
.idea/.gitignore
generated
vendored
@ -2,4 +2,5 @@
|
|||||||
/workspace.xml
|
/workspace.xml
|
||||||
|
|
||||||
# Datasource local storage ignored files
|
# Datasource local storage ignored files
|
||||||
/dataSources.local.xml
|
/dataSources.local.xml
|
||||||
|
/dataSources/
|
||||||
|
@ -110,6 +110,10 @@ class Note extends Entity {
|
|||||||
async getJsonContent() {
|
async getJsonContent() {
|
||||||
const content = await this.getContent();
|
const content = await this.getContent();
|
||||||
|
|
||||||
|
if (!content || !content.trim()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return JSON.parse(content);
|
return JSON.parse(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,8 +29,12 @@ async function searchFromNote(req) {
|
|||||||
return [404, `Note ${req.params.noteId} has not been found.`];
|
return [404, `Note ${req.params.noteId} has not been found.`];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (note.isDeleted) {
|
||||||
|
return [400, `Note ${req.params.noteId} is deleted.`];
|
||||||
|
}
|
||||||
|
|
||||||
if (note.type !== 'search') {
|
if (note.type !== 'search') {
|
||||||
return [400, '`Note ${req.params.noteId} is not search note.`']
|
return [400, `Note ${req.params.noteId} is not search note.`]
|
||||||
}
|
}
|
||||||
|
|
||||||
const json = await note.getJsonContent();
|
const json = await note.getJsonContent();
|
||||||
@ -41,18 +45,28 @@ async function searchFromNote(req) {
|
|||||||
|
|
||||||
let noteIds;
|
let noteIds;
|
||||||
|
|
||||||
if (json.searchString.startsWith('=')) {
|
try {
|
||||||
const relationName = json.searchString.substr(1).trim();
|
if (json.searchString.startsWith('=')) {
|
||||||
|
const relationName = json.searchString.substr(1).trim();
|
||||||
|
|
||||||
noteIds = await searchFromRelation(note, relationName);
|
noteIds = await searchFromRelation(note, relationName);
|
||||||
|
} else {
|
||||||
|
noteIds = await searchService.searchForNoteIds(json.searchString);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
catch (e) {
|
||||||
noteIds = await searchService.searchForNoteIds(json.searchString);
|
log.error(`Search failed for note ${note.noteId}: ` + e.message + ": " + e.stack);
|
||||||
|
|
||||||
|
throw new Error("Search failed, see logs for details.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// we won't return search note's own noteId
|
// we won't return search note's own noteId
|
||||||
noteIds = noteIds.filter(noteId => noteId !== note.noteId);
|
noteIds = noteIds.filter(noteId => noteId !== note.noteId);
|
||||||
|
|
||||||
|
if (noteIds.length > 200) {
|
||||||
|
noteIds = noteIds.slice(0, 200);
|
||||||
|
}
|
||||||
|
|
||||||
return noteIds.map(noteCacheService.getNotePath).filter(res => !!res);
|
return noteIds.map(noteCacheService.getNotePath).filter(res => !!res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,9 @@ async function getRootCalendarNote() {
|
|||||||
parentNoteId: 'root',
|
parentNoteId: 'root',
|
||||||
title: 'Calendar',
|
title: 'Calendar',
|
||||||
target: 'into',
|
target: 'into',
|
||||||
isProtected: false
|
isProtected: false,
|
||||||
|
type: 'text',
|
||||||
|
content: ''
|
||||||
})).note;
|
})).note;
|
||||||
|
|
||||||
await attributeService.createLabel(rootNote.noteId, CALENDAR_ROOT_LABEL);
|
await attributeService.createLabel(rootNote.noteId, CALENDAR_ROOT_LABEL);
|
||||||
|
@ -71,22 +71,36 @@ function sendMessageToAllClients(message) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function fillInAdditionalProperties(sync) {
|
||||||
|
// fill in some extra data needed by the frontend
|
||||||
|
if (sync.entityName === 'attributes') {
|
||||||
|
sync.noteId = await sql.getValue(`SELECT noteId
|
||||||
|
FROM attributes
|
||||||
|
WHERE attributeId = ?`, [sync.entityId]);
|
||||||
|
} else if (sync.entityName === 'note_revisions') {
|
||||||
|
sync.noteId = await sql.getValue(`SELECT noteId
|
||||||
|
FROM note_revisions
|
||||||
|
WHERE noteRevisionId = ?`, [sync.entityId]);
|
||||||
|
} else if (sync.entityName === 'branches') {
|
||||||
|
const {noteId, parentNoteId} = await sql.getRow(`SELECT noteId, parentNoteId
|
||||||
|
FROM branches
|
||||||
|
WHERE branchId = ?`, [sync.entityId]);
|
||||||
|
|
||||||
|
sync.noteId = noteId;
|
||||||
|
sync.parentNoteId = parentNoteId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function sendPing(client) {
|
async function sendPing(client) {
|
||||||
const syncData = require('./sync_table').getEntitySyncsNewerThan(lastAcceptedSyncIds[client.id]);
|
const syncData = require('./sync_table').getEntitySyncsNewerThan(lastAcceptedSyncIds[client.id]);
|
||||||
|
|
||||||
for (const sync of syncData) {
|
for (const sync of syncData) {
|
||||||
// fill in some extra data needed by the frontend
|
try {
|
||||||
if (sync.entityName === 'attributes') {
|
await fillInAdditionalProperties(sync);
|
||||||
sync.noteId = await sql.getValue(`SELECT noteId FROM attributes WHERE attributeId = ?`, [sync.entityId]);
|
|
||||||
}
|
}
|
||||||
else if (sync.entityName === 'note_revisions') {
|
catch (e) {
|
||||||
sync.noteId = await sql.getValue(`SELECT noteId FROM note_revisions WHERE noteRevisionId = ?`, [sync.entityId]);
|
log.error("Could not fill additional properties for sync " + JSON.stringify(sync)
|
||||||
}
|
+ " because of error: " + e.message + ": " + e.stack);
|
||||||
else if (sync.entityName === 'branches') {
|
|
||||||
const {noteId, parentNoteId} = await sql.getRow(`SELECT noteId, parentNoteId FROM branches WHERE branchId = ?`, [sync.entityId]);
|
|
||||||
|
|
||||||
sync.noteId = noteId;
|
|
||||||
sync.parentNoteId = parentNoteId;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user