mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-07 21:10:00 +00:00
fix: avoid error Uncaught (in promise) on modal dismiss
This commit is contained in:
parent
d2752382aa
commit
d21282501f
@ -285,7 +285,7 @@ export class VaultFileProvider extends FileProvider {
|
||||
icon: 'fas fa-file',
|
||||
result: f,
|
||||
})),
|
||||
])
|
||||
]).catch(() => null)
|
||||
if (result) {
|
||||
return `${this.prefix}${result.key.id}`
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ export class CommonOptionsContextMenu extends TabContextMenuItemProvider {
|
||||
click: async () => {
|
||||
const modal = this.ngbModal.open(PromptModalComponent)
|
||||
modal.componentInstance.prompt = this.translate.instant('Profile name')
|
||||
const name = (await modal.result)?.value
|
||||
const name = (await modal.result.catch(() => null))?.value
|
||||
if (!name) {
|
||||
return
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ export class ConfigSyncSettingsTabComponent extends BaseComponent {
|
||||
const modal = this.ngbModal.open(PromptModalComponent)
|
||||
modal.componentInstance.prompt = this.translate.instant('Name for the new config')
|
||||
modal.componentInstance.value = name
|
||||
name = (await modal.result)?.value
|
||||
name = (await modal.result.catch(() => null))?.value
|
||||
if (!name) {
|
||||
return
|
||||
}
|
||||
|
@ -144,7 +144,7 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
async newProfileGroup (): Promise<void> {
|
||||
const modal = this.ngbModal.open(PromptModalComponent)
|
||||
modal.componentInstance.prompt = this.translate.instant('New group name')
|
||||
const result = await modal.result
|
||||
const result = await modal.result.catch(() => null)
|
||||
if (result?.value.trim()) {
|
||||
await this.profilesService.newProfileGroup({ id: '', name: result.value })
|
||||
}
|
||||
@ -296,16 +296,17 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
modal.componentInstance.profile = Object.assign({}, model)
|
||||
modal.componentInstance.profileProvider = provider
|
||||
modal.componentInstance.defaultsMode = 'enabled'
|
||||
const result = await modal.result
|
||||
|
||||
// Fully replace the config
|
||||
for (const k in model) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete model[k]
|
||||
const result = await modal.result.catch(() => null)
|
||||
if (result) {
|
||||
// Fully replace the config
|
||||
for (const k in model) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete model[k]
|
||||
}
|
||||
Object.assign(model, result)
|
||||
this.profilesService.setProviderDefaults(provider, model)
|
||||
await this.config.save()
|
||||
}
|
||||
Object.assign(model, result)
|
||||
this.profilesService.setProviderDefaults(provider, model)
|
||||
await this.config.save()
|
||||
}
|
||||
|
||||
async deleteDefaults (provider: ProfileProvider<Profile>): Promise<void> {
|
||||
|
@ -35,9 +35,11 @@ export class VaultSettingsTabComponent extends BaseComponent {
|
||||
|
||||
async enableVault () {
|
||||
const modal = this.ngbModal.open(SetVaultPassphraseModalComponent)
|
||||
const newPassphrase = await modal.result
|
||||
await this.vault.setEnabled(true, newPassphrase)
|
||||
this.vaultContents = await this.vault.load(newPassphrase)
|
||||
const newPassphrase = await modal.result.catch(() => null)
|
||||
if (newPassphrase) {
|
||||
await this.vault.setEnabled(true, newPassphrase)
|
||||
this.vaultContents = await this.vault.load(newPassphrase)
|
||||
}
|
||||
}
|
||||
|
||||
async disableVault () {
|
||||
@ -65,8 +67,10 @@ export class VaultSettingsTabComponent extends BaseComponent {
|
||||
return
|
||||
}
|
||||
const modal = this.ngbModal.open(SetVaultPassphraseModalComponent)
|
||||
const newPassphrase = await modal.result
|
||||
this.vault.save(this.vaultContents, newPassphrase)
|
||||
const newPassphrase = await modal.result.catch(() => null)
|
||||
if (newPassphrase) {
|
||||
this.vault.save(this.vaultContents, newPassphrase)
|
||||
}
|
||||
}
|
||||
|
||||
async toggleConfigEncrypted () {
|
||||
@ -118,7 +122,7 @@ export class VaultSettingsTabComponent extends BaseComponent {
|
||||
modal.componentInstance.prompt = this.translate.instant('New name')
|
||||
modal.componentInstance.value = secret.key.description
|
||||
|
||||
const description = (await modal.result)?.value
|
||||
const description = (await modal.result.catch(() => null))?.value
|
||||
if (!description) {
|
||||
return
|
||||
}
|
||||
|
@ -113,8 +113,8 @@ export class SFTPPanelComponent {
|
||||
|
||||
async openCreateDirectoryModal (): Promise<void> {
|
||||
const modal = this.ngbModal.open(SFTPCreateDirectoryModalComponent)
|
||||
const directoryName = await modal.result
|
||||
if (directoryName !== '') {
|
||||
const directoryName = await modal.result.catch(() => null)
|
||||
if (directoryName?.trim()) {
|
||||
this.sftp.mkdir(path.join(this.path, directoryName)).then(() => {
|
||||
this.notifications.notice('The directory was created successfully')
|
||||
this.navigate(path.join(this.path, directoryName))
|
||||
|
@ -75,7 +75,7 @@ export class SSHProfileSettingsComponent {
|
||||
modal.componentInstance.prompt = `Password for ${this.profile.options.user}@${this.profile.options.host}`
|
||||
modal.componentInstance.password = true
|
||||
try {
|
||||
const result = await modal.result
|
||||
const result = await modal.result.catch(() => null)
|
||||
if (result?.value) {
|
||||
this.passwordStorage.savePassword(this.profile, result.value)
|
||||
this.hasSavedPassword = true
|
||||
@ -89,11 +89,13 @@ export class SSHProfileSettingsComponent {
|
||||
}
|
||||
|
||||
async addPrivateKey () {
|
||||
const ref = await this.fileProviders.selectAndStoreFile(`private key for ${this.profile.name}`)
|
||||
this.profile.options.privateKeys = [
|
||||
...this.profile.options.privateKeys!,
|
||||
ref,
|
||||
]
|
||||
const ref = await this.fileProviders.selectAndStoreFile(`private key for ${this.profile.name}`).catch(() => null)
|
||||
if (ref) {
|
||||
this.profile.options.privateKeys = [
|
||||
...this.profile.options.privateKeys!,
|
||||
ref,
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
removePrivateKey (path: string) {
|
||||
|
@ -210,7 +210,6 @@ export class SSHSession {
|
||||
if (!await this.verifyHostKey(handshake)) {
|
||||
this.ssh.end()
|
||||
reject(new Error('Host key verification failed'))
|
||||
return
|
||||
}
|
||||
this.logger.info('Handshake complete:', handshake)
|
||||
resolve()
|
||||
@ -300,7 +299,7 @@ export class SSHSession {
|
||||
const modal = this.ngbModal.open(PromptModalComponent)
|
||||
modal.componentInstance.prompt = `Username for ${this.profile.options.host}`
|
||||
try {
|
||||
const result = await modal.result
|
||||
const result = await modal.result.catch(() => null)
|
||||
this.authUsername = result?.value ?? null
|
||||
} catch {
|
||||
this.authUsername = 'root'
|
||||
@ -428,11 +427,7 @@ export class SSHSession {
|
||||
const modal = this.ngbModal.open(HostKeyPromptModalComponent)
|
||||
modal.componentInstance.selector = selector
|
||||
modal.componentInstance.digest = this.hostKeyDigest
|
||||
try {
|
||||
return await modal.result
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
return modal.result.catch(() => false)
|
||||
}
|
||||
return true
|
||||
}
|
||||
@ -495,7 +490,7 @@ export class SSHSession {
|
||||
modal.componentInstance.showRememberCheckbox = true
|
||||
|
||||
try {
|
||||
const result = await modal.result
|
||||
const result = await modal.result.catch(() => null)
|
||||
if (result) {
|
||||
if (result.remember) {
|
||||
this.savedPassword = result.value
|
||||
|
@ -53,6 +53,6 @@ export class CommonSFTPContextMenu extends SFTPContextMenuItemProvider {
|
||||
const modal = this.ngbModal.open(SFTPDeleteModalComponent)
|
||||
modal.componentInstance.item = item
|
||||
modal.componentInstance.sftp = session
|
||||
await modal.result
|
||||
await modal.result.catch(() => {return})
|
||||
}
|
||||
}
|
||||
|
@ -175,7 +175,7 @@ export class SaveAsProfileContextMenu extends TabContextMenuItemProvider {
|
||||
const modal = this.ngbModal.open(PromptModalComponent)
|
||||
modal.componentInstance.prompt = this.translate.instant('New profile name')
|
||||
modal.componentInstance.value = tab.profile.name
|
||||
const name = (await modal.result)?.value
|
||||
const name = (await modal.result.catch(() => null))?.value
|
||||
if (!name) {
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user