From 9837c29701d6fe28072b9b0771ec8bf7dccf0974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Iv=C3=A1n=20Vieitez=20Parra?= <3857362+corrideat@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:06:00 +0100 Subject: [PATCH] Fix subscriptionSet issues --- .../views/containers/chatroom/EditChannelNameModal.vue | 9 +++++++-- shared/domains/chelonia/chelonia.js | 2 +- shared/domains/chelonia/internals.js | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/frontend/views/containers/chatroom/EditChannelNameModal.vue b/frontend/views/containers/chatroom/EditChannelNameModal.vue index 9b7e8ddedb..9206775e9b 100644 --- a/frontend/views/containers/chatroom/EditChannelNameModal.vue +++ b/frontend/views/containers/chatroom/EditChannelNameModal.vue @@ -31,7 +31,7 @@ i18n.is-success( tag='button' @click='submit' - :disabled='$v.form.$invalid' + :disabled='submitting || $v.form.$invalid' data-test='updateChannelNameSubmit' ) Save @@ -63,6 +63,7 @@ export default ({ data () { return { channelId: this.$route.query.channel, + submitting: false, form: { name: null, existingNames: [] @@ -86,6 +87,8 @@ export default ({ }, async submit () { try { + if (this.submitting) return + this.submitting = true if (this.currentChatRoomState.attributes.name === this.form.name) { // TODO: No need to update chatroom name. Display message box or toast or sth else console.log('TODO: Channel name is not changed') @@ -101,11 +104,13 @@ export default ({ } }) } + this.close() } catch (e) { console.error('RenameChannelModal submit() error:', e) this.$refs.formMsg.danger(e.message) + } finally { + this.submitting = false } - this.close() } }, validations: { diff --git a/shared/domains/chelonia/chelonia.js b/shared/domains/chelonia/chelonia.js index aecda3d497..d2bef24b03 100644 --- a/shared/domains/chelonia/chelonia.js +++ b/shared/domains/chelonia/chelonia.js @@ -834,7 +834,7 @@ export default (sbp('sbp/selectors/register', { 'chelonia/out/eventsAfter': function (contractID: string, sinceHeight: number, limit?: number, sinceHash?: string) { const fetchEventsStreamReader = async () => { requestLimit = Math.min(limit ?? MAX_EVENTS_AFTER, remainingEvents) - const eventsResponse = await fetch(`${this.config.connectionURL}/eventsAfter/${contractID}/${sinceHeight}/${requestLimit}`, { signal }) + const eventsResponse = await fetch(`${this.config.connectionURL}/eventsAfter/${contractID}/${sinceHeight}${Number.isInteger(requestLimit) ? `/${requestLimit}` : ''}`, { signal }) if (!eventsResponse.ok) throw new Error('Unexpected status code') if (!eventsResponse.body) throw new Error('Missing body') latestHeight = parseInt(eventsResponse.headers.get('shelter-headinfo-height'), 10) diff --git a/shared/domains/chelonia/internals.js b/shared/domains/chelonia/internals.js index 393d7c7c42..c872fb42b6 100644 --- a/shared/domains/chelonia/internals.js +++ b/shared/domains/chelonia/internals.js @@ -1093,7 +1093,7 @@ export default (sbp('sbp/selectors/register', { const { HEAD: latestHEAD } = await sbp('chelonia/out/latestHEADInfo', contractID) console.debug(`[chelonia] syncContract: ${contractID} latestHash is: ${latestHEAD}`) // there is a chance two users are logged in to the same machine and must check their contracts before syncing - const { recentHEAD, recentHeight } = state.contracts[contractID] || {} + const { HEAD: recentHEAD, height: recentHeight } = state.contracts[contractID] || {} const isSubcribed = this.subscriptionSet.has(contractID) if (isSubcribed) { if (params?.deferredRemove) {