Compare commits

...
Author SHA1 Message Date
semantic-release-bot fc16d69ba6 chore: 2.0.0
## @config-plugins/react-native-pdf [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-08-04)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-08-04 16:53:20 +00:00
Fabrizio Rizzonelli bf11a17a81 docs: added expo-appcenter to the list of plugin (#95) 2022-08-04 18:50:24 +02:00
semantic-release-bot b3c6210ffc chore: 2.0.1
### @config-plugins/react-native-ble-plx [2.0.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-07-25)

### Bug Fixes

* **react-native-ble-plx:** Added new Bluetooth specific permission for Android 12 (SDK 31). ([#91](https://github.com/expo/config-plugins/issues/91)) ([d3df63f](https://github.com/expo/config-plugins/commit/d3df63fbb2344251b9b371959de3ce6e4b9ab0cd))
2022-07-25 12:57:23 +00:00
Tom d3df63fbb2 fix(react-native-ble-plx): Added new Bluetooth specific permission for Android 12 (SDK 31). (#91)
* fix(react-native-ble-plx): Added new Bluetooth specific permission for Android SDK 31.

Expo SDK 45 targets Android SDK 31 which requires new Bluetooth specific permissions. Without these new permissions Android 12 (SDK 31) devices don't get access to BLE.

* Update README.md

* chore(react-native-ble-plx): Added `tools:targetApi="31"` to Android Manifest (for Lint).
2022-07-25 14:54:10 +02:00
semantic-release-bot 057c6bd978 chore: 2.0.0
## @config-plugins/react-native-callkeep [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-07-25)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-07-25 11:16:39 +00:00
Michael WoodandEvan Bacon 3fbc237fd6 Add react-native-multiple-image-picker (#92)
Co-authored-by: Evan Bacon <[email protected]>
2022-07-25 13:13:39 +02:00
Joseph Odunsi 6603ab3215 Update README.md (#93)
Add shopify flashlist
2022-07-25 13:13:03 +02:00
semantic-release-bot 9f49f02401 chore: 1.0.0
## @config-plugins/react-native-siri-shortcut 1.0.0 (2022-07-12)

### Features

* **siri-shortcut:** Add config plugin ([#86](https://github.com/expo/config-plugins/issues/86)) ([226b2a6](https://github.com/expo/config-plugins/commit/226b2a6412ad3fe75c98952831fab5a63254d19f))

### Other chores

* **react-native-siri-shortcut:** add tests ([#88](https://github.com/expo/config-plugins/issues/88)) ([994fadc](https://github.com/expo/config-plugins/commit/994fadc8ddf9ee858f2ccb7d544674f107f7f9ad))
2022-07-12 12:04:10 +00:00
Evan Bacon 14dc560092 Update README.md 2022-07-12 14:01:17 +02:00
Evan Bacon 2dcaff6772 Update README.md 2022-07-12 13:17:20 +02:00
Evan Bacon 68190997b6 Update README.md 2022-07-12 10:39:42 +02:00
semantic-release-bot 74f55fc342 chore: 2.0.2
### @config-plugins/ios-stickers [2.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-06-30)

### Other chores

* **deps-dev:** bump memfs in /packages/ios-stickers ([#83](https://github.com/expo/config-plugins/issues/83)) ([764a047](https://github.com/expo/config-plugins/commit/764a04710bea6e66dbc6d0065812acb1591435fb))
2022-06-30 17:32:49 +00:00
Evan Bacon e32378e8ed Add App Clips and Safari Extensions to Awesome list 2022-06-30 19:29:09 +02:00
dependabot[bot] 764a04710b chore(deps-dev): bump memfs in /packages/ios-stickers (#83) 2022-06-18 18:06:21 +02:00
Eugene Nagorny 837602af36 Update README.md (#89) 2022-06-18 18:04:46 +02:00
semantic-release-bot af22acc509 chore: 2.0.0
## @config-plugins/react-native-dynamic-app-icon [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-06-14)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-06-14 12:21:20 +00:00
Evan Bacon 994fadc8dd chore(react-native-siri-shortcut): add tests (#88)
* add: tests for siri

* add: unit tests

* chore: update repo settings

* chore: noop android

* Update withReactNativeSiriShortcut.ts
2022-06-14 14:17:45 +02:00
semantic-release-bot 987b109e46 chore: 2.0.0
## @config-plugins/react-native-quick-actions [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-06-13)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-06-13 13:35:03 +00:00
Derek W. Stavis 226b2a6412 feat(siri-shortcut): Add config plugin (#86) 2022-06-13 15:31:30 +02:00
semantic-release-bot d1a2929130 chore: 2.0.0
## @config-plugins/react-native-google-cast [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-30)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-05-30 22:16:53 +00:00
Evan Bacon a04de8a0e0 Update README.md 2022-05-30 17:13:19 -05:00
semantic-release-bot 20a4ecf8a8 chore: 2.0.1
### @config-plugins/ios-stickers [2.0.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-30)

### Bug Fixes

* **ios-stickers:** fix app icon generation ([#82](https://github.com/expo/config-plugins/issues/82)) ([190c489](https://github.com/expo/config-plugins/commit/190c489b764f285dbbecfa42fd7ee953fc849dcb))
2022-05-30 21:58:52 +00:00
Evan Bacon 9e8a90d523 Update README.md 2022-05-30 16:54:34 -05:00
semantic-release-bot 9c79b293d8 chore: 2.0.0
## @config-plugins/ffmpeg-kit-react-native [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-30)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-05-30 21:27:42 +00:00
evanbacon 77eb67c5b6 Publish @config-plugins/[email protected] 2022-05-30 16:24:03 -05:00
Evan Bacon 190c489b76 fix(ios-stickers): fix app icon generation (#82) 2022-05-27 16:46:49 -05:00
semantic-release-bot 6c898afd0e chore: 2.0.0
## @config-plugins/react-native-ble-plx [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-27)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-05-27 15:20:49 +00:00
evanbacon b55b04d5fd Update issue template with branch 2022-05-27 10:17:47 -05:00
evanbacon 0c7b413a76 chore: publish packages [no-ci] 2022-05-13 12:10:38 -05:00
semantic-release-bot 731c5b07b4 chore: 2.0.0
## @config-plugins/ios-stickers [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-12)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))
2022-05-12 21:59:06 +00:00
Evan Bacon 96c72dda46 feat!: add SDK 45 support (#79)
* feat!: add SDK 45 support

upgrade app dependencies

* update yarn

* Delete withIosDeploymentTarget-test.ts
2022-05-12 16:56:04 -05:00
218 changed files with 5675 additions and 3007 deletions

No files matched your search

+3 -1
View File
@@ -1,4 +1,4 @@
name: "\U0001F41B Expo Config Plugin Bug Report" name: 🐛 Expo Config Plugin Bug Report
description: Report a reproducible bug with one of the Expo Config Plugins. description: Report a reproducible bug with one of the Expo Config Plugins.
labels: bug labels: bug
body: body:
@@ -36,11 +36,13 @@ body:
- '@config-plugins/react-native-adjust' - '@config-plugins/react-native-adjust'
- '@config-plugins/react-native-ble-plx' - '@config-plugins/react-native-ble-plx'
- '@config-plugins/react-native-blob-util' - '@config-plugins/react-native-blob-util'
- '@config-plugins/react-native-branch'
- '@config-plugins/react-native-callkeep' - '@config-plugins/react-native-callkeep'
- '@config-plugins/react-native-dynamic-app-icon' - '@config-plugins/react-native-dynamic-app-icon'
- '@config-plugins/react-native-google-cast' - '@config-plugins/react-native-google-cast'
- '@config-plugins/react-native-pdf' - '@config-plugins/react-native-pdf'
- '@config-plugins/react-native-quick-actions' - '@config-plugins/react-native-quick-actions'
- '@config-plugins/react-native-siri-shortcut'
- '@config-plugins/react-native-webrtc' - '@config-plugins/react-native-webrtc'
validations: validations:
required: true required: true
+27 -24
View File
@@ -1,44 +1,47 @@
--- ---
blank_issues_enabled: false blank_issues_enabled: false
contact_links: contact_links:
- name: "\U0001F914 Question about an Expo Config Plugin" - name: 🤔 Question about an Expo Config Plugin
about: >- about: >-
If you have a question about an Expo Config Plugin, please ask it on the If you have a question about an Expo Config Plugin, please ask it on the
forums, discord, Twitter, or Stack Overflow. forums, discord, Twitter, or Stack Overflow.
url: 'https://forums.expo.io/' url: https://forums.expo.io/
- about: E2E tests and automation for mobile - about: E2E tests and automation for mobile
name: "\U0001F4E6 detox issues" name: 📦 detox issues
url: 'https://github.com/wix/Detox/issues' url: https://github.com/wix/Detox/issues
- about: FFmpeg Kit for React Native - about: FFmpeg Kit for React Native
name: "\U0001F4E6 ffmpeg-kit-react-native issues" name: 📦 ffmpeg-kit-react-native issues
url: 'https://github.com/tanersener/ffmpeg-kit/issues' url: https://github.com/tanersener/ffmpeg-kit/issues
- about: Adjust React Native SDK - about: Adjust React Native SDK
name: "\U0001F4E6 react-native-adjust issues" name: 📦 react-native-adjust issues
url: 'https://github.com/adjust/react_native_sdk/issues' url: https://github.com/adjust/react_native_sdk/issues
- about: React Native Bluetooth Low Energy library - about: React Native Bluetooth Low Energy library
name: "\U0001F4E6 react-native-ble-plx issues" name: 📦 react-native-ble-plx issues
url: 'https://github.com/Polidea/react-native-ble-plx/issues' url: https://github.com/Polidea/react-native-ble-plx/issues
- about: >- - about: >-
A module provides upload, download, and files access API. Supports file A module provides upload, download, and files access API. Supports file
stream read/write for process large files. stream read/write for process large files.
name: "\U0001F4E6 react-native-blob-util issues" name: 📦 react-native-blob-util issues
url: 'https://github.com/RonRadtke/react-native-blob-util/issues' url: https://github.com/RonRadtke/react-native-blob-util/issues
- about: iOS 10 CallKit and Android ConnectionService Framework For React Native - about: iOS 10 CallKit and Android ConnectionService Framework For React Native
name: "\U0001F4E6 react-native-callkeep issues" name: 📦 react-native-callkeep issues
url: 'https://github.com/react-native-webrtc/react-native-callkeep/issues' url: https://github.com/react-native-webrtc/react-native-callkeep/issues
- about: Programmatically change the app icon in React Native. - about: Programmatically change the app icon in React Native.
name: "\U0001F4E6 react-native-dynamic-app-icon issues" name: 📦 react-native-dynamic-app-icon issues
url: 'https://github.com/idearockers/react-native-dynamic-app-icon/issues' url: https://github.com/idearockers/react-native-dynamic-app-icon/issues
- about: React Native wrapper for the Google Cast SDK for iOS and Android - about: React Native wrapper for the Google Cast SDK for iOS and Android
name: "\U0001F4E6 react-native-google-cast issues" name: 📦 react-native-google-cast issues
url: >- url: >-
https://github.com/react-native-google-cast/react-native-google-cast/issues https://github.com/react-native-google-cast/react-native-google-cast/issues
- about: 'A react native PDF view component, support ios and android platform' - about: A react native PDF view component, support ios and android platform
name: "\U0001F4E6 react-native-pdf issues" name: 📦 react-native-pdf issues
url: 'https://github.com/wonday/react-native-pdf/issues' url: https://github.com/wonday/react-native-pdf/issues
- about: A react-native interface for Touch 3D home screen quick actions - about: A react-native interface for Touch 3D home screen quick actions
name: "\U0001F4E6 react-native-quick-actions issues" name: 📦 react-native-quick-actions issues
url: 'https://github.com/jordanbyron/react-native-quick-actions/issues' url: https://github.com/jordanbyron/react-native-quick-actions/issues
- about: A React Native library that enables you to use iOS 12+ Siri Shortcuts.
name: 📦 react-native-siri-shortcut issues
url: https://github.com/Gustash/react-native-siri-shortcut/issues
- about: WebRTC for React Native - about: WebRTC for React Native
name: "\U0001F4E6 react-native-webrtc issues" name: 📦 react-native-webrtc issues
url: 'https://github.com/react-native-webrtc/react-native-webrtc/issues' url: https://github.com/react-native-webrtc/react-native-webrtc/issues
+6
View File
@@ -83,6 +83,12 @@ updates:
interval: daily interval: daily
time: '09:00' time: '09:00'
timezone: America/Los_Angeles timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-siri-shortcut
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm - package-ecosystem: npm
directory: packages/react-native-webrtc directory: packages/react-native-webrtc
schedule: schedule:
+1
View File
@@ -41,6 +41,7 @@ jobs:
react-native-ble-plx, react-native-ble-plx,
react-native-blob-util, react-native-blob-util,
react-native-branch, react-native-branch,
react-native-siri-shortcut,
react-native-google-cast, react-native-google-cast,
react-native-pdf, react-native-pdf,
# react-native-quick-actions, # react-native-quick-actions,
+7
View File
@@ -56,3 +56,10 @@ xcuserdata
packages/*/build/** packages/*/build/**
packages/*/plugin/build/** packages/*/plugin/build/**
packages/@*/*/build/** packages/@*/*/build/**
# App native folders
apps/*/ios/*
apps/*/android/*
apps/*/web-build/*
+52
View File
@@ -6,6 +6,58 @@
- All packages here are community maintained. Feel free to improve docs, packages, tests, etc. - All packages here are community maintained. Feel free to improve docs, packages, tests, etc.
- We maintain a 1-1 mapping of **native packages** ⇔ `@config-plugins/*`. This means there should be no general utility packages here -- those are better suited for a different repo / NPM namespace. - We maintain a 1-1 mapping of **native packages** ⇔ `@config-plugins/*`. This means there should be no general utility packages here -- those are better suited for a different repo / NPM namespace.
## Awesome
Here is a list of known packages that have a built-in Config Plugin.
> Not all packages need a config plugin, packages that don't appear here might still work with managed EAS.
- [React Native Firebase](https://rnfirebase.io/) (`@react-native-firebase/perf`, `@react-native-firebase/app`)
- [react-native-nfc-manager](https://github.com/revtel/react-native-nfc-manager)
- [react-native-health](https://github.com/agencyenterprise/react-native-health)
- [@react-native-mapbox-gl/maps](https://github.com/rnmapbox/maps)
- [@logrocket/react-native](https://www.npmjs.com/package/@logrocket/react-native)
- [sentry-expo](https://www.npmjs.com/package/sentry-expo)
- [@leanplum/react-native-sdk](https://github.com/Leanplum/Leanplum-ReactNative-SDK#readme)
- [react-native-fbsdk-next](https://www.npmjs.com/package/react-native-fbsdk-next)
- [@stripe/stripe-react-native](https://www.npmjs.com/package/@stripe/stripe-react-native)
- [@react-native-voice/voice](https://www.npmjs.com/package/@react-native-voice/voice)
- [react-native-imglysdk](https://www.npmjs.com/package/react-native-imglysdk)
- [@viro-community/react-viro](https://github.com/virocommunity/viro) -- [Guide](https://viro-community.readme.io/docs/integrating-with-expo)
- [react-native-msal](https://www.npmjs.com/package/react-native-msal)
- [react-native-spotlight-search](https://www.npmjs.com/package/react-native-spotlight-search)
- [newrelic-react-native-agent](https://www.npmjs.com/package/newrelic-react-native-agent)
- [react-native-videoeditorsdk](https://www.npmjs.com/package/react-native-videoeditorsdk)
- [notifee](https://notifee.app/)
- [App Clips](https://github.com/bndkt/react-native-app-clip/)
- [iOS Safari Extensions](https://github.com/andrew-levy/react-native-safari-extension/)
### Complementary
More out-of-tree plugins which can be used to configure more packages.
- [onesignal-expo-plugin](https://github.com/OneSignal/onesignal-expo-plugin) (for use with `react-native-onesignal`)
- [@lyrahealth-inc/react-native-orientation-plugin](@lyrahealth-inc/react-native-orientation-plugin) (for use with `react-native-orientation-plugin`)
- [airship-expo-plugin](https://www.npmjs.com/package/airship-expo-plugin) (for use with `urbanairship-react-native`)
- [config-plugin-react-native-intercom](https://www.npmjs.com/package/config-plugin-react-native-intercom) (for use with `intercom-react-native`)
- [@allboatsrise/expo-marketingcloudsdk](https://www.npmjs.com/package/@allboatsrise/expo-marketingcloudsdk) (for use with `react-native-marketingcloudsdk`)
- [@ouvio/react-native-background-location-plugin](https://www.npmjs.com/package/@ouvio/react-native-background-location-plugin) (for use with `react-native-background-location-plugin`)
- [expo-community-flipper](https://www.npmjs.com/package/expo-community-flipper) (for use with Flipper)
- [expo-appcenter](https://www.npmjs.com/package/expo-appcenter) (for use with `appcenter`)
### No Plugin Required
Just install and rebuild! If a package doesn't require any futher setup then it most likely doesn't need an Expo config plugin. Most packages work without a config plugin (including packages not listed below):
- [react-native-share](https://github.com/react-native-share/react-native-share)
- [@react-native-menu/menu](https://github.com/react-native-menu/menu)
- [react-native-blurhash](https://github.com/mrousavy/react-native-blurhash)
- [react-native-app-shortcuts](https://github.com/lokyoung/react-native-app-shortcuts)
- [react-native-multiple-image-picker](https://github.com/baronha/react-native-multiple-image-picker)
- [`@shopify/flash-list`](https://github.com/Shopify/flash-list)
> Feel free to [open a PR](https://github.com/expo/config-plugins/edit/main/README.md) with missing packages.
## Contributing! ## Contributing!
See the [contributing guide](/CONTRIBUTING.md). See the [contributing guide](/CONTRIBUTING.md).
+2 -8
View File
@@ -1,9 +1,3 @@
// export { default } from './src/react-native-quick-actions/App'; export { default } from './src/detox/App';
// export { default } from './src/react-native-pdf/App';
// export { default } from './src/react-native-dynamic-app-icon/App';
// export { default } from './src/react-native-google-cast/App';
// export { default } from './src/detox/App';
// export { default } from './src/react-native-ble-plx/App';
export { default } from './src/react-native-webrtc/App';
// export { default } from './src/android-jsc-intl/App'; // export { default } from './src/android-jsc-intl/App';
// export { default } from './src/ffmpeg-kit-react-native/App'; // export { default } from './src/android-jsc-adjust/App';
+4 -65
View File
@@ -4,7 +4,7 @@
"slug": "app", "slug": "app",
"version": "1.0.0", "version": "1.0.0",
"orientation": "portrait", "orientation": "portrait",
"icon": "./assets/icons/winter.png", "icon": "https://icogen.vercel.app/api/icon",
"splash": { "splash": {
"image": "./assets/splash.png", "image": "./assets/splash.png",
"resizeMode": "contain", "resizeMode": "contain",
@@ -16,86 +16,25 @@
"assetBundlePatterns": ["**/*"], "assetBundlePatterns": ["**/*"],
"ios": { "ios": {
"supportsTablet": true, "supportsTablet": true,
"bundleIdentifier": "dev.bacon.app", "bundleIdentifier": "dev.bacon.app"
"config": {
"branch": {
"apiKey": "key_live_f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8"
}
}
}, },
"android": { "android": {
"adaptiveIcon": { "adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png", "foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#FFFFFF" "backgroundColor": "#FFFFFF"
}, },
"config": {
"branch": {
"apiKey": "key_live_f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8"
}
},
"package": "com.bacon.app" "package": "com.bacon.app"
}, },
"web": { "web": {
"favicon": "./assets/favicon.png" "favicon": "./assets/favicon.png"
}, },
"plugins": [ "plugins": [
[
"@config-plugins/react-native-dynamic-app-icon",
[
"./assets/icons/spring.png",
"./assets/icons/summer.png",
"./assets/icons/autumn.png",
"./assets/icons/fall.png",
"./assets/icons/solstice.png"
]
],
[
"@config-plugins/react-native-quick-actions",
[
{
"title": "Take Photo",
"type": "photo",
"iconType": "UIApplicationShortcutIconTypeCapturePhoto"
}
]
],
[
"@config-plugins/ffmpeg-kit-react-native",
{
"package": "min"
}
],
"@config-plugins/detox",
"@config-plugins/react-native-adjust", "@config-plugins/react-native-adjust",
"@config-plugins/react-native-branch",
"@config-plugins/react-native-google-cast",
"@config-plugins/react-native-ble-plx",
"@config-plugins/react-native-webrtc",
"@config-plugins/react-native-callkeep", "@config-plugins/react-native-callkeep",
"@config-plugins/react-native-blob-util", "@config-plugins/react-native-blob-util",
"@config-plugins/react-native-pdf", "@config-plugins/react-native-pdf",
"@config-plugins/android-jsc-intl", "@config-plugins/android-jsc-intl"
[
"@config-plugins/ios-stickers",
{
"name": "Stickers",
"icon": "./assets/imessage-icon.png",
"columns": 4,
"stickers": [
"./assets/stickers/annoyed.png",
"./assets/stickers/cuddle.png",
"./assets/stickers/crazy.png",
"./assets/stickers/cant.png",
"./assets/stickers/donno.png",
"./assets/stickers/cozzy.png",
"./assets/stickers/dork.png",
"./assets/stickers/focus.png",
"./assets/stickers/avocool.png",
"./assets/stickers/coder-girl.png",
"./assets/stickers/teapot.png"
]
}
]
] ]
} }
} }
+14 -32
View File
@@ -23,53 +23,35 @@
"dependencies": { "dependencies": {
"@config-plugins/android-jsc-intl": "*", "@config-plugins/android-jsc-intl": "*",
"@config-plugins/detox": "*", "@config-plugins/detox": "*",
"@config-plugins/ffmpeg-kit-react-native": "*",
"@config-plugins/ios-stickers": "*",
"@config-plugins/react-native-adjust": "*", "@config-plugins/react-native-adjust": "*",
"@config-plugins/react-native-ble-plx": "*",
"@config-plugins/react-native-blob-util": "*",
"@config-plugins/react-native-branch": "*",
"@config-plugins/react-native-callkeep": "*", "@config-plugins/react-native-callkeep": "*",
"@config-plugins/react-native-dynamic-app-icon": "*", "expo": "^45.0.0",
"@config-plugins/react-native-google-cast": "*", "detox": "^19.6.9",
"@config-plugins/react-native-pdf": "*", "expo-localization": "~13.0.0",
"@config-plugins/react-native-quick-actions": "*", "expo-splash-screen": "~0.15.1",
"@config-plugins/react-native-webrtc": "*", "expo-status-bar": "~1.3.0",
"expo": "^44.0.0", "expo-updates": "~0.13.1",
"expo-localization": "~12.0.0",
"expo-splash-screen": "~0.14.0",
"expo-status-bar": "~1.2.0",
"expo-updates": "~0.11.2",
"fbjs": "^0.8.18", "fbjs": "^0.8.18",
"ffmpeg-kit-react-native": "^4.5.0",
"i18n-js": "^3.8.0", "i18n-js": "^3.8.0",
"luxon": "^1.27.0", "luxon": "^1.27.0",
"react": "17.0.1", "react": "17.0.2",
"react-dom": "17.0.1", "react-dom": "17.0.2",
"react-native": "0.64.3", "react-native": "0.68.2",
"react-native-adjust": "^4.29.5", "react-native-adjust": "^4.29.6",
"react-native-blob-util": "^0.13.17", "react-native-callkeep": "^4.3.3",
"react-native-callkeep": "^4.2.0", "react-native-safe-area-context": "4.2.4",
"react-native-branch": "^5.3.0", "react-native-web": "0.17.7"
"react-native-dynamic-app-icon": "^1.1.0",
"react-native-google-cast": "^4.1.2",
"react-native-pdf": "^6.4.0",
"react-native-quick-actions": "^0.3.13",
"react-native-safe-area-context": "3.3.2",
"react-native-web": "0.17.1",
"react-native-webrtc": "^1.89.3"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.12.9", "@babel/core": "^7.12.9",
"@babel/plugin-syntax-jsx": "^7.16.0", "@babel/plugin-syntax-jsx": "^7.16.0",
"@expo/metro-config": "~0.3.7", "@expo/metro-config": "~0.3.7",
"@expo/xcpretty": "^4.1.0", "@expo/xcpretty": "^4.1.2",
"@types/jest": "^26.0.19", "@types/jest": "^26.0.19",
"@types/luxon": "^1.27.1", "@types/luxon": "^1.27.1",
"@types/react": "~17.0.21", "@types/react": "~17.0.21",
"@types/react-native": "~0.64.12", "@types/react-native": "~0.64.12",
"babel-jest": "~25.2.6", "babel-jest": "~25.2.6",
"detox": "^19.1.0",
"jest": "^26.6.3", "jest": "^26.6.3",
"jest-circus": "^26.5.2", "jest-circus": "^26.5.2",
"ts-jest": "^26.4.4", "ts-jest": "^26.4.4",
@@ -1,142 +0,0 @@
import Entypo from '@expo/vector-icons/Entypo';
import React from 'react';
import { Image, SafeAreaView, Text, View } from 'react-native';
import AppIcon from 'react-native-dynamic-app-icon';
import TouchableBounce from 'react-native/Libraries/Components/Touchable/TouchableBounce';
function useIconName() {
const [icon, _setIcon] = React.useState(null);
React.useEffect(() => {
let isMounted = true;
AppIcon.getIconName((result) => {
if (isMounted) _setIcon(result.iconName);
});
return () => (isMounted = false);
}, []);
const setIcon = React.useCallback(
(icon) => {
AppIcon.setAppIcon(icon);
_setIcon(icon || null);
},
[_setIcon]
);
return [icon === "default" ? null : icon, setIcon];
}
const icons = [
{ name: "Auto", source: require("../../assets/icons/winter.png"), iconId: null },
{ name: "Spring", source: require("../../assets/icons/spring.png"), iconId: '0' },
{ name: "Summer", source: require("../../assets/icons/summer.png"), iconId: '1' },
{ name: "Autumn", source: require("../../assets/icons/autumn.png"), iconId: '2' },
{ name: "Fall", source: require("../../assets/icons/fall.png"), iconId: '3' },
{ name: "Solstice", source: require("../../assets/icons/solstice.png"), iconId: '4' },
];
export default function App() {
const [_icon, setIcon] = useIconName();
return (
<SafeAreaView
style={{
flex: 1,
justifyContent: "center",
alignItems: "center",
}}
>
<View style={{ width: "100%" }}>
{icons.map((icon, index) => {
return (
<Item
onPress={() => {
setIcon(icon.iconId);
}}
isSelected={icon.iconId === _icon}
name={icon.name}
source={icon.source}
key={String(index)}
/>
);
})}
</View>
</SafeAreaView>
);
}
function Item({ ...props }) {
return (
<TouchableBounce
onPress={props.onPress}
style={{ marginVertical: 8, marginHorizontal: 24 }}
>
<View
style={{
flexDirection: "row",
justifyContent: "space-between",
alignItems: "stretch",
shadowColor: "#000",
shadowOffset: {
width: 0,
height: 4,
},
shadowOpacity: props.isSelected ? 0.35 : 0.2,
shadowRadius: 8.46,
backgroundColor: props.isSelected ? "#000" : "#F1F1F1",
elevation: 9,
paddingHorizontal: 12,
paddingVertical: 12,
borderRadius: 20,
}}
>
<View
style={{
flexDirection: "row",
flex: 1,
alignItems: "center",
}}
>
<View
style={{
flexDirection: "row",
flex: 1,
alignItems: "center",
}}
>
<Image
source={props.source}
style={{
width: 64,
aspectRatio: 1,
resizeMode: "cover",
borderRadius: 16,
}}
/>
<Text
style={{
marginLeft: 20,
fontSize: 18,
fontWeight: "700",
color: props.isSelected ? "white" : "black",
}}
>
{props.name}
</Text>
</View>
{props.isSelected && (
<Entypo
style={{ marginRight: 8 }}
name="check"
size={20}
color="white"
/>
)}
</View>
</View>
</TouchableBounce>
);
}
@@ -1,87 +0,0 @@
import React from "react";
import { View, Text, Button } from "react-native";
import GoogleCast, {
CastState,
CastButton,
useCastState,
useRemoteMediaClient,
} from "react-native-google-cast";
export default function HomeScreen() {
const castState = useCastState();
const client = useRemoteMediaClient();
GoogleCast.showIntroductoryOverlay();
const isConnected = castState === CastState.CONNECTED;
function cast() {
client
.loadMedia({
mediaInfo: {
contentUrl:
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/BigBuckBunny.mp4",
contentType: "video/mp4",
metadata: {
images: [
{
url:
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/images/480x270/BigBuckBunny.jpg",
},
],
title: "Big Buck Bunny",
subtitle:
"A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel, who are determined to squelch his happiness.",
studio: "Blender Foundation",
type: "movie",
},
streamDuration: 596, // seconds
},
startTime: 10, // seconds
})
.then(console.log)
.catch(console.warn);
}
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>State: {castState}</Text>
<CastButton style={{ width: 24, height: 24 }} />
<Button
title="Overlay"
onPress={() => {
GoogleCast.showIntroductoryOverlay();
}}
/>
<Button
title="Expanded Controls"
onPress={() => {
GoogleCast.showExpandedControls();
}}
/>
<Button
title="Cast"
disabled={!isConnected}
onPress={() => {
cast();
}}
/>
<Button
title="Pause"
disabled={!isConnected}
onPress={() => {
// cast()
client.pause();
}}
/>
<Button
title="Disconnect"
disabled={!isConnected}
onPress={() => {
GoogleCast.sessionManager.endCurrentSession(true);
}}
/>
</View>
);
}
-41
View File
@@ -1,41 +0,0 @@
import React from 'react';
import { SafeAreaView, StyleSheet, useWindowDimensions } from 'react-native';
import Pdf from 'react-native-pdf';
const source = {
uri: "https://samples.leanpub.com/thereactnativebook-sample.pdf",
cache: true,
};
export default function App() {
const { width, height } = useWindowDimensions()
return (
<SafeAreaView style={styles.container}>
<Pdf
source={source}
onLoadComplete={(numberOfPages, filePath) => {
console.log(`Number of pages: ${numberOfPages}`);
}}
onPageChanged={(page, numberOfPages) => {
console.log(`Current page: ${page}`);
}}
onError={(error) => {
console.log(error);
}}
onPressLink={(uri) => {
console.log(`Link pressed: ${uri}`);
}}
style={{ flex: 1, width, height }}
/>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "flex-start",
alignItems: "center",
},
});
@@ -1,58 +0,0 @@
import QuickActions from "react-native-quick-actions";
import React from "react";
import { Text, View } from "react-native";
import { DeviceEventEmitter } from "react-native";
function useQuickAction(): QuickActions.ShortcutItem | null {
const [item, setItem] = React.useState<QuickActions.ShortcutItem | null>(null);
const isMounted = React.useRef(true)
React.useEffect(() => {
QuickActions.popInitialAction().then(action => {
if (isMounted.current) setItem(action);
})
const sub = DeviceEventEmitter.addListener("quickActionShortcut", data => {
if (isMounted.current) {
setItem(data);
}
});
return () => {
isMounted.current = false;
sub.remove();
}
}, []);
return item;
}
function App() {
const action = useQuickAction();
React.useEffect(() => {
QuickActions.setShortcutItems([
{
title: 'Play Song',
subtitle: 'NDA - Billie Eilish',
icon: 'Play',
type: 'alpha',
} as any,
{
title: 'Shuffle',
icon: 'Shuffle',
type: 'beta',
} as any,
{
title: 'Like Song',
icon: 'Love',
type: 'gamma',
} as any,
])
}, [])
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>Quick Actions</Text>
{action && <Text>{JSON.stringify(action, null, 2)}</Text>}
</View>
);
}
export default App;
-66
View File
@@ -1,66 +0,0 @@
import React, { useState } from 'react';
import { Button, SafeAreaView, StatusBar, StyleSheet, View } from 'react-native';
import { mediaDevices, RTCView } from 'react-native-webrtc';
const App = () => {
const [stream, setStream] = useState(null);
const start = async () => {
console.log('start');
if (!stream) {
let s;
try {
s = await mediaDevices.getUserMedia({ video: true });
setStream(s);
} catch(e) {
console.error(e);
}
}
};
const stop = () => {
console.log('stop');
if (stream) {
stream.release();
setStream(null);
}
};
return (
<>
<StatusBar barStyle="dark-content" />
<SafeAreaView style={styles.body}>
{
stream &&
<RTCView
streamURL={stream.toURL()}
style={styles.stream} />
}
<View
style={styles.footer}>
<Button
title = "Start"
onPress = {start} />
<Button
title = "Stop"
onPress = {stop} />
</View>
</SafeAreaView>
</>
);
};
const styles = StyleSheet.create({
body: {
...StyleSheet.absoluteFillObject
},
stream: {
flex: 1
},
footer: {
position: 'absolute',
bottom: 0,
left: 0,
right: 0
},
});
export default App;
+80
View File
@@ -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;
};
+13
View File
@@ -0,0 +1,13 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon",
"plugins": [
[
"@config-plugins/ffmpeg-kit-react-native",
{
"package": "min"
}
]
]
}
}
@@ -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;
+25
View File
@@ -0,0 +1,25 @@
{
"name": "@config-plugins-app/ffmpeg-kit-react-native",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/ffmpeg-kit-react-native": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"ffmpeg-kit-react-native": "^4.5.1",
"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
}
+80
View File
@@ -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
View File
Whitespace-only changes.
+16
View File
@@ -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;
};
+28
View File
@@ -0,0 +1,28 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon",
"plugins": [
[
"@config-plugins/ios-stickers",
{
"name": "Stickers",
"icon": "./assets/imessage-icon.png",
"columns": 4,
"stickers": [
"./assets/stickers/annoyed.png",
"./assets/stickers/cuddle.png",
"./assets/stickers/crazy.png",
"./assets/stickers/cant.png",
"./assets/stickers/donno.png",
"./assets/stickers/cozzy.png",
"./assets/stickers/dork.png",
"./assets/stickers/focus.png",
"./assets/stickers/avocool.png",
"./assets/stickers/coder-girl.png",
"./assets/stickers/teapot.png"
]
}
]
]
}
}
File renamed without changes.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 173 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 230 KiB

After

Width:  |  Height:  |  Size: 230 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 179 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 157 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 182 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 164 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 176 KiB

+6
View File
@@ -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);
+6
View File
@@ -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;
+24
View File
@@ -0,0 +1,24 @@
{
"name": "@config-plugins-app/ios-stickers",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/ios-stickers": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"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
}
+10
View File
@@ -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>Open iMessage to find the app</Text>
</View>
);
}
+80
View File
@@ -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.
+16
View File
@@ -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=1f9b7&color_hex=0000ff",
"plugins": [
"@config-plugins/react-native-ble-plx"
]
}
}
@@ -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;
+28
View File
@@ -0,0 +1,28 @@
{
"name": "@config-plugins-app/react-native-ble-plx",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/react-native-ble-plx": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"react-native-ble-plx": "^2.0.3",
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@types/react": "~17.0.21",
"@types/react-native": "~0.64.12",
"typescript": "~4.3.5"
},
"private": true
}
+4
View File
@@ -0,0 +1,4 @@
{
"compilerOptions": {},
"extends": "expo/tsconfig.base"
}
+80
View File
@@ -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.
+16
View File
@@ -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;
};
+22
View File
@@ -0,0 +1,22 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon?icon=1f334",
"ios": {
"config": {
"branch": {
"apiKey": "key_live_f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8"
}
}
},
"android": {
"config": {
"branch": {
"apiKey": "key_live_f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8"
}
}
},
"plugins": [
"@config-plugins/react-native-branch"
]
}
}
+6
View File
@@ -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);
+6
View File
@@ -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;
+25
View File
@@ -0,0 +1,25 @@
{
"name": "@config-plugins-app/react-native-branch",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/react-native-branch": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"react-native-branch": "^5.4.0",
"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
}
+10
View File
@@ -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>Branch</Text>
</View>
);
}
@@ -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;
};
@@ -0,0 +1,17 @@
{
"expo": {
"icon": "./assets/icons/winter.png",
"plugins": [
[
"@config-plugins/react-native-dynamic-app-icon",
[
"./assets/icons/spring.png",
"./assets/icons/summer.png",
"./assets/icons/autumn.png",
"./assets/icons/fall.png",
"./assets/icons/solstice.png"
]
]
]
}
}
File renamed without changes.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

@@ -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/react-native-dynamic-app-icon",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/react-native-dynamic-app-icon": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"react-native-dynamic-app-icon": "^1.1.0",
"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
}
+159
View File
@@ -0,0 +1,159 @@
import Entypo from "@expo/vector-icons/Entypo";
import React from "react";
import { Image, SafeAreaView, Text, View } from "react-native";
import AppIcon from "react-native-dynamic-app-icon";
import TouchableBounce from "react-native/Libraries/Components/Touchable/TouchableBounce";
function useIconName() {
const [icon, _setIcon] = React.useState(null);
React.useEffect(() => {
let isMounted = true;
AppIcon.getIconName((result) => {
if (isMounted) _setIcon(result.iconName);
});
return () => (isMounted = false);
}, []);
const setIcon = React.useCallback(
(icon) => {
AppIcon.setAppIcon(icon);
_setIcon(icon || null);
},
[_setIcon]
);
return [icon === "default" ? null : icon, setIcon];
}
const icons = [
{
name: "Auto",
source: require("../assets/icons/winter.png"),
iconId: null,
},
{
name: "Spring",
source: require("../assets/icons/spring.png"),
iconId: "0",
},
{
name: "Summer",
source: require("../assets/icons/summer.png"),
iconId: "1",
},
{
name: "Autumn",
source: require("../assets/icons/autumn.png"),
iconId: "2",
},
{ name: "Fall", source: require("../assets/icons/fall.png"), iconId: "3" },
{
name: "Solstice",
source: require("../assets/icons/solstice.png"),
iconId: "4",
},
];
export default function App() {
const [_icon, setIcon] = useIconName();
return (
<SafeAreaView
style={{
flex: 1,
justifyContent: "center",
alignItems: "center",
}}
>
<View style={{ width: "100%" }}>
{icons.map((icon, index) => {
return (
<Item
onPress={() => {
setIcon(icon.iconId);
}}
isSelected={icon.iconId === _icon}
name={icon.name}
source={icon.source}
key={String(index)}
/>
);
})}
</View>
</SafeAreaView>
);
}
function Item({ ...props }) {
return (
<TouchableBounce
onPress={props.onPress}
style={{ marginVertical: 8, marginHorizontal: 24 }}
>
<View
style={{
flexDirection: "row",
justifyContent: "space-between",
alignItems: "stretch",
shadowColor: "#000",
shadowOffset: {
width: 0,
height: 4,
},
shadowOpacity: props.isSelected ? 0.35 : 0.2,
shadowRadius: 8.46,
backgroundColor: props.isSelected ? "#000" : "#F1F1F1",
elevation: 9,
paddingHorizontal: 12,
paddingVertical: 12,
borderRadius: 20,
}}
>
<View
style={{
flexDirection: "row",
flex: 1,
alignItems: "center",
}}
>
<View
style={{
flexDirection: "row",
flex: 1,
alignItems: "center",
}}
>
<Image
source={props.source}
style={{
width: 64,
aspectRatio: 1,
resizeMode: "cover",
borderRadius: 16,
}}
/>
<Text
style={{
marginLeft: 20,
fontSize: 18,
fontWeight: "700",
color: props.isSelected ? "white" : "black",
}}
>
{props.name}
</Text>
</View>
{props.isSelected && (
<Entypo
style={{ marginRight: 8 }}
name="check"
size={20}
color="white"
/>
)}
</View>
</View>
</TouchableBounce>
);
}
+80
View File
@@ -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",
"plugins": [
"@config-plugins/react-native-google-cast"
]
}
}
@@ -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/react-native-google-cast",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/react-native-google-cast": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"react-native-google-cast": "^4.1.2",
"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
}
+86
View File
@@ -0,0 +1,86 @@
import React from "react";
import { View, Text, Button } from "react-native";
import GoogleCast, {
CastState,
CastButton,
useCastState,
useRemoteMediaClient,
} from "react-native-google-cast";
export default function HomeScreen() {
const castState = useCastState();
const client = useRemoteMediaClient();
GoogleCast.showIntroductoryOverlay();
const isConnected = castState === CastState.CONNECTED;
function cast() {
client
.loadMedia({
mediaInfo: {
contentUrl:
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/BigBuckBunny.mp4",
contentType: "video/mp4",
metadata: {
images: [
{
url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/images/480x270/BigBuckBunny.jpg",
},
],
title: "Big Buck Bunny",
subtitle:
"A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel, who are determined to squelch his happiness.",
studio: "Blender Foundation",
type: "movie",
},
streamDuration: 596, // seconds
},
startTime: 10, // seconds
})
.then(console.log)
.catch(console.warn);
}
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>State: {castState}</Text>
<CastButton style={{ width: 24, height: 24 }} />
<Button
title="Overlay"
onPress={() => {
GoogleCast.showIntroductoryOverlay();
}}
/>
<Button
title="Expanded Controls"
onPress={() => {
GoogleCast.showExpandedControls();
}}
/>
<Button
title="Cast"
disabled={!isConnected}
onPress={() => {
cast();
}}
/>
<Button
title="Pause"
disabled={!isConnected}
onPress={() => {
// cast()
client.pause();
}}
/>
<Button
title="Disconnect"
disabled={!isConnected}
onPress={() => {
GoogleCast.sessionManager.endCurrentSession(true);
}}
/>
</View>
);
}
+80
View File
@@ -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
View File
Whitespace-only changes.
+16
View File
@@ -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;
};
+9
View File
@@ -0,0 +1,9 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon?icon=🎆",
"plugins": [
"@config-plugins/react-native-blob-util",
"@config-plugins/react-native-pdf"
]
}
}
+6
View File
@@ -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);
+6
View File
@@ -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;
+27
View File
@@ -0,0 +1,27 @@
{
"name": "@config-plugins-app/react-native-pdf",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/react-native-blob-util": "*",
"@config-plugins/react-native-pdf": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"react-native-blob-util": "^0.16.0",
"react-native-pdf": "^6.5.0",
"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
}
+40
View File
@@ -0,0 +1,40 @@
import React from "react";
import { SafeAreaView, StyleSheet, useWindowDimensions } from "react-native";
import Pdf from "react-native-pdf";
const source = {
uri: "https://samples.leanpub.com/thereactnativebook-sample.pdf",
cache: true,
};
export default function App() {
const { width, height } = useWindowDimensions();
return (
<SafeAreaView style={styles.container}>
<Pdf
source={source}
onLoadComplete={(numberOfPages, filePath) => {
console.log(`Number of pages: ${numberOfPages}`);
}}
onPageChanged={(page, numberOfPages) => {
console.log(`Current page: ${page}`);
}}
onError={(error) => {
console.log(error);
}}
onPressLink={(uri) => {
console.log(`Link pressed: ${uri}`);
}}
style={{ flex: 1, width, height }}
/>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "flex-start",
alignItems: "center",
},
});
@@ -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
Loaded 100 of 218 files, more files were not shown because too many files have changed in this diff. Show more