Skip to content

Commit

Permalink
feat(desktop): fix the validation of subscribing to multiple topics a…
Browse files Browse the repository at this point in the history
…t once
  • Loading branch information
DM1-1 committed Mar 27, 2024
1 parent d6d1634 commit d5b44b1
Showing 1 changed file with 21 additions and 16 deletions.
37 changes: 21 additions & 16 deletions src/components/SubscriptionsList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -448,22 +448,25 @@ export default class SubscriptionsList extends Vue {
this.$log.error(`Error subscribing to topic: ${error}`)
return false
}
let errorReason = SubscribeErrorReason.normal
let successSubscriptions: string[] = []
let failedSubscriptions: string[] = []
if (!granted || (Array.isArray(granted) && granted.length < 1)) {
this.$log.error('Error subscribing to topic: granted empty')
} else if (![0, 1, 2].includes(granted[0].qos) && topic.match(/^(\$SYS)/i)) {
errorReason = SubscribeErrorReason.qosSubSysFailed
} else if (![0, 1, 2].includes(granted[0].qos)) {
errorReason = SubscribeErrorReason.qosSubFailed
return false
} else {
granted.forEach((grant) => {
if ([0, 1, 2].includes(grant.qos)) {
successSubscriptions.push(grant.topic)
} else {
failedSubscriptions.push(grant.topic)
}
})
}
if (errorReason !== SubscribeErrorReason.normal) {
const errorReasonMsg: VueI18n.TranslateResult = this.getErrorReasonMsg(errorReason)
const errorMsg: string = `${this.$t('connections.subFailed')} ${errorReasonMsg}`
if (failedSubscriptions.length) {
const errorReasonMsg: VueI18n.TranslateResult = this.getErrorReasonMsg(SubscribeErrorReason.qosSubFailed)
const errorMsg: string = `${failedSubscriptions} ${this.$t('connections.subFailed')} ${errorReasonMsg}`
this.$log.error(`Error subscribing to topic: ${errorReasonMsg}`)
this.$emit('onSubError', errorMsg, `Topics: ${JSON.stringify(topicsArr)}`)
return false
this.$emit('onSubError', errorMsg, `Topics: ${failedSubscriptions}`)
}
if (enable) {
this.subsList = this.setSubsDisable(topic, disabled)
Expand All @@ -473,19 +476,21 @@ export default class SubscriptionsList extends Vue {
this.saveTopicToSubList(topic, qos, undefined, undefined, id)
} else {
topicsArr.forEach((topic, index) => {
this.saveTopicToSubList(topic, qos, index, aliasArr as string[], id)
if (successSubscriptions.includes(topic)) {
this.saveTopicToSubList(topic, qos, index, aliasArr as string[], id)
}
})
}
this.$log.info(`Saved topic: ${topic}`)
this.$log.info(`Saved topic: ${successSubscriptions}`)
}
this.record.subscriptions = this.subsList
if (this.record.id) {
const { subscriptionService } = useServices()
await subscriptionService.updateSubscriptions(this.record.id, this.record.subscriptions)
this.changeSubs({ id: this.connectionId, subscriptions: this.subsList })
this.showDialog = false
let subLog = `Successfully subscribed to topic: ${topic}`
this.$log.info(subLog)
this.$log.info(`Successfully subscribed to topic: ${successSubscriptions}`)
this.$log.error(`Failed to subscribed to topic: ${failedSubscriptions}`)
}
isFinished = true
})
Expand Down

0 comments on commit d5b44b1

Please sign in to comment.