mirror of
https://github.com/styppo/hamstr.git
synced 2024-10-18 13:33:22 +00:00
fix slow chat and locked publishing in general.
This commit is contained in:
parent
0d01d8400e
commit
f42deeaef4
@ -15,7 +15,7 @@
|
|||||||
"core-js": "^3.6.5",
|
"core-js": "^3.6.5",
|
||||||
"identicon.js": "^2.3.3",
|
"identicon.js": "^2.3.3",
|
||||||
"markdown-it": "^12.3.0",
|
"markdown-it": "^12.3.0",
|
||||||
"nostr-tools": "^0.17.0",
|
"nostr-tools": "^0.18.0",
|
||||||
"pouchdb-adapter-idb": "6",
|
"pouchdb-adapter-idb": "6",
|
||||||
"pouchdb-core": "6",
|
"pouchdb-core": "6",
|
||||||
"pouchdb-mapreduce": "6",
|
"pouchdb-mapreduce": "6",
|
||||||
|
@ -21,14 +21,21 @@
|
|||||||
|
|
||||||
<q-form @submit="submitMessage" @reset="text = ''">
|
<q-form @submit="submitMessage" @reset="text = ''">
|
||||||
<div class="flex w-full mt-4">
|
<div class="flex w-full mt-4">
|
||||||
<q-input v-model="text" autofocus class="w-full" filled>
|
<q-input
|
||||||
|
v-model="text"
|
||||||
|
autofocus
|
||||||
|
class="w-full"
|
||||||
|
filled
|
||||||
|
:disable="!!sending"
|
||||||
|
>
|
||||||
<template #append>
|
<template #append>
|
||||||
<q-btn
|
<q-btn
|
||||||
unelevated
|
unelevated
|
||||||
class="mx-4"
|
class="mx-4"
|
||||||
label="Send"
|
:label="sending ? 'Sending' : 'Send'"
|
||||||
type="submit"
|
type="submit"
|
||||||
color="secondary"
|
color="secondary"
|
||||||
|
:disable="!!sending"
|
||||||
@click="submitMessage"
|
@click="submitMessage"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
@ -55,7 +62,9 @@ export default {
|
|||||||
listener: null,
|
listener: null,
|
||||||
messages: [],
|
messages: [],
|
||||||
canLoadMore: false,
|
canLoadMore: false,
|
||||||
text: ''
|
text: '',
|
||||||
|
sending: null,
|
||||||
|
messagesSet: new Set()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -102,6 +111,7 @@ export default {
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
async restart() {
|
async restart() {
|
||||||
|
this.messagesSet = new Set()
|
||||||
if (this.listener) this.listener.cancel()
|
if (this.listener) this.listener.cancel()
|
||||||
|
|
||||||
this.$store.commit('haveReadMessage', this.$route.params.pubkey)
|
this.$store.commit('haveReadMessage', this.$route.params.pubkey)
|
||||||
@ -114,6 +124,18 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.listener = onNewMessage(this.$route.params.pubkey, async event => {
|
this.listener = onNewMessage(this.$route.params.pubkey, async event => {
|
||||||
|
this.$store.commit('haveReadMessage', this.$route.params.pubkey)
|
||||||
|
if (this.messagesSet.has(event.id)) return
|
||||||
|
this.messagesSet.add(event.id)
|
||||||
|
|
||||||
|
if (
|
||||||
|
event.pubkey === this.$store.state.keys.pub &&
|
||||||
|
event.created_at === this.sending
|
||||||
|
) {
|
||||||
|
this.sending = null
|
||||||
|
this.text = ''
|
||||||
|
}
|
||||||
|
|
||||||
if (this.messages.length === 0) {
|
if (this.messages.length === 0) {
|
||||||
this.messages.push(event)
|
this.messages.push(event)
|
||||||
} else {
|
} else {
|
||||||
@ -132,8 +154,6 @@ export default {
|
|||||||
if (isElementFullyScrolled(this.$refs.chatScroll)) {
|
if (isElementFullyScrolled(this.$refs.chatScroll)) {
|
||||||
await this.scrollToBottom()
|
await this.scrollToBottom()
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$store.commit('haveReadMessage', this.$route.params.pubkey)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -157,12 +177,14 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
async submitMessage() {
|
async submitMessage() {
|
||||||
|
if (this.sending) return
|
||||||
|
|
||||||
|
this.sending = Math.round(Date.now() / 1000)
|
||||||
await this.$store.dispatch('sendChatMessage', {
|
await this.$store.dispatch('sendChatMessage', {
|
||||||
|
now: this.sending,
|
||||||
pubkey: this.$route.params.pubkey,
|
pubkey: this.$route.params.pubkey,
|
||||||
text: this.text
|
text: this.text
|
||||||
})
|
})
|
||||||
|
|
||||||
this.text = ''
|
|
||||||
},
|
},
|
||||||
|
|
||||||
async loadMore() {
|
async loadMore() {
|
||||||
|
@ -161,7 +161,7 @@ export async function setMetadata(store, metadata) {
|
|||||||
store.dispatch('addEvent', {event})
|
store.dispatch('addEvent', {event})
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function sendChatMessage(store, {pubkey, text, replyTo}) {
|
export async function sendChatMessage(store, {now, pubkey, text, replyTo}) {
|
||||||
if (text.length === 0) return
|
if (text.length === 0) return
|
||||||
|
|
||||||
let [ciphertext, iv] = encrypt(store.state.keys.priv, pubkey, text)
|
let [ciphertext, iv] = encrypt(store.state.keys.priv, pubkey, text)
|
||||||
@ -169,7 +169,7 @@ export async function sendChatMessage(store, {pubkey, text, replyTo}) {
|
|||||||
// make event
|
// make event
|
||||||
let event = {
|
let event = {
|
||||||
pubkey: store.state.keys.pub,
|
pubkey: store.state.keys.pub,
|
||||||
created_at: Math.floor(Date.now() / 1000),
|
created_at: now,
|
||||||
kind: 4,
|
kind: 4,
|
||||||
tags: [['p', pubkey]],
|
tags: [['p', pubkey]],
|
||||||
content: ciphertext + '?iv=' + iv
|
content: ciphertext + '?iv=' + iv
|
||||||
|
@ -4769,10 +4769,10 @@ normalize-url@^6.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
|
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
|
||||||
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
|
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
|
||||||
|
|
||||||
nostr-tools@^0.17.0:
|
nostr-tools@^0.18.0:
|
||||||
version "0.17.0"
|
version "0.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-0.17.0.tgz#bcc041d810b710dd8431b3d27576948ccea4dac4"
|
resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-0.18.0.tgz#d5c76ecd2ea6728a772de5daa5ab5d8110f3425c"
|
||||||
integrity sha512-1Ld/DxBHC+ljVPlOyGh+LtDQfiFMJO76Nyfberuh8mCwvgut6sAW8iI2pHLJEzmQO5T2JgI3qThU4+9vKzXApg==
|
integrity sha512-NOAC7JhNrAtFnEsr4vEG3PzSzhAcChzXr0SCcfrlFbXcwIFKHcrBGZ4K6qmhJPGpVvhuXwquixG3KlfMIoqc5g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@noble/hashes" "^0.5.7"
|
"@noble/hashes" "^0.5.7"
|
||||||
"@noble/secp256k1" "^1.3.0"
|
"@noble/secp256k1" "^1.3.0"
|
||||||
|
Loading…
Reference in New Issue
Block a user