diff --git a/demo-app/src/components/FileList.jsx b/demo-app/src/components/FileList.jsx
index 5b46cb0..6465f9b 100644
--- a/demo-app/src/components/FileList.jsx
+++ b/demo-app/src/components/FileList.jsx
@@ -7,7 +7,7 @@ import { db, useLiveQuery } from '../store'
const { Title } = Typography
function FileTable() {
- const files = useLiveQuery(() => db.files.where('$deleted').notEqual(1).sortBy('$created'))
+ const files = useLiveQuery(() => db.files.where('$deleted').notEqual(1).reverse().sortBy('$created'))
const columns = [
{
title: 'Preview',
diff --git a/demo-app/src/components/TodoList.jsx b/demo-app/src/components/TodoList.jsx
index 8c91e24..6e04224 100644
--- a/demo-app/src/components/TodoList.jsx
+++ b/demo-app/src/components/TodoList.jsx
@@ -17,7 +17,7 @@ function TaskItem(task) {
function TodoList() {
const [newTaskTitle, setNewTaskTitle] = useState('')
- const tasks = useLiveQuery(() => db.tasks.where('$deleted').notEqual(1).sortBy('$created'))
+ const tasks = useLiveQuery(() => db.tasks.where('$deleted').notEqual(1).reverse().sortBy('$created'))
function onAddTask() {
db.tasks.add({ title: newTaskTitle })
setNewTaskTitle('')
diff --git a/demo-app/src/components/UserManagement.jsx b/demo-app/src/components/UserManagement.jsx
index aabca40..62cbbc8 100644
--- a/demo-app/src/components/UserManagement.jsx
+++ b/demo-app/src/components/UserManagement.jsx
@@ -1,7 +1,7 @@
/* eslint-disable react/prop-types */
import { useState, useEffect } from 'react'
-import { Button, Typography, Input, Alert, Space } from 'antd'
+import { Button, Typography, Input, Alert, Space, Form } from 'antd'
import { sync } from '../store'
const { Title } = Typography
@@ -30,15 +30,21 @@ function Register({ user }) {
?
: ''
const form = (
-
- setUsername(e.target.value)} />
- setPassword(e.target.value)} />
-
-
+
+ setUsername(e.target.value)} />
+
+
+ setPassword(e.target.value)} />
+
+
+
+
+
)
return (
@@ -72,15 +78,21 @@ function Login({ user }) {
?
: ''
const form = (
-
- setUsername(e.target.value)} />
- setPassword(e.target.value)} />
-
-
+
+ setUsername(e.target.value)} />
+
+
+ setPassword(e.target.value)} />
+
+
+
+
+
)
return (
@@ -116,18 +128,26 @@ function ChangePassword({ user }) {
?
: ''
const form = (
-
- setUsername(e.target.value)} />
- setPassword(e.target.value)} />
- setNewPassword(e.target.value)} />
-
-
+
+ setUsername(e.target.value)} />
+
+
+ setPassword(e.target.value)} />
+
+
+ setNewPassword(e.target.value)} />
+
+
+
+
+
)
return (
diff --git a/lib/add.js b/lib/add.js
index 73ab08a..8eeffbc 100644
--- a/lib/add.js
+++ b/lib/add.js
@@ -55,19 +55,19 @@ export default async function add(table, path, options = {}) {
const filter = path.replace(pathRegEx, '$3').replace('include=', 'include=id,$created,$updated,$deleted')
// Run synchronization with interval
- function runSync() {
+ async function runSync() {
// User is online
if (window.navigator.onLine) {
// Sync from remote
if (!path.startsWith('to:')) {
- syncFromRemote(table, path, api, remoteTable, filter, localStorageKey)
+ await syncFromRemote(table, path, api, remoteTable, filter, localStorageKey)
}
// Sync to remote
if (!path.startsWith('from:')) {
- syncToRemote(table, api, remoteTable)
+ await syncToRemote(table, api, remoteTable)
}
// User is offline
diff --git a/lib/syncFromRemote.js b/lib/syncFromRemote.js
index e444d2d..619388e 100644
--- a/lib/syncFromRemote.js
+++ b/lib/syncFromRemote.js
@@ -9,7 +9,7 @@ export default async function syncFromRemote(table, path, api, remoteTable, filt
// Remember sync start time
const syncStartTime = Date.now()
- // Get last sync time
+ // Get last sync time
const lastSyncTime = parseInt(window.localStorage.getItem(localStorageKey) || 0)
// Get not synchronized remote docs
@@ -69,10 +69,14 @@ export default async function syncFromRemote(table, path, api, remoteTable, filt
}
- // Remember sync start time
- // To respect syncReset(), use 0 if the item does not exist
- const itemExists = window.localStorage.getItem(localStorageKey) !== null
- window.localStorage.setItem(localStorageKey, itemExists ? syncStartTime : 0)
+ // Get last sync time now to check for a reset a in the meantime
+ const lastSyncTimeNow = parseInt(window.localStorage.getItem(localStorageKey) || 0)
+ const resetInTheMeantime = lastSyncTimeNow !== lastSyncTime
+
+ // Remember the sync start time
+ if (!resetInTheMeantime) {
+ window.localStorage.setItem(localStorageKey, syncStartTime)
+ }
} catch (error) {
debug('sync from remote > failed', error)
diff --git a/package-lock.json b/package-lock.json
index e32a756..4d1e99b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "dexie-mysql-sync",
- "version": "5.0.5",
+ "version": "5.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "dexie-mysql-sync",
- "version": "5.0.5",
+ "version": "5.1.0",
"license": "MIT",
"dependencies": {
"js-crud-api": "^0.4.0",
diff --git a/package.json b/package.json
index af7d848..a7abc80 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "dexie-mysql-sync",
- "version": "5.0.5",
+ "version": "5.1.0",
"description": "",
"main": "lib/index.js",
"type": "module",