All files / src/android Colors.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            2x     5x                                                 5x                     5x 5x 5x 5x    
import colorString, { ColorDescriptor } from 'color-string';
import path from 'path';
import { Element } from 'xml-js';
 
import { readXmlFile, writeXmlFile, mergeXmlElements } from '../xml-manipulation';
 
const COLORS_XML_FILE_PATH = './res/values/colors.xml';
 
function configureBackgroundColor(xml: Element, backgroundColor: ColorDescriptor): Element {
  const result = mergeXmlElements(xml, {
    elements: [
      {
        name: 'resources',
        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: 'color',
            attributes: {
              name: 'splashscreen_background',
            },
            elements: [
              {
                text: colorString.to.hex(backgroundColor.value),
              },
            ],
          },
        ],
      },
    ],
  });
  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`.
 * @param backgroundColor
 */
export default async function configureColorsXml(
  androidMainPath: string,
  backgroundColor: ColorDescriptor
) {
  const filePath = path.resolve(androidMainPath, COLORS_XML_FILE_PATH);
  const xmlContent = await readXmlFile(filePath);
  const configuredXmlContent = configureBackgroundColor(xmlContent, backgroundColor);
  await writeXmlFile(filePath, configuredXmlContent);
}