From d451f82f54974b7b3da1477a7e1f221628860f62 Mon Sep 17 00:00:00 2001 From: Hailey Date: Tue, 27 Feb 2024 15:22:03 -0800 Subject: Share Extension/Intents (#2587) * add native ios code outside of ios project * helper script * going to be a lot of these commits to squash...backing up * save * start of an expo plugin * create info.plist * copy the view controller * maybe working * working * wait working now * working plugin * use current scheme * update intent path * use better params * support text in uri * build * use better encoding * handle images * cleanup ios plugin * android * move bash script to /scripts * handle cases where loaded data is uiimage rather than uri * remove unnecessary logic, allow more than 4 images and just take first 4 * android build plugin * limit images to four on android * use js for plugins, no need to build * revert changes to app config * use correct scheme on android * android readme * move ios extension to /modules * remove unnecessary event * revert typo * plugin readme * scripts readme * add configurable scheme to .env, default to `bluesky` * remove debug * revert .gitignore change * add comment about updating .env to app.config.js for those modifying scheme * modify .env * update android module to use the proper url * update ios extension * remove comment * parse and validate incoming image uris * fix types * rm oops * fix a few typos --- plugins/shareExtension/withShareExtensions.js | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 plugins/shareExtension/withShareExtensions.js (limited to 'plugins/shareExtension/withShareExtensions.js') diff --git a/plugins/shareExtension/withShareExtensions.js b/plugins/shareExtension/withShareExtensions.js new file mode 100644 index 000000000..55a26c75e --- /dev/null +++ b/plugins/shareExtension/withShareExtensions.js @@ -0,0 +1,47 @@ +const {withPlugins} = require('@expo/config-plugins') +const {withAppEntitlements} = require('./withAppEntitlements') +const {withXcodeTarget} = require('./withXcodeTarget') +const {withExtensionEntitlements} = require('./withExtensionEntitlements') +const {withExtensionInfoPlist} = require('./withExtensionInfoPlist') +const {withExtensionViewController} = require('./withExtensionViewController') +const {withIntentFilters} = require('./withIntentFilters') + +const SHARE_EXTENSION_NAME = 'Share-with-Bluesky' +const SHARE_EXTENSION_CONTROLLER_NAME = 'ShareViewController' + +const withShareExtensions = config => { + return withPlugins(config, [ + // IOS + withAppEntitlements, + [ + withExtensionEntitlements, + { + extensionName: SHARE_EXTENSION_NAME, + }, + ], + [ + withExtensionInfoPlist, + { + extensionName: SHARE_EXTENSION_NAME, + }, + ], + [ + withExtensionViewController, + { + extensionName: SHARE_EXTENSION_NAME, + controllerName: SHARE_EXTENSION_CONTROLLER_NAME, + }, + ], + [ + withXcodeTarget, + { + extensionName: SHARE_EXTENSION_NAME, + controllerName: SHARE_EXTENSION_CONTROLLER_NAME, + }, + ], + // Android + withIntentFilters, + ]) +} + +module.exports = withShareExtensions -- cgit 1.4.1