Files
NativeScript/packages/core/accessibility/accessibility-service-common.ts
2021-04-06 11:18:36 -07:00

36 lines
978 B
TypeScript

import { Observable } from '../data/observable';
export class SharedA11YObservable extends Observable {
accessibilityServiceEnabled?: boolean;
}
export const AccessibilityServiceEnabledPropName = 'accessibilityServiceEnabled';
export class CommonA11YServiceEnabledObservable extends SharedA11YObservable {
constructor(sharedA11YObservable: SharedA11YObservable) {
super();
const ref = new WeakRef(this);
let lastValue: boolean;
function callback() {
const self = ref?.get();
if (!self) {
sharedA11YObservable.off(Observable.propertyChangeEvent, callback);
return;
}
const newValue = !!sharedA11YObservable.accessibilityServiceEnabled;
if (newValue !== lastValue) {
self.set(AccessibilityServiceEnabledPropName, newValue);
lastValue = newValue;
}
}
sharedA11YObservable.on(Observable.propertyChangeEvent, callback);
this.set(AccessibilityServiceEnabledPropName, !!sharedA11YObservable.accessibilityServiceEnabled);
}
}