mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-07-14 13:34:07 +00:00
* version & microphonePermission text & eslint * remove polyfill as hermes supports intl now * why do we have solid on mobile? * cleanup * add solid back =_= * pnpm lock * we hate relative paths here * android config * open file logic * visual tweaks --------- Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
90 lines
2.9 KiB
JavaScript
90 lines
2.9 KiB
JavaScript
/*
|
|
* If you add an asset you need to run `npx expo prebuild`
|
|
* If you rename or delete an asset you need to run `npx expo prebuild --clean` to delete them in your android and ios folder as well.
|
|
*/
|
|
|
|
const { withDangerousMod, withXcodeProject, IOSConfig } = require('@expo/config-plugins');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// Specify the source directory of your assets
|
|
const ASSET_SOURCE_DIR = 'assets/rive';
|
|
|
|
const IOS_GROUP_NAME = 'Rivassets';
|
|
|
|
const withRiveAssets = (config) => {
|
|
config = addAndroidResources(config);
|
|
config = addIOSResources(config);
|
|
return config;
|
|
};
|
|
|
|
// Code inspired by https://github.com/rive-app/rive-react-native/issues/185#issuecomment-1593396573
|
|
function addAndroidResources(config) {
|
|
return withDangerousMod(config, [
|
|
'android',
|
|
async (config) => {
|
|
// Get the path to the Android project directory
|
|
const projectRoot = config.modRequest.projectRoot;
|
|
|
|
// Get the path to the Android resources directory
|
|
const resDir = path.join(projectRoot, 'android', 'app', 'src', 'main', 'res');
|
|
|
|
// Create the 'raw' directory if it doesn't exist
|
|
const rawDir = path.join(resDir, 'raw');
|
|
fs.mkdirSync(rawDir, { recursive: true });
|
|
|
|
// Get the path to the assets directory
|
|
const assetSourcePath = path.join(projectRoot, ASSET_SOURCE_DIR);
|
|
|
|
// Retrieve all files in the assets directory
|
|
const assetFiles = fs.readdirSync(assetSourcePath);
|
|
|
|
// Move each asset file to the resources 'raw' directory
|
|
for (const assetFile of assetFiles) {
|
|
const srcAssetPath = path.join(assetSourcePath, assetFile);
|
|
const destAssetPath = path.join(rawDir, assetFile);
|
|
fs.copyFileSync(srcAssetPath, destAssetPath);
|
|
}
|
|
|
|
return config;
|
|
}
|
|
]);
|
|
}
|
|
|
|
// Code inspired by https://github.com/expo/expo/blob/61f8cf8d4b3cf5f8bf61f346476ebdb4aff40545/packages/expo-font/plugin/src/withFontsIos.ts
|
|
function addIOSResources(config) {
|
|
return withXcodeProject(config, async (config) => {
|
|
const project = config.modResults;
|
|
const platformProjectRoot = config.modRequest.platformProjectRoot;
|
|
|
|
// Create Assets group in project
|
|
IOSConfig.XcodeUtils.ensureGroupRecursively(project, IOS_GROUP_NAME);
|
|
|
|
// Get riv filepaths
|
|
const projectRoot = config.modRequest.projectRoot;
|
|
const assetSourcePath = path.join(projectRoot, ASSET_SOURCE_DIR);
|
|
const assetFiles = fs.readdirSync(assetSourcePath);
|
|
const assetFilesPaths = assetFiles.map((assetFile) => `${assetSourcePath}/${assetFile}`);
|
|
|
|
// Add assets to group
|
|
addIOSResourceFile(project, platformProjectRoot, assetFilesPaths);
|
|
|
|
return config;
|
|
});
|
|
|
|
function addIOSResourceFile(project, platformRoot, assetFilesPaths) {
|
|
for (const riveFile of assetFilesPaths) {
|
|
const riveFilePath = path.relative(platformRoot, riveFile);
|
|
IOSConfig.XcodeUtils.addResourceFileToGroup({
|
|
filepath: riveFilePath,
|
|
groupName: IOS_GROUP_NAME,
|
|
project,
|
|
isBuildFile: true,
|
|
verbose: true
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = withRiveAssets;
|