This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

112 lines
3.9 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const SPLASH_SCREEN_FILENAME = 'splashscreen_image.png';
const DRAWABLES_CONFIGS = {
default: {
modes: {
light: {
path: `./res/drawable/${SPLASH_SCREEN_FILENAME}`,
},
dark: {
path: `./res/drawable-night/${SPLASH_SCREEN_FILENAME}`,
},
},
dimensionsMultiplier: 1,
},
mdpi: {
modes: {
light: {
path: `./res/drawable-mdpi/${SPLASH_SCREEN_FILENAME}`,
},
dark: {
path: `./res/drawable-night-mdpi/${SPLASH_SCREEN_FILENAME}`,
},
},
dimensionsMultiplier: 1,
},
hdpi: {
modes: {
light: {
path: `./res/drawable-hdpi/${SPLASH_SCREEN_FILENAME}`,
},
dark: {
path: `./res/drawable-night-hdpi/${SPLASH_SCREEN_FILENAME}`,
},
},
dimensionsMultiplier: 1.5,
},
xhdpi: {
modes: {
light: {
path: `./res/drawable-xhdpi/${SPLASH_SCREEN_FILENAME}`,
},
dark: {
path: `./res/drawable-night-xhdpi/${SPLASH_SCREEN_FILENAME}`,
},
},
dimensionsMultiplier: 2,
},
xxhdpi: {
modes: {
light: {
path: `./res/drawable-xxhdpi/${SPLASH_SCREEN_FILENAME}`,
},
dark: {
path: `./res/drawable-night-xxhdpi/${SPLASH_SCREEN_FILENAME}`,
},
},
dimensionsMultiplier: 3,
},
xxxhdpi: {
modes: {
light: {
path: `./res/drawable-xxxhdpi/${SPLASH_SCREEN_FILENAME}`,
},
dark: {
path: `./res/drawable-night-xxxhdpi/${SPLASH_SCREEN_FILENAME}`,
},
},
dimensionsMultiplier: 4,
},
};
/**
* @param srcPath Absolute path
* @param dstPath Absolute path
*/
async function copyDrawableFile(srcPath, dstPath) {
if (!srcPath) {
return;
}
if (!(await fs_extra_1.default.pathExists(path_1.default.dirname(dstPath)))) {
await fs_extra_1.default.mkdir(path_1.default.dirname(dstPath));
}
await fs_extra_1.default.copyFile(srcPath, path_1.default.resolve(dstPath));
}
/**
* Deletes all previous splash_screen_images and copies new one to desired drawable directory.
* If path isn't provided then no new image is placed in drawable directories.
* @see https://developer.android.com/training/multiscreen/screendensities
*
* @param androidMainPath Absolute path to the main directory containing code and resources in Android project. In general that would be `android/app/src/main`.
*/
async function configureDrawables(androidMainPath, config = {}) {
var _a;
await Promise.all(Object.values(DRAWABLES_CONFIGS).map(async ({ modes }) => {
await Promise.all(Object.values(modes).map(async ({ path: filePath }) => {
if (await fs_extra_1.default.pathExists(path_1.default.resolve(androidMainPath, filePath))) {
await fs_extra_1.default.remove(path_1.default.resolve(androidMainPath, filePath));
}
}));
}));
await Promise.all([
copyDrawableFile(config.image, path_1.default.resolve(androidMainPath, DRAWABLES_CONFIGS.default.modes.light.path)),
copyDrawableFile((_a = config.darkMode) === null || _a === void 0 ? void 0 : _a.image, path_1.default.resolve(androidMainPath, DRAWABLES_CONFIGS.default.modes.dark.path)),
]);
}
exports.default = configureDrawables;
//# sourceMappingURL=Drawables.js.map