about summary refs log tree commit diff
path: root/plugins/withAppDelegateReferrer.js
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/withAppDelegateReferrer.js')
-rw-r--r--plugins/withAppDelegateReferrer.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/plugins/withAppDelegateReferrer.js b/plugins/withAppDelegateReferrer.js
new file mode 100644
index 000000000..de773df07
--- /dev/null
+++ b/plugins/withAppDelegateReferrer.js
@@ -0,0 +1,41 @@
+const {withAppDelegate} = require('@expo/config-plugins')
+const {mergeContents} = require('@expo/config-plugins/build/utils/generateCode')
+const path = require('path')
+const fs = require('fs')
+
+module.exports = config => {
+  // eslint-disable-next-line no-shadow
+  return withAppDelegate(config, async config => {
+    const delegatePath = path.join(
+      config.modRequest.platformProjectRoot,
+      'AppDelegate.mm',
+    )
+
+    let newContents = config.modResults.contents
+    newContents = mergeContents({
+      src: newContents,
+      anchor: '// Linking API',
+      newSrc: `
+  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+  [defaults setObject:options[UIApplicationOpenURLOptionsSourceApplicationKey] forKey:@"referrerApp"];\n`,
+      offset: 2,
+      tag: 'referrer info - deep links',
+      comment: '//',
+    }).contents
+
+    newContents = mergeContents({
+      src: newContents,
+      anchor: '// Universal Links',
+      newSrc: `
+  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+  [defaults setURL:userActivity.referrerURL forKey:@"referrer"];\n`,
+      offset: 2,
+      tag: 'referrer info - universal links',
+      comment: '//',
+    }).contents
+
+    config.modResults.contents = newContents
+
+    return config
+  })
+}