···991010import {DebugNuke} from './components/debug-nuke'
1111import {FeedImportNYTimes} from './components/feed-import-nytimes'
1212+import {FeedImportPodcasts} from './components/feed-import-podcasts'
1313+import {FeedImportTech} from './components/feed-import-tech'
1214import {Messenger} from './components/messenger'
1315import {PeerList} from './components/peer-list'
1416···3133 <RealmConnectionManager />
3234 <PeerList />
3335 <FeedImportNYTimes />
3636+ <FeedImportTech />
3737+ <FeedImportPodcasts />
3438 <Messenger />
3539 <DebugNuke />
3640 </SkypodProvider>
+12-9
src/realm/client/service-connection-sync.ts
···59596060 async buildSyncDelta(clocks: PeerClocks): Promise<StoredAction[]> {
6161 const states = await this.buildSyncState()
6262- const initial = this.#db.actions.where('[actor+clock]').equals([Dexie.minKey, Dexie.minKey])
6363- // this is the root for the reduction; dexie doesn't have an "additive identity" for `or` - table.toCollection is (all) not (none)
6262+ const [first, ...known] = Object.keys(states) as IdentID[]
6363+ if (!first) return []
6464+6565+ const initial = this.#db.actions.where('[actor+clock]').between(
6666+ [first, clocks[first] ?? Dexie.minKey],
6767+ [first, states[first]],
6868+ clocks[first] == null, // include lower only if they don't have it
6969+ true, // always include the most recent
7070+ )
64716565- const known = Object.keys(states) as IdentID[]
6672 const actions = known.reduce((memo, actor) => {
6773 const clock = clocks[actor] ?? null
6868- return memo.or('[actor+clock]').between(
6969- [actor, clock ?? Dexie.minKey],
7070- [actor, states[actor]],
7171- clock == null, // include lower only if they don't have it
7272- true, // always include the most recent
7373- )
7474+ return memo
7575+ .or('[actor+clock]')
7676+ .between([actor, clock ?? Dexie.minKey], [actor, states[actor]], clock == null, true)
7477 }, initial)
75787679 // already in clock order