-
Notifications
You must be signed in to change notification settings - Fork 4
/
polyfills.web.ts
37 lines (32 loc) · 1.1 KB
/
polyfills.web.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { Buffer } from "buffer";
import "setimmediate";
import * as Linking from "expo-linking";
import { Alert, AlertButton, AlertOptions } from "react-native";
window.Buffer = window.Buffer || Buffer;
Alert.alert = (
title: string,
message?: string | undefined,
buttons?: AlertButton[] | undefined,
options?: AlertOptions | undefined
) => {
const confirmOption = buttons?.find(({ style }) => style !== "cancel");
const cancelOption = buttons?.find(({ style }) => style === "cancel");
if (confirmOption && cancelOption) {
let messageToShow = [title, message].filter(Boolean).join("\n");
if (title && message) {
messageToShow = message + `\n\nDo you want to ${confirmOption.text}?`;
}
const result = window.confirm(messageToShow);
if (result) {
confirmOption?.onPress?.();
} else {
cancelOption?.onPress?.();
}
} else {
window.alert([title, message].filter(Boolean).join("\n"));
(confirmOption || cancelOption)?.onPress?.();
}
};
(Linking as any).openURL = async (url: string) => {
window.open(new URL(url, window.location.href).toString());
};