All files / src/android Styles.xml.ts

100% Statements 7/7
100% Branches 0/0
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58          2x     5x                                                                         5x             5x 5x 5x 5x    
import path from 'path';
import { Element } from 'xml-js';
 
import { readXmlFile, writeXmlFile, mergeXmlElements } from '../xml-manipulation';
 
const STYLES_XML_FILE_PATH = './res/values/styles.xml';
 
function configureStyle(xml: Element): Element {
  const result = mergeXmlElements(xml, {
    elements: [
      {
        name: 'resources',
        elements: [
          {
            name: 'style',
            attributes: {
              name: 'Theme.App.SplashScreen',
              parent: 'Theme.AppCompat.Light.NoActionBar',
            },
            elements: [
              {
                idx: 0,
                comment: ` Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually `,
              },
              {
                idx: 1,
                name: 'item',
                attributes: {
                  name: 'android:windowBackground',
                },
                elements: [
                  {
                    text: '@drawable/splashscreen',
                  },
                ],
              },
              {
                comment: ` Customize your splash screen theme here `,
              },
            ],
          },
        ],
      },
    ],
  });
  return result;
}
 
/**
 * @param androidMainPath Path to the main directory containing code and resources in Android project. In general that would be `android/app/src/main`.
 */
export default async function configureStylesXml(androidMainPath: string) {
  const filePath = path.resolve(androidMainPath, STYLES_XML_FILE_PATH);
  const xmlContent = await readXmlFile(filePath);
  const configuredXmlContent = configureStyle(xmlContent);
  await writeXmlFile(filePath, configuredXmlContent);
}