perf: optimize conflict connection name when duplicating

This commit is contained in:
Lykin 2024-02-18 14:32:13 +08:00
parent 09264134ec
commit 74a6b9b0e1
1 changed files with 23 additions and 7 deletions

View File

@ -124,13 +124,29 @@ const useDialogStore = defineStore('dialog', {
async openDuplicateDialog(name) {
const connStore = useConnectionStore()
const profile = await connStore.getConnectionProfile(name)
if (profile != null) {
profile.name += '2'
this.connParam = profile
} else {
this.connParam = connStore.newDefaultConnection(name)
}
this.connParam = {}
let profile
let suffix = 1
do {
let profileName = name
if (suffix > 1) {
profileName += suffix
}
profile = await connStore.getConnectionProfile(profileName)
if (profile != null) {
suffix += 1
if (profileName === name) {
this.connParam = profile
}
} else {
this.connParam = connStore.mergeConnectionProfile(
connStore.newDefaultConnection(profileName),
this.connParam,
)
this.connParam.name = profileName
break
}
} while (true)
this.connType = ConnDialogType.NEW
this.connDialogVisible = true
},