diff --git a/filebrowser.js b/filebrowser.js index 6bb675130e..e9c53d3cfb 100644 --- a/filebrowser.js +++ b/filebrowser.js @@ -560,6 +560,8 @@ async function renderSidebarHTML() { } + protectModFileInSidebar(file.sha, file.name); + // add modified flag to file let modified = ''; if (modifiedFiles[file.sha] && @@ -1317,6 +1319,20 @@ async function loadFileInHTML(fileEl, fileSha) { } + const fileName = fileEl.querySelector('.name').textContent.replaceAll('\n',''); + + protectModFileInSidebar(fileSha, fileName); + + // if file is modified + if (modifiedFiles[fileSha] && !modifiedFiles[fileSha].eclipsed && + !fileEl.classList.contains('modified')) { + + // update file in HTML + fileEl.classList.add('modified'); + + } + + // if file is not modified; fetch from Git if (!modifiedFiles[fileSha]) { @@ -1325,8 +1341,6 @@ async function loadFileInHTML(fileEl, fileSha) { startLoading(); } - const fileName = fileEl.querySelector('.name').textContent.replaceAll('\n',''); - // get file from git let resp = await git.getFile(treeLoc, fileName); @@ -2933,6 +2947,36 @@ function protectUnsavedCode() { } +function protectModFileInSidebar(fileSha, fileName) { + + // if file is not modified + if (!modifiedFiles[fileSha]) { + + // check if old modified file + // with same name and directory exists + const oldModFile = Object.values(modifiedFiles).filter(modFile => (modFile.dir === treeLoc.join() && modFile.name === fileName && !modFile.eclipsed))[0]; + + if (oldModFile) { + + const oldFileSha = oldModFile.sha; + + // update old modified file with new sha + oldModFile.sha = fileSha; + + // save new modified file in local storage + modifiedFiles[fileSha] = oldModFile; + + // delete old modified file + delete modifiedFiles[oldFileSha]; + + updateModFilesLS(); + + } + + } + +} + function setupEditor() { // if code in storage diff --git a/lib/plugins/codeit-autolinker.js b/lib/plugins/codeit-autolinker.js index 86a48c197f..a24821d5c1 100644 --- a/lib/plugins/codeit-autolinker.js +++ b/lib/plugins/codeit-autolinker.js @@ -71,7 +71,7 @@ env.attributes.href = href.replaceAll('\'','').replaceAll('"','').replaceAll('`',''); env.attributes.onclick = 'if ((event.ctrlKey || event.metaKey) && event.shiftKey) { event.preventDefault(); window.open(this.href, "_blank") }'; - env.attributes.title = isMac ? '⌘ + shift + click to open link' : 'Ctrl + shift + click to open link'; + env.attributes.title = isMac ? '⌘ + Shift + click to open link' : 'Ctrl + Shift + click to open link'; // Silently catch any error thrown by decodeURIComponent (#1186) try { diff --git a/live-view/live-view.js b/live-view/live-view.js index 87c13506ad..90593fbfa3 100644 --- a/live-view/live-view.js +++ b/live-view/live-view.js @@ -699,17 +699,22 @@ if (isMobile) { }); - document.addEventListener('keydown', handleMetaP); + document.addEventListener('keydown', handleMetaR); - function handleMetaP(e) { + function handleMetaR(e) { // detect ctrl/cmd+R if ((e.key === 'r' || e.keyCode === 82) && isKeyEventMeta(e)) { e.preventDefault(); - - liveView.classList.toggle('visible'); - toggleLiveView(selectedFile); + + if (selectedFile.lang == 'html' || selectedFile.lang == 'markup' || + selectedFile.lang === 'markdown') { + + liveView.classList.toggle('visible'); + toggleLiveView(selectedFile); + + } } diff --git a/worker/client-channel.js b/worker/client-channel.js index 432b2f55ab..c400d6af7c 100644 --- a/worker/client-channel.js +++ b/worker/client-channel.js @@ -4,7 +4,7 @@ // update worker name when updating worker -const WORKER_NAME = 'codeit-worker-v583'; +const WORKER_NAME = 'codeit-worker-v584'; // internal paths