mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-15 17:09:59 +00:00
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { Observable, Subject } from 'rxjs'
|
|
import { Injector } from '@angular/core'
|
|
import { Logger, LogService } from '../services/log.service'
|
|
|
|
export enum Platform {
|
|
Linux = 'Linux',
|
|
macOS = 'macOS',
|
|
Windows = 'Windows',
|
|
Web = 'Web',
|
|
}
|
|
|
|
/**
|
|
* Provides interaction with the main process
|
|
*/
|
|
export abstract class HostAppService {
|
|
abstract get platform (): Platform
|
|
abstract get configPlatform (): Platform
|
|
|
|
protected settingsUIRequest = new Subject<void>()
|
|
protected configChangeBroadcast = new Subject<void>()
|
|
protected logger: Logger
|
|
|
|
/**
|
|
* Fired when Preferences is selected in the macOS menu
|
|
*/
|
|
get settingsUIRequest$ (): Observable<void> { return this.settingsUIRequest }
|
|
|
|
/**
|
|
* Fired when another window modified the config file
|
|
*/
|
|
get configChangeBroadcast$ (): Observable<void> { return this.configChangeBroadcast }
|
|
|
|
constructor (
|
|
injector: Injector,
|
|
) {
|
|
this.logger = injector.get(LogService).create('hostApp')
|
|
}
|
|
|
|
abstract newWindow (): void
|
|
|
|
/**
|
|
* Notifies other windows of config file changes
|
|
*/
|
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
broadcastConfigChange (_configStore: Record<string, any>): void { }
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
emitReady (): void { }
|
|
|
|
abstract relaunch (): void
|
|
|
|
abstract quit (): void
|
|
}
|