refactor: pass sub controllers to controllers instead of passing global controller manager (#1061)

This commit is contained in:
Mo
2022-06-01 12:56:30 -05:00
committed by GitHub
parent 721cf8df35
commit a87e3b98e2
40 changed files with 672 additions and 591 deletions

View File

@@ -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
}
}