1
1
mirror of https://github.com/Eugeny/tabby.git synced 2024-09-11 04:43:03 +03:00

fix: avoid error Uncaught (in promise) on modal dismiss

This commit is contained in:
Clem Fern 2023-08-15 19:53:00 +02:00
parent d2752382aa
commit d21282501f
10 changed files with 39 additions and 37 deletions

View File

@ -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}`
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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> {

View File

@ -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
}

View File

@ -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))

View File

@ -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) {

View File

@ -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

View File

@ -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})
}
}

View File

@ -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
}