Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function setupConfigListener(attempt = 0) {
if (!nsApp.ios.nativeApp) {
if (attempt > 100) {
if (isTraceEnabled()) {
writeErrorTrace(`App didn't become active couldn't enable font scaling`);
}
fontScaleChanged(1);
return;
}
// Couldn't get launchEvent to trigger.
setTimeout(() => setupConfigListener(attempt + 1), 1);
return;
}
export function waitUntilReady(isReady: () => boolean, timeoutSec: number = 3, shouldThrow: boolean = true) {
if (!isReady) {
return;
}
if (application.ios) {
const timeoutMs = timeoutSec * 1000;
let totalWaitTime = 0;
while (true) {
const begin = time();
const currentRunLoop = NSRunLoop.currentRunLoop;
currentRunLoop.limitDateForMode(currentRunLoop.currentMode);
if (isReady()) {
break;
}
totalWaitTime += (time() - begin);
if (totalWaitTime >= timeoutMs) {
if (shouldThrow) {
throw new Error("waitUntilReady Timeout.");
} else {
break;
export function testNativeFields() {
const img = ImageSource.fromFileSync(imagePath);
if (app.android) {
TKUnit.assert(img.android != null, "Image.android not updated.");
} else if (app.ios) {
TKUnit.assert(img.ios != null, "Image.ios not updated.");
}
}
const fullAndroidPng = "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAA3NCSVQICAjb4U/gAAAAFUlEQVQImWP8z4AAjAz/kTnIPGQAAG86AwGcuMlCAAAAAElFTkSuQmCC";
return;
}
if (tnsView[accessibilityFocusObserverSymbol]) {
if (tnsView.accessible) {
if (isTraceEnabled()) {
writeTrace(`${cls}: Already configured no need to do so again`);
}
return;
}
if (isTraceEnabled()) {
writeTrace(`${cls}: view no longer accessible, remove listener`);
}
nsApp.ios.removeNotificationObserver(tnsView[accessibilityFocusObserverSymbol], UIAccessibilityElementFocusedNotification);
delete tnsView[accessibilityFocusObserverSymbol];
return;
}
if (!tnsView.accessible) {
return;
}
const selfTnsView = new WeakRef(tnsView);
let observer = nsApp.ios.addNotificationObserver(UIAccessibilityElementFocusedNotification, (args: NSNotification) => {
const localTnsView = selfTnsView.get();
if (!localTnsView || !localTnsView.ios) {
nsApp.ios.removeNotificationObserver(observer, UIAccessibilityElementFocusedNotification);
nsApp.on(nsApp.exitEvent, () => {
if (nativeObserver) {
nsApp.ios.removeNotificationObserver(nativeObserver, UIAccessibilityVoiceOverStatusChanged);
}
nativeObserver = null;
if (sharedA11YObservable) {
sharedA11YObservable.removeEventListener(Observable.propertyChangeEvent);
sharedA11YObservable = null;
}
});
}
let observer = nsApp.ios.addNotificationObserver(UIAccessibilityElementFocusedNotification, (args: NSNotification) => {
const localTnsView = selfTnsView.get();
if (!localTnsView || !localTnsView.ios) {
nsApp.ios.removeNotificationObserver(observer, UIAccessibilityElementFocusedNotification);
observer = null;
if (localTnsView) {
delete localTnsView[accessibilityFocusObserverSymbol];
}
return;
}
const localView = getUIView(localTnsView);
const object = args.userInfo.objectForKey(UIAccessibilityFocusedElementKey) as UIView;
const receivedFocus = object === localView;
const lostFocus = localView[accessibilityHadFocusSymbol] && !receivedFocus;
if (!receivedFocus && !lostFocus) {
function ensureStateListener() {
if (sharedA11YObservable) {
return sharedA11YObservable;
}
sharedA11YObservable = new Observable() as SharedA11YObservable;
sharedA11YObservable.set(AccessibilityServiceEnabledPropName, isAccessibilityServiceEnabled());
if (typeof UIAccessibilityVoiceOverStatusDidChangeNotification !== 'undefined') {
nativeObserver = nsApp.ios.addNotificationObserver(UIAccessibilityVoiceOverStatusDidChangeNotification, () =>
sharedA11YObservable.set(AccessibilityServiceEnabledPropName, isAccessibilityServiceEnabled()),
);
nsApp.on(nsApp.exitEvent, () => {
if (nativeObserver) {
nsApp.ios.removeNotificationObserver(nativeObserver, UIAccessibilityVoiceOverStatusDidChangeNotification);
}
nativeObserver = null;
sharedA11YObservable = null;
});
} else if (typeof UIAccessibilityVoiceOverStatusChanged !== 'undefined') {
nativeObserver = nsApp.ios.addNotificationObserver(UIAccessibilityVoiceOverStatusChanged, () =>
sharedA11YObservable.set(AccessibilityServiceEnabledPropName, isAccessibilityServiceEnabled()),
);
if (isTraceEnabled()) {
writeFontScaleTrace(`fontSize: ${fontSize} is unknown`);
}
fontScaleChanged(1);
}
function useIOSFontScale() {
if (nsApp.ios.nativeApp) {
contentSizeUpdated(nsApp.ios.nativeApp.preferredContentSizeCategory);
} else {
fontScaleChanged(1);
}
}
const fontSizeObserver = nsApp.ios.addNotificationObserver(UIContentSizeCategoryDidChangeNotification, (args) => {
const fontSize = args.userInfo.valueForKey(UIContentSizeCategoryNewValueKey);
contentSizeUpdated(fontSize);
});
nsApp.on(nsApp.exitEvent, () => {
nsApp.ios.removeNotificationObserver(fontSizeObserver, UIContentSizeCategoryDidChangeNotification);
internalObservable = null;
nsApp.off(nsApp.resumeEvent, useIOSFontScale);
});
nsApp.on(nsApp.resumeEvent, useIOSFontScale);
useIOSFontScale();
}