refactor: pass sub controllers to controllers instead of passing global controller manager (#1061)
This commit is contained in:
@@ -1,14 +1,27 @@
|
||||
import { DeinitSource } from '@standardnotes/snjs'
|
||||
import { CrossControllerEvent } from '../CrossControllerEvent'
|
||||
import { InternalEventBus, InternalEventPublishStrategy } from '@standardnotes/snjs'
|
||||
import { WebApplication } from '../../Application/Application'
|
||||
import { Disposer } from '@/Types/Disposer'
|
||||
|
||||
export abstract class AbstractViewController {
|
||||
dealloced = false
|
||||
protected disposers: Disposer[] = []
|
||||
|
||||
constructor(public application: WebApplication, public viewControllerManager?: AbstractViewController) {}
|
||||
constructor(public application: WebApplication, protected eventBus: InternalEventBus) {}
|
||||
|
||||
deinit(_source: DeinitSource): void {
|
||||
protected async publishEventSync(name: CrossControllerEvent): Promise<void> {
|
||||
await this.eventBus.publishSync({ type: name, payload: undefined }, InternalEventPublishStrategy.SEQUENCE)
|
||||
}
|
||||
|
||||
deinit(): void {
|
||||
this.dealloced = true
|
||||
;(this.application as unknown) = undefined
|
||||
;(this.viewControllerManager as unknown) = undefined
|
||||
;(this.eventBus as unknown) = undefined
|
||||
|
||||
for (const disposer of this.disposers) {
|
||||
disposer()
|
||||
}
|
||||
|
||||
;(this.disposers as unknown) = undefined
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user