Fixed slow leaving/joining chat rooms

This commit is contained in:
Jonathan Staab 2023-02-08 09:26:50 -06:00
parent e42c217f01
commit 57451f120a
6 changed files with 22 additions and 18 deletions

View File

@ -65,8 +65,7 @@ If you like Coracle and want to support its development, you can donate sats via
# Current
- [ ] Switch from threshold to percentage, make it a setting
- [ ] Try switching to rxdb https://rxdb.info/
- [ ] Make threshold it a setting, or maybe avoid `load` altogether
- [ ] Add modal for follows/followers
- [ ] Implement gossip model https://bountsr.org/code/2023/02/03/gossip-model.html
- [ ] Make feeds page customizable. This could potentially use the "lists" NIP
@ -76,6 +75,11 @@ If you like Coracle and want to support its development, you can donate sats via
# Changelog
## 0.2.11
- [x] Converted threshold to percentage
- [x] Fixed slow leaving/joining chat rooms
## 0.2.10
- [x] Fixed likes not showing up in alerts

View File

@ -1,5 +1,5 @@
import Dexie, {liveQuery} from 'dexie'
import {pick} from 'ramda'
import {pick, isEmpty} from 'ramda'
import {nip05} from 'nostr-tools'
import {writable} from 'svelte/store'
import {noop, ensurePlural, createMap, switcherFn} from 'hurdak/lib/hurdak'
@ -133,7 +133,9 @@ const processProfileEvents = async events => {
}
}
await updatePeople(updates)
if (!isEmpty(updates)) {
await updatePeople(updates)
}
}
const processRoomEvents = async events => {
@ -158,7 +160,7 @@ const processRoomEvents = async events => {
const room = await db.table('rooms').get(roomId)
// Merge edits but don't let old ones override new ones
if (room?.edited_at > e.created_at) {
if (room?.edited_at >= e.created_at) {
continue
}
@ -178,7 +180,9 @@ const processRoomEvents = async events => {
}
}
await db.table('rooms').bulkPut(Object.values(updates))
if (!isEmpty(updates)) {
await db.table('rooms').bulkPut(Object.values(updates))
}
}
const processMessages = async events => {

View File

@ -1,10 +1,9 @@
<script lang="ts">
import {liveQuery} from 'dexie'
import {pluck} from 'ramda'
import {nip19} from 'nostr-tools'
import {now, batch} from 'src/util/misc'
import Channel from 'src/partials/Channel.svelte'
import {getRelays, user, db, listen, load} from 'src/agent'
import {lq, getRelays, user, db, listen, load} from 'src/agent'
import {modal} from 'src/app'
import loaders from 'src/app/loaders'
import cmd from 'src/app/cmd'
@ -12,7 +11,7 @@
export let entity
let {data: roomId} = nip19.decode(entity) as {data: string}
let room = liveQuery(() => db.table('rooms').where('id').equals(roomId).first())
let room = lq(() => db.table('rooms').where('id').equals(roomId).first())
const getRoomRelays = $room => {
let relays = getRelays()

View File

@ -1,11 +1,10 @@
<script lang="ts">
import {liveQuery} from 'dexie'
import {nip19} from 'nostr-tools'
import {sortBy, pluck} from 'ramda'
import {personKinds} from 'src/util/nostr'
import {batch, now} from 'src/util/misc'
import Channel from 'src/partials/Channel.svelte'
import {getRelays, user, db, listen, keys} from 'src/agent'
import {lq, getRelays, user, db, listen, keys} from 'src/agent'
import {messages} from 'src/app'
import {routes} from 'src/app/ui'
import cmd from 'src/app/cmd'
@ -14,7 +13,7 @@
let crypt = keys.getCrypt()
let {data: pubkey} = nip19.decode(entity) as {data: string}
let person = liveQuery(() => db.table('people').get(pubkey))
let person = lq(() => db.table('people').get(pubkey))
messages.lastCheckedByPubkey.update($obj => ({...$obj, [pubkey]: now()}))

View File

@ -1,5 +1,4 @@
<script>
import {liveQuery} from 'dexie'
import {pluck} from 'ramda'
import {noop, createMap} from 'hurdak/lib/hurdak'
import {onMount} from 'svelte'
@ -10,7 +9,7 @@
import Anchor from "src/partials/Anchor.svelte"
import Content from "src/partials/Content.svelte"
import RelayCard from "src/partials/RelayCard.svelte"
import {pool, db, user, ready} from "src/agent"
import {lq, pool, db, user, ready} from "src/agent"
import {modal, settings} from "src/app"
import defaults from "src/agent/defaults"
@ -32,7 +31,7 @@
db.table('relays').put(relay)
}
const knownRelays = liveQuery(() => db.table('relays').toArray())
const knownRelays = lq(() => db.table('relays').toArray())
$: {
const joined = pluck('url', $user?.relays || [])

View File

@ -1,5 +1,4 @@
<script>
import {liveQuery} from 'dexie'
import {onMount} from "svelte"
import {quantify} from 'hurdak/lib/hurdak'
import {last, whereEq, find, reject, propEq} from 'ramda'
@ -13,7 +12,7 @@
import Content from "src/partials/Content.svelte"
import Modal from "src/partials/Modal.svelte"
import Heading from 'src/partials/Heading.svelte'
import {user, db, getRelays} from "src/agent"
import {lq, user, db, getRelays} from "src/agent"
import {toast, modal} from "src/app"
import cmd from "src/app/cmd"
@ -23,7 +22,7 @@
let q = ''
let search
const knownRelays = liveQuery(() => db.table('relays').toArray())
const knownRelays = lq(() => db.table('relays').toArray())
$: {
const data = reject(({url}) => find(whereEq({url}), relays), $knownRelays || [])