koro

an event time scheduler
git clone https://tilde.team/~marisa/repo/koro.git
Log | Files | Refs | README | LICENSE

commit 2a3706d6818be8587dfa921b334449316f09c632
parent 74409279951df8bc73d9fa05e369cdbd903272eb
Author: mokou <mokou@posteo.de>
Date:   Thu, 21 May 2020 17:04:31 +0200

feat: Sync to CouchDB

Diffstat:
M.gitignore | 2+-
Asrc/couch.js | 15+++++++++++++++
Msrc/pages/Event.svelte | 6++++++
Mwebpack.config.js | 2+-
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' })