UNPKG

4.63 kBSource Map (JSON)View Raw
1{"version":3,"file":"IntentFilters.js","sourceRoot":"","sources":["../../src/android/IntentFilters.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAKhC,oFAAoF;AAEpF,SAAgB,gBAAgB,CAAC,MAAkB;;IACjD,kBAAO,MAAM,CAAC,OAAO,0CAAE,aAAa,uCAAI,EAAE,EAAC;AAC7C,CAAC;AAFD,4CAEC;AAEM,KAAK,UAAU,uBAAuB,CAAC,MAAkB,EAAE,gBAA0B;IAC1F,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;QACzB,OAAO,gBAAgB,CAAC;KACzB;IAED,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAC5B,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAE5E,IAAI,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CACzE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,eAAe,CACvD,CAAC;IAEF,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CACxE,iBAAiB,CAAC,eAAe,CAAC,CACnC,CAAC;IAEF,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAnBD,0DAmBC;AAED,SAAwB,mBAAmB,CAAC,aAAkB;IAC5D,4CAA4C;IAC5C,IAAI;IACJ,qBAAqB;IACrB,mCAAmC;IACnC,oCAAoC;IACpC,EAAE;IACF,0DAA0D;IAC1D,EAAE;IACF,iEAAiE;IACjE,mEAAmE;IACnE,uBAAuB;IACvB,QAAQ;IACR,IAAI;IACJ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,YAAiB,EAAE,EAAE;QAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;QAE/E,OAAO,iBAAiB,UAAU;QAC9B,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC;oDACG,YAAY,CAAC,MAAM;QAC/D,0BAA0B,CAAC,YAAY,CAAC,QAAQ,CAAC;qBACpC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAvBD,sCAuBC;AAED,SAAS,8BAA8B,CAAC,KAAU;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACtB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;SAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAS;IACvC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACzC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAa;IAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SACrD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,mDAAmD,GAAG,KAAK,CAAC;SACvE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC","sourcesContent":["import { Parser } from 'xml2js';\n\nimport { ExpoConfig } from '../Config.types';\nimport { Document } from './Manifest';\n\n// TODO: make it so intent filters aren't written again if you run the command again\n\nexport function getIntentFilters(config: ExpoConfig) {\n return config.android?.intentFilters ?? [];\n}\n\nexport async function setAndroidIntentFilters(config: ExpoConfig, manifestDocument: Document) {\n const intentFilters = getIntentFilters(config);\n if (!intentFilters.length) {\n return manifestDocument;\n }\n\n let intentFiltersXML = renderIntentFilters(intentFilters).join('');\n const parser = new Parser();\n const intentFiltersJSON = await parser.parseStringPromise(intentFiltersXML);\n\n let mainActivity = manifestDocument.manifest.application[0].activity.filter(\n (e: any) => e['$']['android:name'] === '.MainActivity'\n );\n\n mainActivity[0]['intent-filter'] = mainActivity[0]['intent-filter'].concat(\n intentFiltersJSON['intent-filter']\n );\n\n return manifestDocument;\n}\n\nexport default function renderIntentFilters(intentFilters: any) {\n // returns an array of <intent-filter> tags:\n // [\n // `<intent-filter>\n // <data android:scheme=\"exp\"/>\n // <data android:scheme=\"exps\"/>\n //\n // <action android:name=\"android.intent.action.VIEW\"/>\n //\n // <category android:name=\"android.intent.category.DEFAULT\"/>\n // <category android:name=\"android.intent.category.BROWSABLE\"/>\n // </intent-filter>`,\n // ...\n // ]\n return intentFilters.map((intentFilter: any) => {\n const autoVerify = intentFilter.autoVerify ? ' android:autoVerify=\"true\"' : '';\n\n return `<intent-filter${autoVerify}>\n ${renderIntentFilterData(intentFilter.data)}\n <action android:name=\"android.intent.action.${intentFilter.action}\"/>\n ${renderIntentFilterCategory(intentFilter.category)}\n </intent-filter>`;\n });\n}\n\nfunction renderIntentFilterDatumEntries(datum: any) {\n return Object.keys(datum)\n .map(key => `android:${key}=\"${datum[key]}\"`)\n .join(' ');\n}\n\nfunction renderIntentFilterData(data: any) {\n return (Array.isArray(data) ? data : [data])\n .map(datum => `<data ${renderIntentFilterDatumEntries(datum)}/>`)\n .join('\\n');\n}\n\nfunction renderIntentFilterCategory(category: any) {\n return (Array.isArray(category) ? category : [category])\n .map(cat => `<category android:name=\"android.intent.category.${cat}\"/>`)\n .join('\\n');\n}\n"]}
\No newline at end of file