Skip to content

Commit aebc4bb

Browse files
committed
refactor: Expose isAtomic predicate on Resources
Signed-off-by: Marcel Klehr <[email protected]>
1 parent 361796c commit aebc4bb

File tree

9 files changed

+30
-2
lines changed

9 files changed

+30
-2
lines changed

src/lib/Account.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { Capacitor } from '@capacitor/core'
1111
import IAccount from './interfaces/Account'
1212
import Mappings from './Mappings'
1313
import { isTest } from './isTest'
14-
import CachingAdapter from './adapters/Caching'
1514
import * as Sentry from '@sentry/vue'
1615
import AsyncLock from 'async-lock'
1716
import CachingTreeWrapper from './CachingTreeWrapper'
@@ -378,7 +377,7 @@ export default class Account {
378377
if (!this.syncProcess) {
379378
return
380379
}
381-
if (actionsDone && (!(this.server instanceof CachingAdapter) || 'onSyncComplete' in this.server)) {
380+
if (actionsDone && !this.server.isAtomic()) {
382381
await this.storage.setCurrentContinuation(this.syncProcess.toJSON())
383382
await this.syncProcess.getMappingsInstance().persist()
384383
}

src/lib/CachingTreeWrapper.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,8 @@ export default class CachingTreeWrapper implements OrderFolderResource<typeof It
9090
cancel(): void {
9191
this.innerTree.cancel()
9292
}
93+
94+
isAtomic(): boolean {
95+
return this.innerTree.isAtomic()
96+
}
9397
}

src/lib/LocalTabs.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,10 @@ export default class LocalTabs implements OrderFolderResource<typeof ItemLocatio
518518
cancel(): void {
519519
this.queue.clear()
520520
}
521+
522+
isAtomic(): boolean {
523+
return false
524+
}
521525
}
522526

523527
function awaitTabsUpdated() {

src/lib/adapters/Caching.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,10 @@ export default class CachingAdapter implements Adapter, BulkImportResource<TItem
247247
return Promise.resolve(true)
248248
}
249249

250+
isAtomic(): boolean {
251+
return true
252+
}
253+
250254
async getCapabilities(): Promise<ICapabilities> {
251255
return {
252256
preserveOrder: true,

src/lib/adapters/Karakeep.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,10 @@ export default class KarakeepAdapter implements Adapter, IResource<typeof ItemLo
573573
}
574574
}
575575

576+
isAtomic(): boolean {
577+
return false
578+
}
579+
576580
// eslint-disable-next-line @typescript-eslint/no-unused-vars
577581
setHashSettings(hashSettings: IHashSettings): void {
578582
// noop

src/lib/adapters/Linkwarden.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,10 @@ export default class LinkwardenAdapter implements Adapter, IResource<typeof Item
375375
}
376376
}
377377

378+
isAtomic(): boolean {
379+
return false
380+
}
381+
378382
// eslint-disable-next-line @typescript-eslint/no-unused-vars
379383
setHashSettings(hashSettings: IHashSettings): void {
380384
// noop

src/lib/adapters/NextcloudBookmarks.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,10 @@ export default class NextcloudBookmarksAdapter implements Adapter, BulkImportRes
10721072
}
10731073
}
10741074

1075+
isAtomic(): boolean {
1076+
return false
1077+
}
1078+
10751079
setHashSettings(hashSettings: IHashSettings): void {
10761080
this.hashSettings = hashSettings
10771081
}

src/lib/browser/BrowserTree.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,4 +409,8 @@ export default class BrowserTree implements IResource<typeof ItemLocation.LOCAL>
409409
cancel(): void {
410410
this.queue.clear()
411411
}
412+
413+
isAtomic(): boolean {
414+
return false
415+
}
412416
}

src/lib/interfaces/Resource.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export interface IResource<L extends TItemLocation> {
2525
removeFolder(folder:Folder<L>):Promise<void>
2626
isAvailable():Promise<boolean>
2727
getCapabilities():Promise<ICapabilities>
28+
isAtomic():boolean
2829
isUsingBrowserTabs?: () => Promise<boolean>
2930
cancel():void
3031
}

0 commit comments

Comments
 (0)