Compare commits

...
Author SHA1 Message Date
evanbacon e57c2a75a2 Update app.json 2022-05-27 11:54:42 -05:00
evanbacon 92776140fe wip 2022-05-27 11:53:49 -05:00
25 changed files with 492 additions and 1 deletions

No files matched your search

@@ -0,0 +1,80 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
Whitespace-only changes.
@@ -0,0 +1,16 @@
const path = require("path");
const folderName = path.basename(__dirname);
const cleanName = folderName.replace(/[_\s-]/g, "");
const appId = "dev.bacon." + cleanName;
module.exports = ({ config }) => {
if (!config.extra) config.extra = {};
// Expose CI env variables to the app
config.extra.CI = process.env.CI;
if (!config.ios) config.ios = {};
config.ios.bundleIdentifier = appId;
if (!config.android) config.android = {};
config.android.package = appId;
return config;
};
+8
View File
@@ -0,0 +1,8 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon?icon=1f334",
"plugins": [
"@config-plugins/airbridge-react-native-sdk"
]
}
}
@@ -0,0 +1,6 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
+5
View File
@@ -0,0 +1,5 @@
import { registerRootComponent } from "expo";
import App from "./src/App";
registerRootComponent(App);
@@ -0,0 +1,6 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
@@ -0,0 +1,25 @@
{
"name": "@config-plugins-app/airbridge-react-native-sdk",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/airbridge-react-native-sdk": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"airbridge-react-native-sdk": "^1.4.5",
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9"
},
"private": true
}
@@ -0,0 +1,10 @@
import React from "react";
import { Text, View } from "react-native";
export default function App() {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>airbridge-react-native-sdk</Text>
</View>
);
}
@@ -0,0 +1,2 @@
// @generated by expo-module-scripts
module.exports = require('expo-module-scripts/eslintrc.base.js');
@@ -0,0 +1,50 @@
# @config-plugins/airbridge-react-native-sdk
Expo Config Plugin to auto configure [`airbridge-react-native-sdk`](https://www.npmjs.com/package/airbridge-react-native-sdk) when the native code is generated (`expo prebuild`).
## Expo installation
> Tested against Expo SDK 42
This package cannot be used in the "Expo Go" app because [it requires custom native code](https://docs.expo.io/workflow/customizing/).
- First install the package with yarn, npm, or [`expo install`](https://docs.expo.io/workflow/expo-cli/#expo-install).
```sh
expo install airbridge-react-native-sdk @config-plugins/airbridge-react-native-sdk
```
After installing this npm package, add the [config plugin](https://docs.expo.io/guides/config-plugins/) to the [`plugins`](https://docs.expo.io/versions/latest/config/app/#plugins) array of your `app.json` or `app.config.js`:
```json
{
"expo": {
"plugins": ["@config-plugins/airbridge-react-native-sdk"]
}
}
```
Next, rebuild your app as described in the ["Adding custom native code"](https://docs.expo.io/workflow/customizing/) guide.
## API
The plugin provides props for extra customization. Every time you change the props or plugins, you'll need to rebuild (and `prebuild`) the native app. If no extra properties are added, defaults will be used.
- `foobar` (_boolean_): Does XYZ. Default `false`.
#### Example
```json
{
"expo": {
"plugins": [
[
"@config-plugins/airbridge-react-native-sdk",
{
// props ...
}
]
]
}
}
```
@@ -0,0 +1,3 @@
# Gradle files
.gradle/
build/
@@ -0,0 +1,67 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
group = 'host.exp.exponent'
version = '2.0.0'
buildscript {
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
if (expoModulesCorePlugin.exists()) {
apply from: expoModulesCorePlugin
applyKotlinExpoModulesCorePlugin()
}
// Simple helper that allows the root project to override versions declared by this library.
ext.safeExtGet = { prop, fallback ->
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}
// Ensures backward compatibility
ext.getKotlinVersion = {
if (ext.has("kotlinVersion")) {
ext.kotlinVersion()
} else {
ext.safeExtGet("kotlinVersion", "1.6.10")
}
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${getKotlinVersion()}")
}
}
android {
compileSdkVersion safeExtGet("compileSdkVersion", 31)
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.majorVersion
}
defaultConfig {
minSdkVersion safeExtGet("minSdkVersion", 21)
targetSdkVersion safeExtGet("targetSdkVersion", 31)
versionCode 2
versionName '2.0.0'
}
lintOptions {
abortOnError false
}
}
dependencies {
implementation project(':expo-modules-core')
// implementation project(':react-native-branch')
//noinspection GradleDynamicVersion
implementation 'com.facebook.react:react-native:+'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}"
}
@@ -0,0 +1,2 @@
<manifest package="expo.modules.adapters.airbridge">
</manifest>
@@ -0,0 +1,15 @@
package expo.modules.adapters.airbridge
import android.app.Application
import android.content.Context
import expo.modules.core.interfaces.ApplicationLifecycleListener
// import io.branch.rnbranch.RNBranchModule
class AirbridgeApplicationLifecycleListener(context: Context?) : ApplicationLifecycleListener {
var context = context
override fun onCreate(application: Application) {
super.onCreate(application)
// RNBranchModule.getAutoInstance(this.context)
}
}
@@ -0,0 +1,15 @@
package expo.modules.adapters.airbridge
import android.content.Context
import expo.modules.core.interfaces.ApplicationLifecycleListener
import expo.modules.core.interfaces.Package
import expo.modules.core.interfaces.ReactActivityLifecycleListener
class AirbridgePackage : Package {
override fun createApplicationLifecycleListeners(context: Context?): List<ApplicationLifecycleListener> {
return listOf(AirbridgeApplicationLifecycleListener(context))
}
override fun createReactActivityLifecycleListeners(activityContext: Context): List<ReactActivityLifecycleListener> {
return listOf(AirbridgeReactActivityLifecycleListener(activityContext))
}
}
@@ -0,0 +1,22 @@
package expo.modules.adapters.airbridge
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import expo.modules.core.interfaces.ReactActivityLifecycleListener
// import io.airbridge.rnbranch.RNBranchModule
class AirbridgeReactActivityLifecycleListener(activityContext: Context) : ReactActivityLifecycleListener {
override fun onCreate(activity: Activity, savedInstanceState: Bundle?) {
// RNBranchModule.initSession(activity.getIntent().getData(), activity);
}
override fun onNewIntent(intent: Intent?): Boolean {
if (intent != null) {
// RNBranchModule.onNewIntent(intent);
}
return super.onNewIntent(intent)
}
}
@@ -0,0 +1 @@
module.exports = require("./build/withAirbridgeReactNativeSdk");
@@ -0,0 +1,9 @@
{
"platforms": [
"android",
"ios"
],
"ios": {
"appDelegateSubscribers": ["AirbridgeAppDelegate"]
}
}
@@ -0,0 +1,35 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
Pod::Spec.new do |s|
s.name = 'ExpoAdapterAirbridge'
s.version = package['version']
s.summary = package['description']
s.description = package['description']
s.license = package['license']
s.author = package['author']
s.homepage = package['homepage']
s.platform = :ios, '12.0'
s.swift_version = '5.4'
s.source = { git: 'https://github.com/expo/config-plugins.git' }
s.static_framework = true
# s.compiler_flags = %(-DRNBRANCH_VERSION=@\\"#{package['dependencies']['react-native-branch']}\\")
s.dependency 'ExpoModulesCore'
s.dependency 'React-Core'
# s.dependency 'react-native-branch'
# Swift/Objective-C compatibility
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES'
}
if !$ExpoUseSources&.include?(package['name']) && ENV['EXPO_USE_SOURCE'].to_i == 0 && File.exist?("#{s.name}.xcframework") && Gem::Version.new(Pod::VERSION) >= Gem::Version.new('1.10.0')
s.source_files = "#{s.name}/**/*.h"
s.vendored_frameworks = "#{s.name}.xcframework"
else
s.source_files = "#{s.name}/**/*.{h,m,swift}"
end
end
@@ -0,0 +1,18 @@
import ExpoModulesCore
import AirbridgeRN
public class AirbridgeAppDelegate: ExpoAppDelegateSubscriber {
public func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
AirbridgeRN.getInstance("YOUR_APP_TOKEN", appName:"YOUR_APP_NAME", withLaunchOptions:launchOptions)
// RNBranch.initSession(launchOptions: launchOptions, isReferrable: true)
return true
}
// public func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
// return RNBranch.application(application, open:url, options:options)
// }
// public func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// return RNBranch.continue(userActivity)
// }
}
@@ -0,0 +1,49 @@
{
"name": "@config-plugins/airbridge-react-native-sdk",
"version": "0.0.0",
"description": "Config plugin for airbridge-react-native-sdk package",
"author": "650 Industries, Inc.",
"license": "MIT",
"homepage": "https://github.com/expo/config-plugins/tree/main/packages/airbridge-react-native-sdk",
"main": "build/withAirbridgeReactNativeSdk.js",
"types": "build/withAirbridgeReactNativeSdk.d.ts",
"sideEffects": false,
"repository": {
"type": "git",
"url": "https://github.com/expo/config-plugins.git",
"directory": "packages/airbridge-react-native-sdk"
},
"files": [
"android",
"app.plugin.js",
"build",
"expo-module.config.json",
"ios"
],
"scripts": {
"build": "expo-module build",
"clean": "expo-module clean",
"lint": "expo-module lint",
"test": "expo-module test",
"prepare": "expo-module prepare",
"prepublishOnly": "expo-module prepublishOnly",
"expo-module": "expo-module"
},
"keywords": [
"react",
"expo",
"config-plugins",
"prebuild",
"airbridge-react-native-sdk",
"expo-42"
],
"jest": {
"preset": "expo-module-scripts"
},
"dependencies": {
"@expo/config-plugins": "^4.1.0"
},
"devDependencies": {
"expo-module-scripts": "^2.0.0"
}
}
@@ -0,0 +1,25 @@
import { ConfigPlugin, createRunOncePlugin } from "@expo/config-plugins";
/**
* Apply airbridge-react-native-sdk configuration for Expo SDK 42 projects.
*/
const withAirbridgeReactNativeSdk: ConfigPlugin<{} | void> = (config, _props = {}) => {
// Support passing no props to the plugin.
const props = _props || {};
// Return the modified config.
return config;
};
const pkg = {
// Prevent this plugin from being run more than once.
// This pattern enables users to safely migrate off of this
// out-of-tree `@config-plugins/airbridge-react-native-sdk` to a future
// upstream plugin in `airbridge-react-native-sdk`
name: "airbridge-react-native-sdk",
// Indicates that this plugin is dangerously linked to a module,
// and might not work with the latest version of that module.
version: "UNVERSIONED",
};
export default createRunOncePlugin(withAirbridgeReactNativeSdk, pkg.name, pkg.version);
@@ -0,0 +1,8 @@
{
"extends": "expo-module-scripts/tsconfig.plugin",
"compilerOptions": {
"outDir": "./build"
},
"include": ["./src"],
"exclude": ["**/__mocks__/*", "**/__tests__/*"]
}
+15 -1
View File
@@ -1402,7 +1402,7 @@
node-forge "^1.2.1"
nullthrows "^1.1.1"
"@expo/[email protected]", "@expo/[email protected]", "@expo/[email protected]", "@expo/[email protected]", "@expo/config-plugins@^4.0.14", "@expo/config-plugins@~4.1.4":
"@expo/[email protected]", "@expo/[email protected]", "@expo/[email protected]", "@expo/[email protected]", "@expo/config-plugins@^4.0.14", "@expo/config-plugins@^4.1.0", "@expo/config-plugins@~4.1.4":
version "4.1.4"
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-4.1.4.tgz#08e1a6314dc0f96cd165a748b5997b5ec75a84d0"
integrity sha512-fkOjXnSieQfVSWVLKhst0DnCAyeHksvWky1CldFCQllhDB1HHBiP09Z8pamVB783n3qr/1HNZiSp6k2iUcaSoA==
@@ -4976,6 +4976,15 @@ airbnb-prop-types@^2.16.0:
prop-types-exact "^1.2.0"
react-is "^16.13.1"
airbridge-react-native-sdk@^1.4.5:
version "1.4.5"
resolved "https://registry.yarnpkg.com/airbridge-react-native-sdk/-/airbridge-react-native-sdk-1.4.5.tgz#281d370b4ff3f4491b80d8a0d6d771de5024c4b9"
integrity sha512-gdpm+p5m6pk5CPQ/hrW+ll5qs3xFunwMDZR3A4v8oRpGSoqDQrelBflWwf3B/ay9dSFwBARfdOsj4H+Mho/LpQ==
dependencies:
lodash.isfunction "^3.0.9"
lodash.isplainobject "^4.0.6"
lodash.isstring "^4.0.1"
ajv-errors@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
@@ -13134,6 +13143,11 @@ lodash.isequal@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
lodash.isfunction@^3.0.9:
version "3.0.9"
resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051"
integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==
lodash.ismatch@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37"