react-native-zalo-auth
Version:
Zalo SDK for React Native
115 lines (110 loc) • 4.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _configPlugins = require("@expo/config-plugins");
const withZaloAndroidManifest = (config, appId) => (0, _configPlugins.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) => (0, _configPlugins.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) => (0, _configPlugins.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) => (0, _configPlugins.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
}) => (0, _configPlugins.withPlugins)(config, [[withZaloAndroidManifest, appId], [withZaloAndroidStrings, appId], [withZaloAndroidMainActivity, mainActivityContent], [withZaloAndroidMainApplication, mainApplicationContent]]);
var _default = exports.default = withAndroid;
//# sourceMappingURL=withAndroid.js.map