react-native-zalo-auth
Version:
Zalo SDK for React Native
109 lines (105 loc) • 3.9 kB
JavaScript
import { withAndroidManifest, withStringsXml, withPlugins, withMainActivity, withMainApplication } from '@expo/config-plugins';
const withZaloAndroidManifest = (config, appId) => withAndroidManifest(config, manifestConfig => {
var _androidProject$manif, _application$metaDat, _application$activity;
const androidProject = manifestConfig.modResults;
// add queries
const queries = androidProject.manifest.queries;
const exists = queries.find(q => q.package && q.package.find(p => p.$['android:name'] === 'com.zing.zalo'));
if (!exists) {
queries.push({
package: [{
$: {
'android:name': 'com.zing.zalo'
}
}]
});
}
const application = (_androidProject$manif = androidProject.manifest.application) === null || _androidProject$manif === void 0 ? void 0 : _androidProject$manif.find(item => item.$['android:name'] === '.MainApplication');
if (!application) {
return manifestConfig;
}
// add metadata
const zaloMetaExists = (_application$metaDat = application['meta-data']) === null || _application$metaDat === void 0 ? void 0 : _application$metaDat.find(item => item.$['android:name'] === 'com.zing.zalo.zalosdk.appID');
if (!zaloMetaExists) {
application['meta-data'].push({
$: {
'android:name': 'com.zing.zalo.zalosdk.appID',
'android:value': '@string/appID'
}
});
}
// add BrowserLoginActivity
const browserLoginActivityExists = (_application$activity = application.activity) === null || _application$activity === void 0 ? void 0 : _application$activity.find(item => item.$['android:name'] === 'com.zing.zalo.zalosdk.oauth.BrowserLoginActivity');
if (!browserLoginActivityExists) {
application.activity.push({
'$': {
'android:name': 'com.zing.zalo.zalosdk.oauth.BrowserLoginActivity',
'android:exported': 'true'
},
'intent-filter': [{
action: [{
$: {
'android:name': 'android.intent.action.VIEW'
}
}],
category: [{
$: {
'android:name': 'android.intent.category.DEFAULT'
}
}, {
$: {
'android:name': 'android.intent.category.BROWSABLE'
}
}],
data: [{
$: {
'android:scheme': `zalo-${appId}`
}
}]
}]
});
}
return manifestConfig;
});
const withZaloAndroidStrings = (config, appId) => withStringsXml(config, stringsConfig => {
let strings = stringsConfig.modResults.resources.string;
if (!strings) {
stringsConfig.modResults.resources.string = [];
strings = stringsConfig.modResults.resources.string;
}
const exists = strings.find(item => item.$.name === 'appID');
if (!exists) {
strings.push({
$: {
name: 'appID'
},
_: appId
});
}
return stringsConfig;
});
const withZaloAndroidMainActivity = (config, content) => withMainActivity(config, mainActivityConfig => {
mainActivityConfig.modResults.contents = content;
return mainActivityConfig;
});
/**
* @typedef {import("expo/config-plugins").ConfigPlugin} ConfigPlugin
* @param {ConfigPlugin} config
* * @param {String} content
*/
const withZaloAndroidMainApplication = (config, content) => withMainApplication(config, mainApplicationConfig => {
mainApplicationConfig.modResults.contents = content;
return mainApplicationConfig;
});
/**
* @typedef {import("expo/config-plugins").ConfigPlugin} ConfigPlugin
* @param {ConfigPlugin} config
* @param {String} appId
*/
const withAndroid = (config, {
appId,
mainActivityContent,
mainApplicationContent
}) => withPlugins(config, [[withZaloAndroidManifest, appId], [withZaloAndroidStrings, appId], [withZaloAndroidMainActivity, mainActivityContent], [withZaloAndroidMainApplication, mainApplicationContent]]);
export default withAndroid;
//# sourceMappingURL=withAndroid.js.map