From 8fa7d4170f786a81deb6b3d763749d8dd9892996 Mon Sep 17 00:00:00 2001 From: Peter Stuifzand Date: Mon, 17 Jan 2022 21:34:35 +0100 Subject: [PATCH] Problem: sr.js is messy Solution: cleanup sr.js and extract functions --- editor/src/sr.js | 109 +++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 61 deletions(-) diff --git a/editor/src/sr.js b/editor/src/sr.js index d98fe9f..52cfce2 100644 --- a/editor/src/sr.js +++ b/editor/src/sr.js @@ -9,6 +9,46 @@ function fillResult($modal, result) { $modal.find('.block-text').show().val(result.line) } +function replaceBlock(id, oldText) { + return fetch('/api/block/replace', { + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: qs.encode({id, text: oldText}), + }); +} + +function appendBlock(id, newText) { + return fetch('/api/block/append', { + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: qs.encode({id, text: newText}), + }); +} + +function resetSRBox(text) { + let newText = text.replace(/#(?:\[\[)?sr\/(\d+)(?:\]\])?/, '#sr/1'); + return newText; +} + +function processSRBox(review, originalText) { + let oldText = originalText + .replace(/#(?:\[\[)?sr\/(\d+)(?:\]\])?/, function (text, srCount) { + if (review === 'never') return ''; + let nextCount = 1; + const count = parseInt(srCount) + if (review === 'again') nextCount = 1 + if (review === 'soon') nextCount = count + if (review === 'later') nextCount = count + 1 + return '#sr/' + nextCount; + }).trim() + if (review === 'never') return oldText.replace(/#(?:\[\[)?review(?:\]\])?/, '') + return oldText +} + $(function () { let reviewBlocks = []; @@ -50,19 +90,15 @@ $(function () { let text = $modal.find('.block-text').val() let id = $modal.data('block-id') - // let oldText = text - // .replace(/#\[\[review\]\]/, '') - // .replace(/#\[\[sr\/(\d+)\]\]/g, '') - // .trim() - processText(review, text, originalText, id) .then(() => { if (reviewBlocks.length > 0) { const first = reviewBlocks.shift() // reload note with id - search.startQuery('id:' + first.id, {internal: false}).then((results) => { - fillResult($modal, results[0]) - }) + search.startQuery('id:' + first.id, {internal: false}) + .then((results) => { + fillResult($modal, results[0]) + }) } else { $('.review-modal .block-text').hide(); $('.review-modal .block-title').hide(); @@ -73,59 +109,10 @@ $(function () { }).catch(e => console.log(e)) }); - function processText(review, text, originalText, id) { - const changed = text !== originalText - if (changed) { - let newText = text.replace(/#\[\[sr\/(\d+)\]\]/, '#[[sr/1]]'); - return fetch('/api/block/append', { - method: 'post', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - body: qs.encode({id, text: newText}), - }).then(() => { - let oldText = originalText - .replace(/#\[\[sr\/(\d+)\]\]/, function (text, srCount) { - if (review === 'never') return ''; - let nextCount = 1; - const count = parseInt(srCount) - if (review === 'again') nextCount = 1 - if (review === 'soon') nextCount = count - if (review === 'later') nextCount = count + 1 - return '#[[sr/' + nextCount + ']]'; - }).trim() - if (review === 'never') oldText = oldText.replace(/#\[\[review\]\]/, '') - return fetch('/api/block/replace', { - method: 'post', - headers: {'Content-Type': 'application/x-www-form-urlencoded'}, - body: qs.encode({id, text: oldText}), - }).then(() => { - return text - }) - }) - } else { - let oldText = text - .replace(/#\[\[sr\/(\d+)\]\]/, function (text, srCount) { - if (review === 'never') return ''; - - let nextCount = 1; - const count = parseInt(srCount) - if (review === 'again') nextCount = 1 - if (review === 'soon') nextCount = count - if (review === 'later') nextCount = count + 1 - return '#[[sr/' + nextCount + ']]'; - }).trim() - if (review === 'never') oldText = oldText.replace(/#\[\[review\]\]/, '') - - return fetch('/api/block/replace', { - method: 'post', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - body: qs.encode({id, text: oldText}), - }).then(() => { - return text - }) + async function processText(review, text, originalText, id) { + if (text !== originalText) { + await appendBlock(id, resetSRBox(text)) } + await replaceBlock(id, processSRBox(review, originalText)) } });