mirror of
https://github.com/Boof2015/astra-mobile.git
synced 2026-08-17 11:12:33 +02:00
replace android default player icons with astra icons
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
const fs = require('fs/promises');
|
||||
const path = require('path');
|
||||
const {
|
||||
AndroidConfig,
|
||||
withDangerousMod,
|
||||
withAndroidManifest,
|
||||
withAppBuildGradle,
|
||||
withProjectBuildGradle,
|
||||
@@ -10,6 +13,41 @@ const SETTINGS_MARKER = '// ASTRA VENDORED KOTLIN AUDIO';
|
||||
const PROJECT_BUILD_MARKER = '// ASTRA KOTLIN AUDIO SUBSTITUTION';
|
||||
const SIGNING_MARKER = '// ASTRA RELEASE SIGNING';
|
||||
const CAMERA_FEATURE = 'android.hardware.camera';
|
||||
const NOTIFICATION_ICON_FILE = 'astra_notification_icon.xml';
|
||||
const NOTIFICATION_OVERRIDE_FILE = 'astra_notification_icon_overrides.xml';
|
||||
|
||||
// A notification small icon is an alpha mask: Android supplies the color for
|
||||
// the status bar, lock screen and media controls. Keep only the main Astra mark
|
||||
// here—launcher backgrounds, shadows and brand colors do not belong in it.
|
||||
const NOTIFICATION_ICON_VECTOR = `<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<group
|
||||
android:scaleX="1.726813"
|
||||
android:scaleY="1.726813"
|
||||
android:translateX="-660.505902"
|
||||
android:translateY="-373.7">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M526.083,500.65C529.86,496.662 535.112,494.402 540.605,494.402C553.071,494.402 576.056,494.402 588.831,494.402C594.652,494.402 600.185,496.939 603.984,501.35C610.054,508.396 619.61,519.49 627.207,528.31C633.905,536.085 633.631,547.668 626.573,555.117C603.295,579.689 553.937,631.788 536.916,649.755C533.139,653.742 527.889,656 522.397,656L452,656C440.954,656 432,647.046 432,636C432,626.32 432,615.247 432,607.967C432,602.851 433.96,597.93 437.478,594.215C454.783,575.942 508.184,519.551 526.083,500.65Z" />
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M580,389.237C580,378.578 588.641,369.937 599.3,369.937C625.097,369.937 669.782,369.937 688.899,369.937C694.682,369.937 700.183,372.436 703.987,376.792C736.676,414.222 893.163,593.401 921.571,625.929C924.427,629.198 926,633.392 926,637.733C926,637.733 926,637.734 926,637.734C926,648.379 917.371,657.008 906.726,657.008L817.1,657.008C811.318,657.008 805.817,654.51 802.013,650.155C769.332,612.742 612.909,433.673 584.448,401.092C581.58,397.809 580,393.598 580,389.239C580,389.238 580,389.237 580,389.237Z" />
|
||||
</group>
|
||||
</vector>
|
||||
`;
|
||||
|
||||
// RNTP 4.1.2 uses ExoPlayer's generic circular-play drawable whenever no JS
|
||||
// icon resolves. An app-level resource with the same name overrides that
|
||||
// default in release, debug and the temporary foreground-service notification.
|
||||
const NOTIFICATION_ICON_OVERRIDE = `<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<item name="exo_notification_small_icon" type="drawable">@drawable/astra_notification_icon</item>
|
||||
</resources>
|
||||
`;
|
||||
|
||||
const SETTINGS_BLOCK = `
|
||||
|
||||
@@ -158,9 +196,35 @@ function ensureOptionalCameraFeature(androidManifest) {
|
||||
manifest['uses-feature'] = features;
|
||||
}
|
||||
|
||||
async function writeNotificationIconResources(platformProjectRoot) {
|
||||
const resourceRoot = path.join(platformProjectRoot, 'app', 'src', 'main', 'res');
|
||||
const drawableDir = path.join(resourceRoot, 'drawable');
|
||||
const valuesDir = path.join(resourceRoot, 'values');
|
||||
|
||||
await Promise.all([
|
||||
fs.mkdir(drawableDir, { recursive: true }),
|
||||
fs.mkdir(valuesDir, { recursive: true }),
|
||||
]);
|
||||
await Promise.all([
|
||||
fs.writeFile(path.join(drawableDir, NOTIFICATION_ICON_FILE), NOTIFICATION_ICON_VECTOR),
|
||||
fs.writeFile(path.join(valuesDir, NOTIFICATION_OVERRIDE_FILE), NOTIFICATION_ICON_OVERRIDE),
|
||||
]);
|
||||
}
|
||||
|
||||
function withAstraNotificationIcon(config) {
|
||||
return withDangerousMod(config, [
|
||||
'android',
|
||||
async (mod) => {
|
||||
await writeNotificationIconResources(mod.modRequest.platformProjectRoot);
|
||||
return mod;
|
||||
},
|
||||
]);
|
||||
}
|
||||
|
||||
function withAstraAndroidRelease(config) {
|
||||
config = withVendoredKotlinAudio(config);
|
||||
config = withReleaseSigning(config);
|
||||
config = withAstraNotificationIcon(config);
|
||||
return withProfileableRelease(config);
|
||||
}
|
||||
|
||||
@@ -169,7 +233,12 @@ module.exports._internal = {
|
||||
PROJECT_BUILD_MARKER,
|
||||
SETTINGS_MARKER,
|
||||
SIGNING_MARKER,
|
||||
NOTIFICATION_ICON_FILE,
|
||||
NOTIFICATION_ICON_VECTOR,
|
||||
NOTIFICATION_OVERRIDE_FILE,
|
||||
NOTIFICATION_ICON_OVERRIDE,
|
||||
addReleaseSigning,
|
||||
appendBlock,
|
||||
ensureOptionalCameraFeature,
|
||||
writeNotificationIconResources,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user