Compare commits

..
Author SHA1 Message Date
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
semantic-release-bot 29ee948c98 chore: 1.0.3
### @config-plugins/react-native-dynamic-app-icon [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-12)

### Other chores

* **react-native-dynamic-app-icon:** lint fix ([ce1a818](https://github.com/expo/config-plugins/commit/ce1a818564b30ea2adb057d8f64960da52d026ed))
2022-05-12 21:03:46 +00:00
Evan Bacon 2fc8f5a3bc feat(react-native-adjust)!: add SDK 45 support (#78) 2022-05-12 15:59:59 -05:00
semantic-release-bot 7a570fb05a chore: 2.0.0
## @config-plugins/android-jsc-intl [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-10)

### ⚠ BREAKING CHANGES

* **android-jsc-intl:** add SDK 45 support (#77)

### Features

* **android-jsc-intl:** add SDK 45 support ([#77](https://github.com/expo/config-plugins/issues/77)) ([aed0904](https://github.com/expo/config-plugins/commit/aed09045d61bc67b375a277b96bdc90ed5245d0f))
2022-05-10 00:05:35 +00:00
Evan Bacon aed09045d6 feat(android-jsc-intl)!: add SDK 45 support (#77)
* feat(android-jsc-intl)!: add SDK 45 support

* Update README.md
2022-05-09 17:02:24 -07:00
semantic-release-bot ad810c8b11 chore: 1.0.3
### @config-plugins/react-native-ble-plx [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-09)

### Other chores

* **react-native-ble-plx:** lint fix ([a99c60e](https://github.com/expo/config-plugins/commit/a99c60efd5fe53d369551c9a1323701ab14e935b))
2022-05-09 23:52:05 +00:00
dependabot[bot] e445cb4bc8 chore(deps): bump @expo/config-types in /packages/react-native-branch (#76)
Bumps [@expo/config-types](https://github.com/expo/expo-cli/tree/HEAD/packages/config-types) from 44.0.0 to 45.0.0.
- [Release notes](https://github.com/expo/expo-cli/releases)
- [Changelog](https://github.com/expo/expo-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expo/expo-cli/commits/HEAD/packages/config-types)

---
updated-dependencies:
- dependency-name: "@expo/config-types"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 16:48:18 -07:00
semantic-release-bot 9b22a71343 chore: 1.0.3
### @config-plugins/react-native-google-cast [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)

### Other chores

* **react-native-google-cast:** lint fix ([21c4928](https://github.com/expo/config-plugins/commit/21c49280d49a3584863d8338e4b34c508249a595))
2022-03-23 19:03:10 +00:00
evanbacon e49a241243 fix: drop build folders 2022-03-23 13:59:17 -05:00
semantic-release-bot 2e06dcae54 chore: 1.0.3
### @config-plugins/react-native-adjust [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)

### Bug Fixes

* upgrade google play-services-analytics to v18.0.1 ([a24ea1d](https://github.com/expo/config-plugins/commit/a24ea1df58e9d0639dc4fa016aae8a4e15d53529))
2022-03-23 17:17:22 +00:00
Yann Pringault a24ea1df58 fix: upgrade google play-services-analytics to v18.0.1 2022-03-23 12:03:11 -05:00
semantic-release-bot 50646306c5 chore: 1.0.4
### @config-plugins/android-jsc-intl [1.0.4](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)

### Other chores

* **android-jsc-intl:** lint fix ([5ca4e44](https://github.com/expo/config-plugins/commit/5ca4e44a49ad5c3153b4a2b15acf69db594d76b8))
2022-03-23 05:26:26 +00:00
dependabot[bot] 6fbb2192ad chore(deps): bump @expo/config-types in /packages/react-native-branch (#63)
Bumps [@expo/config-types](https://github.com/expo/expo-cli/tree/HEAD/packages/config-types) from 43.0.1 to 44.0.0.
- [Release notes](https://github.com/expo/expo-cli/releases)
- [Changelog](https://github.com/expo/expo-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expo/expo-cli/commits/HEAD/packages/config-types)

---
updated-dependencies:
- dependency-name: "@expo/config-types"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-23 00:22:42 -05:00
semantic-release-bot 7c3cda4f79 chore: 1.0.3
### @config-plugins/ios-stickers [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Other chores

* **ios-stickers:** lint fix ([331ecb1](https://github.com/expo/config-plugins/commit/331ecb163f000578bc519ebe94f90d62374095d1))
2022-03-22 22:41:06 +00:00
Evan Bacon a78e569f54 test: add tests for core plugin methods (#64)
* test: add tests for core plugin methods

* Update test.yml
2022-03-22 17:38:19 -05:00
semantic-release-bot 3fee1c0e6e chore: 1.0.3
### @config-plugins/react-native-callkeep [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Other chores

* **react-native-callkeep:** lint fix ([241d378](https://github.com/expo/config-plugins/commit/241d378a54327340df3663ef8f66cb8663e1e359))
2022-03-22 22:10:46 +00:00
evanbacon 31aee40ee3 chore(react-native-webrtc): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 21c49280d4 chore(react-native-google-cast): lint fix 2022-03-22 17:08:15 -05:00
evanbacon ce1a818564 chore(react-native-dynamic-app-icon): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 241d378a54 chore(react-native-callkeep): lint fix 2022-03-22 17:08:15 -05:00
evanbacon d1bf616248 chore(react-native-blob-util): lint fix 2022-03-22 17:08:15 -05:00
evanbacon a99c60efd5 chore(react-native-ble-plx): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 331ecb163f chore(ios-stickers): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 1003ddb2ec chore(detox): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 5ca4e44a49 chore(android-jsc-intl): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 4103b4eb7d chore(react-native-branch): fix lint 2022-03-22 17:08:15 -05:00
evanbacon f8023bf04c ci: add lint step to CI 2022-03-22 17:08:15 -05:00
evanbacon 1b3e87f930 ci: use npm for dependabot 2022-03-22 15:24:55 -05:00
Evan Bacon 5e3ed6d5e4 ci: add dependabot config (#61)
* ci: add dependabot config and generation script

* docs: update contributing guide

* docs: update README with better contributing info

* chore: add dependabot script to root package.json
2022-03-22 15:19:13 -05:00
semantic-release-bot f46f340623 chore: 2.1.1
### [2.1.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Other chores

* 1.0.2 ([5f4e900](https://github.com/expo/config-plugins/commit/5f4e90059e4dd69579082aa7531b8ef7d2cc9a72)), closes [#60](https://github.com/expo/config-plugins/issues/60)
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
* **ci:** remove PR title validation action ([#62](https://github.com/expo/config-plugins/issues/62)) ([1648e85](https://github.com/expo/config-plugins/commit/1648e8598b959bf8140a2b984af0b8bb85a7e724))
* **ffmpeg-kit-react-native:** update plugin to use `AndroidConfig.Version.withBuildScriptExtMinimumVersion` ([#60](https://github.com/expo/config-plugins/issues/60)) ([c3a375b](https://github.com/expo/config-plugins/commit/c3a375b292d6405be7b3277d10ab4f8dbb006047))
2022-03-22 18:31:24 +00:00
238 changed files with 4946 additions and 3361 deletions

No files matched your search

+2 -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,6 +36,7 @@ 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'
+24 -24
View File
@@ -1,44 +1,44 @@
--- ---
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: 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
+91
View File
@@ -0,0 +1,91 @@
# AUTO GENERATED:
# This file was generated by running the following in the root directory:
#
# yarn update-dependabot-config
version: 2
updates:
- package-ecosystem: npm
directory: packages/android-jsc-intl
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/detox
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/ffmpeg-kit-react-native
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/ios-stickers
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-adjust
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-ble-plx
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-blob-util
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-branch
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-callkeep
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-dynamic-app-icon
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-google-cast
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-pdf
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-quick-actions
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-webrtc
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
+6 -1
View File
@@ -40,6 +40,7 @@ jobs:
ios-stickers, ios-stickers,
react-native-ble-plx, react-native-ble-plx,
react-native-blob-util, react-native-blob-util,
react-native-branch,
react-native-google-cast, react-native-google-cast,
react-native-pdf, react-native-pdf,
# react-native-quick-actions, # react-native-quick-actions,
@@ -54,8 +55,12 @@ jobs:
uses: actions/setup-node@v1 uses: actions/setup-node@v1
with: with:
node-version: ${{ matrix.node }} node-version: ${{ matrix.node }}
- name: Lint ${{ matrix.package }}
run: yarn lint --max-warnings 0
working-directory: packages/${{ matrix.package }}
- name: Test ${{ matrix.package }} - name: Test ${{ matrix.package }}
run: cd packages/${{ matrix.package }} && yarn test run: yarn test
working-directory: packages/${{ matrix.package }}
env: env:
CI: true CI: true
EXPO_DEBUG: true EXPO_DEBUG: true
+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/*
+16 -4
View File
@@ -5,10 +5,22 @@
To submit a pull request: To submit a pull request:
1. Fork the [repository](https://github.com/expo/config-plugins) and create a feature branch. (Existing contributors can create feature branches without forking. Prefix the branch name with `@your-github-username/`.) 1. Fork the [repository](https://github.com/expo/config-plugins) and create a feature branch. (Existing contributors can create feature branches without forking. Prefix the branch name with `@your-github-username/`.)
2. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) including in the PR tile. 2. Run `yarn` in the root directory to generate the build files.
3. Fill out the entire PR template. Ensure your code is tested locally and has continuous tests in CI. 3. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) including in the PR tile.
4. Make sure all tests pass on GitHub Actions. 4. Fill out the entire PR template. Ensure your code is tested locally and has continuous tests in CI.
5. Wait for a review and adjust the code if necessary. 5. Make sure all tests pass on GitHub Actions.
6. Wait for a review and adjust the code if necessary.
## Creating a plugin
- Plugins can be generated by running `yarn gen`.
- Add plugins to the example in [`apps/app`](/apps/app/package.json) to test them.
- The example app should always stay in a state of regeneration.
Be sure to run the following scripts in the **root directory** to update automation tools:
- Update dependabot: `yarn update-dependabot-config`
- Update the issue template: `yarn update-issue-template`
## Publishing a release ## Publishing a release
+7 -6
View File
@@ -1,10 +1,11 @@
# Expo Config Plugins # Expo Config Plugins
A collection of custom WIP config plugins for Expo dev clients. Use at your own discretion. - A collection of [Expo config plugins](https://docs.expo.dev/guides/config-plugins/) for configuring the `expo prebuild` command.
- This repo is to Expo config plugins as [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped) is to TypeScript.
- We prefer packages ship their own Expo config plugin (to ensure versioning is aligned), but if they haven't adopted the system yet, the community can add a package here.
- 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.
## Contributing!
## Creating a plugin See the [contributing guide](/CONTRIBUTING.md).
- Plugins can be generated by running `yarn gen`.
- Add plugins to the example in [`apps/app`](/apps/app/package.json) to test them.
- The example app should always stay in a state of regeneration.
+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",
},
});
Loaded 100 of 238 files, more files were not shown because too many files have changed in this diff. Show more