Skip to content

Commit

Permalink
fix: avoid error Uncaught (in promise) on modal dismiss
Browse files Browse the repository at this point in the history
  • Loading branch information
Clem-Fern committed Aug 15, 2023
1 parent d275238 commit d212825
Show file tree
Hide file tree
Showing 10 changed files with 39 additions and 37 deletions.
2 changes: 1 addition & 1 deletion tabby-core/src/services/vault.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}`
}
Expand Down
2 changes: 1 addition & 1 deletion tabby-core/src/tabContextMenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
21 changes: 11 additions & 10 deletions tabby-settings/src/components/profilesSettingsTab.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 })
}
Expand Down Expand Up @@ -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> {
Expand Down
16 changes: 10 additions & 6 deletions tabby-settings/src/components/vaultSettingsTab.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 () {
Expand Down Expand Up @@ -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 () {
Expand Down Expand Up @@ -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
}
Expand Down
4 changes: 2 additions & 2 deletions tabby-ssh/src/components/sftpPanel.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
14 changes: 8 additions & 6 deletions tabby-ssh/src/components/sshProfileSettings.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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) {
Expand Down
11 changes: 3 additions & 8 deletions tabby-ssh/src/session/ssh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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'
Expand Down Expand Up @@ -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
}
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion tabby-ssh/src/sftpContextMenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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})
}
}
2 changes: 1 addition & 1 deletion tabby-terminal/src/tabContextMenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down

0 comments on commit d212825

Please sign in to comment.