editConnectionModal.component.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { Component } from '@angular/core'
  2. import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
  3. import { ElectronService, HostAppService } from 'terminus-core'
  4. import { PasswordStorageService } from '../services/passwordStorage.service'
  5. import { SSHConnection, LoginScript } from '../api'
  6. @Component({
  7. template: require('./editConnectionModal.component.pug'),
  8. })
  9. export class EditConnectionModalComponent {
  10. connection: SSHConnection
  11. newScript: LoginScript
  12. hasSavedPassword: boolean
  13. constructor (
  14. private modalInstance: NgbActiveModal,
  15. private electron: ElectronService,
  16. private hostApp: HostAppService,
  17. private passwordStorage: PasswordStorageService,
  18. ) {
  19. this.newScript = { expect: '', send: '' }
  20. }
  21. async ngOnInit () {
  22. this.hasSavedPassword = !!(await this.passwordStorage.loadPassword(this.connection))
  23. }
  24. clearSavedPassword () {
  25. this.hasSavedPassword = false
  26. this.passwordStorage.deletePassword(this.connection)
  27. }
  28. selectPrivateKey () {
  29. let path = this.electron.dialog.showOpenDialog(
  30. this.hostApp.getWindow(),
  31. {
  32. title: 'Select private key',
  33. }
  34. )
  35. if (path) {
  36. this.connection.privateKey = path[0]
  37. }
  38. }
  39. save () {
  40. this.modalInstance.close(this.connection)
  41. }
  42. cancel () {
  43. this.modalInstance.dismiss()
  44. }
  45. moveScriptUp (script: LoginScript) {
  46. let index = this.connection.scripts.indexOf(script)
  47. if (index > 0) {
  48. this.connection.scripts.splice(index, 1)
  49. this.connection.scripts.splice(index - 1, 0, script)
  50. }
  51. }
  52. moveScriptDown (script: LoginScript) {
  53. let index = this.connection.scripts.indexOf(script)
  54. if (index >= 0 && index < this.connection.scripts.length - 1) {
  55. this.connection.scripts.splice(index, 1)
  56. this.connection.scripts.splice(index + 1, 0, script)
  57. }
  58. }
  59. deleteScript (script: LoginScript) {
  60. if (confirm(`Delete?`)) {
  61. this.connection.scripts = this.connection.scripts.filter(x => x !== script)
  62. }
  63. }
  64. addScript () {
  65. if (!this.connection.scripts) {
  66. this.connection.scripts = []
  67. }
  68. this.connection.scripts.push({...this.newScript})
  69. this.clearScript()
  70. }
  71. clearScript () {
  72. this.newScript.expect = ''
  73. this.newScript.send = ''
  74. }
  75. }