parent
0360a08b87
commit
14fa2e6c78
|
@ -146,9 +146,8 @@ export type NativeX = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize local sync.
|
* Initialize local sync.
|
||||||
* @param startTime Start time of the sync
|
|
||||||
*/
|
*/
|
||||||
localSyncInit: (startTime: number) => void;
|
localSyncInit: () => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the next batch of local sync.
|
* Get the next batch of local sync.
|
||||||
|
@ -324,11 +323,11 @@ export async function logout() {
|
||||||
/**
|
/**
|
||||||
* Iterate the local files on the device.
|
* Iterate the local files on the device.
|
||||||
*/
|
*/
|
||||||
export async function* localSyncIter(startTime: number) {
|
export async function* localSyncIter() {
|
||||||
if (!has()) return;
|
if (!has()) return;
|
||||||
|
|
||||||
// Initialize and iterate
|
// Initialize and iterate
|
||||||
nativex.localSyncInit(startTime);
|
nativex.localSyncInit();
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
const next = nativex.localSyncNext();
|
const next = nativex.localSyncNext();
|
||||||
|
|
|
@ -38,22 +38,39 @@ let _enabledBucketIds: number[] | null = null;
|
||||||
*/
|
*/
|
||||||
export async function go() {
|
export async function go() {
|
||||||
// Clear local database
|
// Clear local database
|
||||||
// await db.local.clear();
|
await db.local.clear();
|
||||||
|
|
||||||
for await (const sysImg of localSyncIter(0)) {
|
// Mark all entries
|
||||||
// Check if file already exists with same mtime
|
await db.local.where({ flag: 0 }).modify({ flag: 1 });
|
||||||
if (await db.local.where({ fileid: sysImg.fileid, mtime: sysImg.mtime }).first()) continue;
|
|
||||||
|
|
||||||
// Insert new file
|
for await (const sysImg of localSyncIter()) {
|
||||||
await db.transaction('rw', db.local, async () => {
|
await syncImage(sysImg);
|
||||||
await db.local.where({ fileid: sysImg.fileid }).delete();
|
|
||||||
await db.local.add({
|
|
||||||
...sysImg,
|
|
||||||
dayid: Math.floor(sysImg.datetaken / 86400),
|
|
||||||
flag: 0,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete all entries with flag=1
|
||||||
|
await db.local.where({ flag: 1 }).delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function syncImage(sysImg: ISystemImage) {
|
||||||
|
// Check if file already exists with same mtime
|
||||||
|
const entry = await db.local.where({ fileid: sysImg.fileid, mtime: sysImg.mtime }).first();
|
||||||
|
if (entry) {
|
||||||
|
// Unmark this entry
|
||||||
|
await db.local.where({ id: entry.id }).modify({ flag: 0 });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert new file
|
||||||
|
await db.transaction('rw', db.local, async () => {
|
||||||
|
await db.local.where({ fileid: sysImg.fileid }).delete();
|
||||||
|
await db.local.add({
|
||||||
|
...sysImg,
|
||||||
|
dayid: Math.floor(sysImg.datetaken / 86400),
|
||||||
|
flag: 0,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('nativex, synced file', sysImg.basename);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue