diff --git a/main.go b/main.go index b44319e..96f08aa 100644 --- a/main.go +++ b/main.go @@ -132,7 +132,6 @@ func main() { // {{{ http.HandleFunc("/notes2", pageNotes2) http.HandleFunc("/login", pageLogin) http.HandleFunc("/sync", pageSync) - http.HandleFunc("/offline", pageOffline) http.HandleFunc("/user/authenticate", AuthManager.AuthenticationHandler) @@ -227,15 +226,6 @@ func pageServiceWorker(w http.ResponseWriter, r *http.Request) { // {{{ return } } // }}} -func pageOffline(w http.ResponseWriter, r *http.Request) { // {{{ - page := NewPage("offline") - - err := Webengine.Render(page, w, r) - if err != nil { - w.Write([]byte(err.Error())) - return - } -} // }}} func pageLogin(w http.ResponseWriter, r *http.Request) { // {{{ page := NewPage("login") diff --git a/static/js/node.mjs b/static/js/node.mjs index c4b2be0..4d5e83d 100644 --- a/static/js/node.mjs +++ b/static/js/node.mjs @@ -41,7 +41,6 @@ export class N2NodeUI extends CustomHTMLElement { _mbus.subscribe('NODE_UI_OPEN', event => { this.node = event.detail.data - this.showMarkdown(true) this.render() }) @@ -69,8 +68,10 @@ export class N2NodeUI extends CustomHTMLElement { this.elNodeMarkdown.innerHTML = this.marked.parse(this.elNodeContent.value) }// }}} takeFocus() {// {{{ + console.log('taking focus', this.showMarkdown()) if (this.showMarkdown()) { this.elNodeMarkdown.focus() + console.log(this.elNodeMarkdown) } else this.elNodeContent.focus() }// }}} @@ -82,12 +83,7 @@ export class N2NodeUI extends CustomHTMLElement { return this.node?.isModified() }// }}} showMarkdown(state) {// {{{ - // No point in showing markdown if there is no data. - // If there is no data, it will show a blank page regardless, and the user will most - // likely want to edit content, which can't be done in markdown. - const show = this.node?.content().trim() !== '' && state - - switch (show) { + switch (state) { case true: this.elNodeMarkdown.innerHTML = this.marked.parse(this.elNodeContent.value) this.elIconMarkdown.src = `/images/${_VERSION}/icon_markdown.svg` diff --git a/static/service_worker.js b/static/service_worker.js index b750e54..c48c162 100644 --- a/static/service_worker.js +++ b/static/service_worker.js @@ -2,41 +2,27 @@ const CACHE_NAME = 'notes2-{{ .VERSION }}' const CACHED_ASSETS = [ '/', '/notes2', - '/offline', '/css/{{ .VERSION }}/main.css', - '/css/{{ .VERSION }}/markdown.css', '/css/{{ .VERSION }}/notes2.css', - '/css/{{ .VERSION }}/theme.css', - '/images/{{ .VERSION }}/collapsed.svg', - '/images/{{ .VERSION }}/expanded.svg', - '/images/{{ .VERSION }}/icon_markdown_hollow.svg', - '/images/{{ .VERSION }}/icon_markdown.svg', - '/images/{{ .VERSION }}/icon_refresh.svg', - '/images/{{ .VERSION }}/icon_save_disabled.svg', - '/images/{{ .VERSION }}/icon_search.svg', - '/images/{{ .VERSION }}/leaf.svg', - '/images/{{ .VERSION }}/logo.svg', + '/js/{{ .VERSION }}/lib/fullcalendar.min.js', + '/js/{{ .VERSION }}/lib/node_modules/marked/marked.min.js', + '/js/{{ .VERSION }}/lib/sjcl.js', '/js/{{ .VERSION }}/api.mjs', - '/js/{{ .VERSION }}/app.mjs', - '/js/{{ .VERSION }}/checklist.mjs', - '/js/{{ .VERSION }}/crypto.mjs', - '/js/{{ .VERSION }}/key.mjs', - '/js/{{ .VERSION }}/lib/custom_html_element.mjs', - '/js/{{ .VERSION }}/lib/fullcalendar.min.js', - '/js/{{ .VERSION }}/lib/node_modules/marked/lib/marked.esm.js', - '/js/{{ .VERSION }}/lib/node_modules/marked/marked.min.js', - '/js/{{ .VERSION }}/lib/node_modules/marked-token-position/lib/index.esm.js', - '/js/{{ .VERSION }}/lib/sjcl.js', - '/js/{{ .VERSION }}/marked_position.mjs', - '/js/{{ .VERSION }}/mbus.mjs', '/js/{{ .VERSION }}/node.mjs', '/js/{{ .VERSION }}/node_store.mjs', '/js/{{ .VERSION }}/notes2.mjs', '/js/{{ .VERSION }}/sync.mjs', - '/js/{{ .VERSION }}/tree.mjs', + '/js/{{ .VERSION }}/key.mjs', + '/js/{{ .VERSION }}/crypto.mjs', + '/js/{{ .VERSION }}/checklist.mjs', + + '/images/{{ .VERSION }}/logo.svg', + '/images/{{ .VERSION }}/leaf.svg', + '/images/{{ .VERSION }}/collapsed.svg', + '/images/{{ .VERSION }}/expanded.svg', ] async function precache() { @@ -46,50 +32,13 @@ async function precache() { async function fetchAsset(event) { try { - const cache = await caches.open(CACHE_NAME) - const match = await cache.match(event.request) - - if (match !== undefined) { - // ----------------------------------------------- - // This page is precached - return it immediately. - // ----------------------------------------------- - console.debug('From cache', event.request.url) - return match - } else { - // --------------------------------------------------------------- - // Not in cache - send it for an online request/browser cache hit. - // --------------------------------------------------------------- - console.debug('From network', event.request.url) - const resp = await fetch(event.request) - - // This will trigger on an HTTP error such as 502. - if (!resp.ok) { - console.error('HTTP error', resp.status) - - // When JSON is expected, return that instead of the offline HTML page. - return await offline(event, `${resp.status} ${resp.statusText}`) - } - return resp - } + return await fetch(event.request) } catch (e) { - // An error here is something like a DNS problem, not a regular HTTP problem. - console.error('Network error', e, event.request.url) - return await offline(event, e) + const cache = await caches.open(CACHE_NAME) + return cache.match(event.request) } } -async function offline(event, errText) { - if (event.request.headers.get('X-JSON')) { - return new Response('{ "OK": false, "Error": "Network is offline"}', { headers: { 'Content-Type': 'application/json' } }) - } - - const cache = await caches.open(CACHE_NAME) - const offline = await cache.match('/offline') - let body = await offline.text() - body = body.replace('||ERROR||', errText) - return new Response(body, { headers: { 'Content-Type': 'text/html' } }) -} - async function cleanupCache() { const keys = await caches.keys() const keysToDelete = keys.map(key => { @@ -100,22 +49,18 @@ async function cleanupCache() { } self.addEventListener('install', event => { - console.debug('SERVICE WORKER: install') + console.log('SERVICE WORKER: install') self.skipWaiting() event.waitUntil(precache()) }) self.addEventListener('activate', event => { - console.debug('SERVICE WORKER: activate') + console.log('SERVICE WORKER: activate') self.clients.claim() event.waitUntil(cleanupCache()) }) self.addEventListener('fetch', event => { - // console.debug('SERVICE WORKER: fetch', event.request.url) - - if ({{ .DevMode }}) - return event - + //console.log('SERVICE WORKER: fetch') event.respondWith(fetchAsset(event)) }) diff --git a/views/pages/offline.gotmpl b/views/pages/offline.gotmpl deleted file mode 100644 index 0c283f9..0000000 --- a/views/pages/offline.gotmpl +++ /dev/null @@ -1,4 +0,0 @@ -{{ define "page" }} -
Site is offline.
-
||ERROR||
-{{ end }}