commit 2a3706d6818be8587dfa921b334449316f09c632
parent 74409279951df8bc73d9fa05e369cdbd903272eb
Author: mokou <mokou@posteo.de>
Date: Thu, 21 May 2020 17:04:31 +0200
feat: Sync to CouchDB
Diffstat:
4 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,4 +1,4 @@
/node_modules/
/public/build/
-
+.env
.DS_Store
diff --git a/src/couch.js b/src/couch.js
@@ -0,0 +1,15 @@
+import PouchDB from 'pouchdb-browser'
+
+export async function replicateToCouch () {
+ PouchDB.replicate('koro', process.env.KORO_COUCHDB_URL, { live: false })
+ .on('complete', info => info)
+ .on('error', err => new Error(err))
+}
+
+export function syncDoc (id, onChange) {
+ return PouchDB.sync('koro', process.env.KORO_COUCHDB_URL, {
+ live: true,
+ selector: { _id: { $eq: id } }
+ })
+ .on('change', onChange)
+}
diff --git a/src/pages/Event.svelte b/src/pages/Event.svelte
@@ -7,12 +7,14 @@
import relativeTime from 'dayjs/plugin/relativeTime'
import { onMount } from 'svelte'
import { get } from 'svelte/store'
+ import { replicateToCouch, syncDoc } from '../couch'
import ResponseGrid from '../components/ResponseGrid.svelte'
import { hasResponded } from '../stores'
day.extend(utc)
day.extend(relativeTime)
let loading = true
+ let live = null
let errorFlash = ''
let error = ''
let event = {}
@@ -92,6 +94,10 @@
}
onMount(async () => {
+ await replicateToCouch()
+ live = syncDoc(params.id, () => {
+ getEvent()
+ })
await getEvent()
})
</script>
diff --git a/webpack.config.js b/webpack.config.js
@@ -5,7 +5,7 @@ const envalid = require('envalid')
const path = require('path')
const { version } = require('./package.json')
-const prod = process.env.NODE_ENV !== 'development'
+const prod = process.env.NODE_ENV && process.env.NODE_ENV !== 'development'
const env = envalid.cleanEnv(process.env, {
KORO_COUCHDB_URL: envalid.url({ default: 'https://localhost:5984/koro' })