Compare commits

..
Author SHA1 Message Date
Evan Bacon 473df122c6 fix(ci): add root package.json name 2022-03-15 16:42:16 -05:00
Evan Bacon 65291c648d Update .releaserc.js 2022-03-15 16:32:36 -05:00
Evan Bacon 02ceeb2332 use github.token 2022-03-14 20:35:21 -05:00
Evan Bacon e9448ad415 update branches 2022-03-14 20:34:40 -05:00
Evan BaconandGiau. Tran Minh 2969ddbf64 Update .github/workflows/release.yml
Co-authored-by: Giau. Tran Minh <[email protected]>
2022-03-11 15:19:35 -07:00
Evan Bacon 414087e68b feat(ci): added auto release actions to GitHub Actions 2022-03-11 14:14:35 -07:00
267 changed files with 3561 additions and 6287 deletions

No files matched your search

-1
View File
@@ -1 +0,0 @@
/* @EvanBacon
+1 -2
View File
@@ -1,4 +1,4 @@
name: 🐛 Expo Config Plugin Bug Report
name: "\U0001F41B Expo Config Plugin Bug Report"
description: Report a reproducible bug with one of the Expo Config Plugins.
labels: bug
body:
@@ -36,7 +36,6 @@ body:
- '@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-dynamic-app-icon'
- '@config-plugins/react-native-google-cast'
+24 -24
View File
@@ -1,44 +1,44 @@
---
blank_issues_enabled: false
contact_links:
- name: 🤔 Question about an Expo Config Plugin
- name: "\U0001F914 Question about an Expo Config Plugin"
about: >-
If you have a question about an Expo Config Plugin, please ask it on the
forums, discord, Twitter, or Stack Overflow.
url: https://forums.expo.io/
url: 'https://forums.expo.io/'
- about: E2E tests and automation for mobile
name: 📦 detox issues
url: https://github.com/wix/Detox/issues
name: "\U0001F4E6 detox issues"
url: 'https://github.com/wix/Detox/issues'
- about: FFmpeg Kit for React Native
name: 📦 ffmpeg-kit-react-native issues
url: https://github.com/tanersener/ffmpeg-kit/issues
name: "\U0001F4E6 ffmpeg-kit-react-native issues"
url: 'https://github.com/tanersener/ffmpeg-kit/issues'
- about: Adjust React Native SDK
name: 📦 react-native-adjust issues
url: https://github.com/adjust/react_native_sdk/issues
name: "\U0001F4E6 react-native-adjust issues"
url: 'https://github.com/adjust/react_native_sdk/issues'
- about: React Native Bluetooth Low Energy library
name: 📦 react-native-ble-plx issues
url: https://github.com/Polidea/react-native-ble-plx/issues
name: "\U0001F4E6 react-native-ble-plx issues"
url: 'https://github.com/Polidea/react-native-ble-plx/issues'
- about: >-
A module provides upload, download, and files access API. Supports file
stream read/write for process large files.
name: 📦 react-native-blob-util issues
url: https://github.com/RonRadtke/react-native-blob-util/issues
name: "\U0001F4E6 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
name: 📦 react-native-callkeep issues
url: https://github.com/react-native-webrtc/react-native-callkeep/issues
name: "\U0001F4E6 react-native-callkeep issues"
url: 'https://github.com/react-native-webrtc/react-native-callkeep/issues'
- about: Programmatically change the app icon in React Native.
name: 📦 react-native-dynamic-app-icon issues
url: https://github.com/idearockers/react-native-dynamic-app-icon/issues
name: "\U0001F4E6 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
name: 📦 react-native-google-cast issues
name: "\U0001F4E6 react-native-google-cast issues"
url: >-
https://github.com/react-native-google-cast/react-native-google-cast/issues
- about: A react native PDF view component, support ios and android platform
name: 📦 react-native-pdf issues
url: https://github.com/wonday/react-native-pdf/issues
- about: 'A react native PDF view component, support ios and android platform'
name: "\U0001F4E6 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
name: 📦 react-native-quick-actions issues
url: https://github.com/jordanbyron/react-native-quick-actions/issues
name: "\U0001F4E6 react-native-quick-actions issues"
url: 'https://github.com/jordanbyron/react-native-quick-actions/issues'
- about: WebRTC for React Native
name: 📦 react-native-webrtc issues
url: https://github.com/react-native-webrtc/react-native-webrtc/issues
name: "\U0001F4E6 react-native-webrtc issues"
url: 'https://github.com/react-native-webrtc/react-native-webrtc/issues'
-24
View File
@@ -1,24 +0,0 @@
<!--
🚨 We use semantic release (a bot publishes everything automatically)
🚨 so please use conventional commit style for the PR title:
🚨 https://www.conventionalcommits.org/en/v1.0.0/
🚨 Example: feat(detox): add new step
-->
# Why
<!--
Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests.
-->
# How
<!--
How did you build this feature or fix this bug and why?
-->
# Test Plan
<!--
Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction.
-->
-91
View File
@@ -1,91 +0,0 @@
# 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
+25
View File
@@ -0,0 +1,25 @@
name: PR Title
on:
pull_request:
branches:
- "*"
types:
- opened
- reopened
- edited
- synchronize
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: aslafy-z/[email protected]
# continue-on-error: true
id: title-check
with:
success-state: PR title is valid
failure-state: "PR title does not follow the conventional commit spec: https://www.conventionalcommits.org/en/v1.0.0/"
context-name: pr-title
preset: conventional-changelog-angular@latest
env:
GITHUB_TOKEN: ${{ github.token }}
+2 -7
View File
@@ -22,16 +22,11 @@ jobs:
- run: yarn install --frozen-lockfile --check-files
- run: yarn lerna run prepare --stream
# If the dry run fails then it will prevent us from automatically breaking the repo.
- name: Semantic release (dry run)
run: npx multi-semantic-release --dry-run --ignore-private-packages
env:
GITHUB_TOKEN: ${{ github.token }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
# https://github.com/dhoulb/multi-semantic-release
- name: Semantic release
# use `--ignore-packages` to ignore packages on bumping process
# npx multi-semantic-release --ignore-packages=packages/a/**,packages/b/**
run: npx multi-semantic-release --ignore-private-packages
run: npx multi-semantic-release
env:
GITHUB_TOKEN: ${{ github.token }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+1 -6
View File
@@ -40,7 +40,6 @@ jobs:
ios-stickers,
react-native-ble-plx,
react-native-blob-util,
react-native-branch,
react-native-google-cast,
react-native-pdf,
# react-native-quick-actions,
@@ -55,12 +54,8 @@ jobs:
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node }}
- name: Lint ${{ matrix.package }}
run: yarn lint --max-warnings 0
working-directory: packages/${{ matrix.package }}
- name: Test ${{ matrix.package }}
run: yarn test
working-directory: packages/${{ matrix.package }}
run: cd packages/${{ matrix.package }} && yarn test
env:
CI: true
EXPO_DEBUG: true
+1 -12
View File
@@ -51,15 +51,4 @@ xcuserdata
# VSCode
.history/
# Ignore build folders
packages/*/build/**
packages/*/plugin/build/**
packages/@*/*/build/**
# App native folders
apps/*/ios/*
apps/*/android/*
apps/*/web-build/*
# packages/*/build/
+1 -1
View File
@@ -49,7 +49,6 @@ module.exports = {
},
],
"@semantic-release/changelog",
"@semantic-release/npm",
[
"@semantic-release/git",
{
@@ -58,5 +57,6 @@ module.exports = {
},
],
"@semantic-release/github",
"@semantic-release/npm",
],
};
+4 -16
View File
@@ -5,22 +5,10 @@
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/`.)
2. Run `yarn` in the root directory to generate the build files.
3. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) including in the PR tile.
4. Fill out the entire PR template. Ensure your code is tested locally and has continuous tests in CI.
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`
2. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) including in the PR tile.
3. Fill out the entire PR template. Ensure your code is tested locally and has continuous tests in CI.
4. Make sure all tests pass on GitHub Actions.
5. Wait for a review and adjust the code if necessary.
## Publishing a release
+6 -7
View File
@@ -1,11 +1,10 @@
# Expo Config Plugins
- 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.
A collection of custom WIP config plugins for Expo dev clients. Use at your own discretion.
## Contributing!
See the [contributing guide](/CONTRIBUTING.md).
## 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.
@@ -1,80 +0,0 @@
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.
@@ -1,16 +0,0 @@
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
@@ -1,8 +0,0 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon?icon=1f334",
"plugins": [
"@config-plugins/airbridge-react-native-sdk"
]
}
}
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-5
View File
@@ -1,5 +0,0 @@
import { registerRootComponent } from "expo";
import App from "./src/App";
registerRootComponent(App);
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
@@ -1,25 +0,0 @@
{
"name": "@config-plugins-app/airbridge-react-native-sdk",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/airbridge-react-native-sdk": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"airbridge-react-native-sdk": "^1.4.5",
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9"
},
"private": true
}
@@ -1,10 +0,0 @@
import React from "react";
import { Text, View } from "react-native";
export default function App() {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>airbridge-react-native-sdk</Text>
</View>
);
}
+8 -2
View File
@@ -1,3 +1,9 @@
export { default } from './src/detox/App';
// export { default } from './src/react-native-quick-actions/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-adjust/App';
// export { default } from './src/ffmpeg-kit-react-native/App';
-66
View File
@@ -1,66 +0,0 @@
### @expo/app [1.0.1](https://github.com/expo/config-plugins/compare/@expo/[email protected]...@expo/[email protected]) (2022-03-15)
### Bug Fixes
* **ci:** use correct internal versions ([ab8076a](https://github.com/expo/config-plugins/commit/ab8076adf51e9ba0439eba60b153d729a0996b8d))
### Dependencies
* **@config-plugins/android-jsc-intl:** upgraded to 1.0.1
* **@config-plugins/detox:** upgraded to 1.0.1
* **@config-plugins/react-native-adjust:** upgraded to 1.0.0
* **@config-plugins/react-native-ble-plx:** upgraded to 1.0.0
* **@config-plugins/react-native-blob-util:** upgraded to 1.0.1
* **@config-plugins/react-native-branch:** upgraded to 1.0.0
* **@config-plugins/react-native-callkeep:** upgraded to 1.0.0
* **@config-plugins/react-native-dynamic-app-icon:** upgraded to 1.0.0
* **@config-plugins/react-native-google-cast:** upgraded to 1.0.0
* **@config-plugins/react-native-pdf:** upgraded to 1.0.0
* **@config-plugins/react-native-quick-actions:** upgraded to 1.0.0
* **@config-plugins/react-native-webrtc:** upgraded to 1.0.0
## @expo/app 1.0.0 (2022-03-15)
### Features
* create react-native-branch plugin ([0b06baa](https://github.com/expo/config-plugins/commit/0b06baa2b486c5e02d433a4ac785960934f403b9))
### Bug Fixes
* respect old config from expo-branch ([d0e0186](https://github.com/expo/config-plugins/commit/d0e018601c09c0e92191a4eb2998ab0e6fa1c6ec))
### Other chores
* added start-metro script ([4a7d707](https://github.com/expo/config-plugins/commit/4a7d707b200a3e499d9d71caf49ad4fc1d0a89e0))
* update script ([dcf61a9](https://github.com/expo/config-plugins/commit/dcf61a9b9542851095954d84c9054c97c5400dc9))
* upgrade to latest react-native-branch ([df98474](https://github.com/expo/config-plugins/commit/df98474d79ed139b42ddd698d13100160c656c26))
### Documentation changes
* add android-jsc-intl example ([d96c0b2](https://github.com/expo/config-plugins/commit/d96c0b2888da3808d7c4e2dd7993129711ba717d))
### Dependencies
* **@config-plugins/android-jsc-intl:** upgraded to 1.0.0
* **@config-plugins/detox:** upgraded to 1.0.0
* **@config-plugins/ffmpeg-kit-react-native:** upgraded to 1.0.0
* **@config-plugins/ios-stickers:** upgraded to 1.0.0
* **@config-plugins/react-native-adjust:** upgraded to 1.0.0
* **@config-plugins/react-native-ble-plx:** upgraded to 1.0.0
* **@config-plugins/react-native-blob-util:** upgraded to 1.0.0
* **@config-plugins/react-native-branch:** upgraded to 1.0.0
* **@config-plugins/react-native-callkeep:** upgraded to 1.0.0
* **@config-plugins/react-native-dynamic-app-icon:** upgraded to 1.0.0
* **@config-plugins/react-native-google-cast:** upgraded to 1.0.0
* **@config-plugins/react-native-pdf:** upgraded to 1.0.0
* **@config-plugins/react-native-quick-actions:** upgraded to 1.0.0
* **@config-plugins/react-native-webrtc:** upgraded to 1.0.0
+65 -4
View File
@@ -4,7 +4,7 @@
"slug": "app",
"version": "1.0.0",
"orientation": "portrait",
"icon": "https://icogen.vercel.app/api/icon",
"icon": "./assets/icons/winter.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
@@ -16,25 +16,86 @@
"assetBundlePatterns": ["**/*"],
"ios": {
"supportsTablet": true,
"bundleIdentifier": "dev.bacon.app"
"bundleIdentifier": "dev.bacon.app",
"config": {
"branch": {
"apiKey": "key_live_f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8"
}
}
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#FFFFFF"
},
"config": {
"branch": {
"apiKey": "key_live_f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8"
}
},
"package": "com.bacon.app"
},
"web": {
"favicon": "./assets/favicon.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"
]
],
[
"@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-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-blob-util",
"@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"
]
}
]
]
}
}
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

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

+36 -18
View File
@@ -21,37 +21,55 @@
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/android-jsc-intl": "*",
"@config-plugins/detox": "*",
"@config-plugins/react-native-adjust": "*",
"@config-plugins/react-native-callkeep": "*",
"expo": "^45.0.0",
"detox": "^19.6.9",
"expo-localization": "~13.0.0",
"expo-splash-screen": "~0.15.1",
"expo-status-bar": "~1.3.0",
"expo-updates": "~0.13.1",
"@config-plugins/android-jsc-intl": "^0.0.2",
"@config-plugins/detox": "^1.1.0",
"@config-plugins/ffmpeg-kit-react-native": "^0.0.1",
"@config-plugins/ios-stickers": "^0.0.4",
"@config-plugins/react-native-adjust": "^0.0.1",
"@config-plugins/react-native-ble-plx": "^0.0.2",
"@config-plugins/react-native-blob-util": "^0.0.0",
"@config-plugins/react-native-branch": "^0.0.1",
"@config-plugins/react-native-callkeep": "^0.0.1",
"@config-plugins/react-native-dynamic-app-icon": "^0.0.2",
"@config-plugins/react-native-google-cast": "^0.1.0",
"@config-plugins/react-native-pdf": "^0.0.0",
"@config-plugins/react-native-quick-actions": "^0.0.1",
"@config-plugins/react-native-webrtc": "^2.0.0",
"expo": "^44.0.0",
"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",
"ffmpeg-kit-react-native": "^4.5.0",
"i18n-js": "^3.8.0",
"luxon": "^1.27.0",
"react": "17.0.2",
"react-dom": "17.0.2",
"react-native": "0.68.2",
"react-native-adjust": "^4.29.6",
"react-native-callkeep": "^4.3.3",
"react-native-safe-area-context": "4.2.4",
"react-native-web": "0.17.7"
"react": "17.0.1",
"react-dom": "17.0.1",
"react-native": "0.64.3",
"react-native-adjust": "^4.29.5",
"react-native-blob-util": "^0.13.17",
"react-native-callkeep": "^4.2.0",
"react-native-branch": "^5.3.0",
"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": {
"@babel/core": "^7.12.9",
"@babel/plugin-syntax-jsx": "^7.16.0",
"@expo/metro-config": "~0.3.7",
"@expo/xcpretty": "^4.1.2",
"@expo/xcpretty": "^4.1.0",
"@types/jest": "^26.0.19",
"@types/luxon": "^1.27.1",
"@types/react": "~17.0.21",
"@types/react-native": "~0.64.12",
"babel-jest": "~25.2.6",
"detox": "^19.1.0",
"jest": "^26.6.3",
"jest-circus": "^26.5.2",
"ts-jest": "^26.4.4",
@@ -0,0 +1,142 @@
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>
);
}
@@ -0,0 +1,87 @@
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
@@ -0,0 +1,41 @@
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,58 @@
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
@@ -0,0 +1,66 @@
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
@@ -1,80 +0,0 @@
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.
@@ -1,16 +0,0 @@
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
@@ -1,13 +0,0 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon",
"plugins": [
[
"@config-plugins/ffmpeg-kit-react-native",
{
"package": "min"
}
]
]
}
}
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-5
View File
@@ -1,5 +0,0 @@
import { registerRootComponent } from "expo";
import App from "./src/App";
registerRootComponent(App);
@@ -1,6 +0,0 @@
// 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
@@ -1,25 +0,0 @@
{
"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
@@ -1,80 +0,0 @@
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
@@ -1,16 +0,0 @@
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
@@ -1,28 +0,0 @@
{
"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"
]
}
]
]
}
}
-6
View File
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-5
View File
@@ -1,5 +0,0 @@
import { registerRootComponent } from "expo";
import App from "./src/App";
registerRootComponent(App);
-6
View File
@@ -1,6 +0,0 @@
// 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
@@ -1,24 +0,0 @@
{
"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
@@ -1,10 +0,0 @@
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
@@ -1,80 +0,0 @@
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
@@ -1,16 +0,0 @@
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
@@ -1,8 +0,0 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon?icon=1f9b7&color_hex=0000ff",
"plugins": [
"@config-plugins/react-native-ble-plx"
]
}
}
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-5
View File
@@ -1,5 +0,0 @@
import { registerRootComponent } from "expo";
import App from "./src/App";
registerRootComponent(App);
@@ -1,6 +0,0 @@
// 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
@@ -1,28 +0,0 @@
{
"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
@@ -1,4 +0,0 @@
{
"compilerOptions": {},
"extends": "expo/tsconfig.base"
}
-80
View File
@@ -1,80 +0,0 @@
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
@@ -1,16 +0,0 @@
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
@@ -1,22 +0,0 @@
{
"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
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-5
View File
@@ -1,5 +0,0 @@
import { registerRootComponent } from "expo";
import App from "./src/App";
registerRootComponent(App);
-6
View File
@@ -1,6 +0,0 @@
// 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
@@ -1,25 +0,0 @@
{
"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
@@ -1,10 +0,0 @@
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>
);
}
@@ -1,80 +0,0 @@
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.
@@ -1,16 +0,0 @@
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;
};
@@ -1,17 +0,0 @@
{
"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"
]
]
]
}
}
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-5
View File
@@ -1,5 +0,0 @@
import { registerRootComponent } from "expo";
import App from "./src/App";
registerRootComponent(App);
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
@@ -1,25 +0,0 @@
{
"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
@@ -1,159 +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>
);
}
-80
View File
@@ -1,80 +0,0 @@
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.
@@ -1,16 +0,0 @@
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;
};
Loaded 100 of 267 files, more files were not shown because too many files have changed in this diff. Show more