@adyen/react-native
Version:
Wraps Adyen Checkout Drop-In and Components for iOS and Android for convenient use with React Native
42 lines (37 loc) • 1.23 kB
text/typescript
const defaultTheme = 'AppTheme';
export function setAppTheme(androidStyles: any) {
let resources = androidStyles.resources;
if (!resources) {
resources = {
$: { 'xmlns:tools': 'http://schemas.android.com/tools' },
};
androidStyles.resources = resources;
}
let styles = resources.style;
if (!Array.isArray(styles)) {
styles = [];
resources.style = styles;
}
let appTheme = styles.find((item: any) => item.$.name === defaultTheme);
if (!appTheme) {
console.log(
`Default theme is not '${defaultTheme}'. Please set your theme parent as descendent of 'Theme.MaterialComponents'`
);
} else {
var parentTheme = 'Theme.MaterialComponents.Light.NoActionBar';
const oldParent = appTheme.$.parent;
if (oldParent && oldParent.includes('DayNight')) {
parentTheme = 'Theme.MaterialComponents.DayNight.NoActionBar';
}
appTheme.$ = { name: defaultTheme, parent: parentTheme };
}
let unwantedAppTheme = styles.findLast(
(item: any) =>
item.$.name === defaultTheme && item.$.parent.includes('AppCompat')
);
if (unwantedAppTheme) {
const index = styles.indexOf(unwantedAppTheme);
styles.splice(index, 1);
}
return androidStyles;
}