deprecated matchedHotkey

This commit is contained in:
Eugene Pankov
2021-07-05 22:52:32 +02:00
parent da599567f8
commit 461cd2bec7
21 changed files with 141 additions and 32 deletions

View File

@@ -33,7 +33,7 @@ export class TelnetTabComponent extends BaseTerminalTabComponent {
this.logger = this.log.create('telnetTab')
this.subscribeUntilDestroyed(this.hotkeys.matchedHotkey, hotkey => {
this.subscribeUntilDestroyed(this.hotkeys.hotkey$, hotkey => {
if (this.hasFocus && hotkey === 'restart-telnet-session') {
this.reconnect()
}

View File

@@ -4,6 +4,7 @@ import { ConfigProvider } from 'tabby-core'
export class TelnetConfigProvider extends ConfigProvider {
defaults = {
hotkeys: {
'telnet-profile-selector': [],
'restart-telnet-session': [],
},
}

View File

@@ -5,6 +5,10 @@ import { HotkeyDescription, HotkeyProvider } from 'tabby-core'
@Injectable()
export class TelnetHotkeyProvider extends HotkeyProvider {
hotkeys: HotkeyDescription[] = [
{
id: 'telnet-profile-selector',
name: 'Show Telnet profile selector',
},
{
id: 'restart-telnet-session',
name: 'Restart current Telnet session',

View File

@@ -4,8 +4,9 @@ import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { ToastrModule } from 'ngx-toastr'
import { NgxFilesizeModule } from 'ngx-filesize'
import TabbyCoreModule, { ConfigProvider, TabRecoveryProvider, HotkeyProvider, ProfileProvider } from 'tabby-core'
import TabbyCoreModule, { ConfigProvider, TabRecoveryProvider, HotkeyProvider, ProfileProvider, HotkeysService, AppService, SelectorService, ProfilesService, SelectorOption } from 'tabby-core'
import TabbyTerminalModule from 'tabby-terminal'
import { SettingsTabComponent } from 'tabby-settings'
import { TelnetProfileSettingsComponent } from './components/telnetProfileSettings.component'
import { TelnetTabComponent } from './components/telnetTab.component'
@@ -30,7 +31,7 @@ import { TelnetProfilesService } from './profiles'
{ provide: ConfigProvider, useClass: TelnetConfigProvider, multi: true },
{ provide: TabRecoveryProvider, useClass: RecoveryProvider, multi: true },
{ provide: HotkeyProvider, useClass: TelnetHotkeyProvider, multi: true },
{ provide: ProfileProvider, useClass: TelnetProfilesService, multi: true },
{ provide: ProfileProvider, useExisting: TelnetProfilesService, multi: true },
],
entryComponents: [
TelnetProfileSettingsComponent,
@@ -41,4 +42,49 @@ import { TelnetProfilesService } from './profiles'
TelnetTabComponent,
],
})
export default class TelnetModule { } // eslint-disable-line @typescript-eslint/no-extraneous-class
export default class TelnetModule {
constructor (
hotkeys: HotkeysService,
private app: AppService,
private selector: SelectorService,
private profilesService: ProfilesService,
private telnetProfiles: TelnetProfilesService,
) {
hotkeys.hotkey$.subscribe(hotkey => {
if (hotkey === 'telnet-profile-selector') {
this.showSelector()
}
})
}
async showSelector (): Promise<void> {
let profiles = await this.profilesService.getProfiles()
profiles = profiles.filter(x => !x.isTemplate && x.type === 'telnet')
const options: SelectorOption<void>[] = profiles.map(p => ({
...this.profilesService.selectorOptionForProfile(p),
callback: () => this.profilesService.openNewTabForProfile(p),
}))
options.push({
name: 'Manage profiles',
icon: 'fas fa-window-restore',
callback: () => this.app.openNewTabRaw({
type: SettingsTabComponent,
inputs: { activeTab: 'profiles' },
}),
})
options.push({
name: 'Quick connect',
freeInputPattern: 'Connect to "%s"...',
icon: 'fas fa-arrow-right',
callback: query => this.profilesService.openNewTabForProfile(
this.telnetProfiles.quickConnect(query)
),
})
await this.selector.show('Select an Telnet profile', options)
}
}

View File

@@ -8,7 +8,7 @@ import { TelnetProfile } from './session'
export class TelnetProfilesService extends ProfileProvider {
id = 'telnet'
name = 'Telnet'
supportsQuickConnect = true
supportsQuickConnect = false
settingsComponent = TelnetProfileSettingsComponent
async getBuiltinProfiles (): Promise<TelnetProfile[]> {
@@ -41,12 +41,7 @@ export class TelnetProfilesService extends ProfileProvider {
return profile.options.host ? `${profile.options.host}:${profile.options.port}` : ''
}
quickConnect (query: string): TelnetProfile|null {
if (!query.startsWith('telnet:')) {
return null
}
query = query.substring('telnet:'.length)
quickConnect (query: string): TelnetProfile {
let host = query
let port = 23
if (host.includes('[')) {