Clone or download
Latest commit 63ee3f2 Jan 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Uses dashes for script name. Jan 11, 2019
.storybook Fix up the JS files to our formatting May 25, 2017
.vscode Update extensions.json Nov 30, 2018
Example 1.8.0 Jan 17, 2019
Pod [Pod] Update JS bundle. Jan 17, 2019
__mocks__ [messages] Adds tests for submitting Composer Sep 18, 2017
data Add FairBooth screen, generalize ShowArtworks, ShowArtists screens Jan 9, 2019
docs Merge master Jan 17, 2019
externals/yoga Update Emission deployment process Sep 24, 2018
images Adds view on map button to Artworks component Nov 30, 2018
patches Upgrade relay-mock-network-layer@2.0.0, remove patch Nov 7, 2018
scripts Make the release script handle no changes to the querymap Nov 7, 2018
src Merge master Jan 17, 2019
storybook Merge master Jan 17, 2019
typings [FIXME] Downgrade styled-components; patch NodeJS typings Aug 29, 2018
.babelrc [package] Configure for our 1.5.0 fork. Feb 4, 2018
.gitattributes [git] Hide query maps from GitHub diffs. May 4, 2018
.gitignore [package] Configure for our 1.5.0 fork. Feb 4, 2018
.gqlconfig [vscode] Enable graphql intellisense/autocomplete etc. Sep 4, 2017
.npmrc [npm] Do not ever write a package-lock.json file. Jan 13, 2018
.nvmrc Update to Node 10 and update affected testing dependencies Oct 31, 2018
.prettierignore Update Emission deployment process Sep 24, 2018
.stylelintrc Update stylint Nov 27, 2018
.travis.yml Update to Node 10 and update affected testing dependencies Oct 31, 2018
.yarnrc [Toolchain] disable integity check with .yarnrc Oct 30, 2018
CHANGELOG.md Merge master Jan 17, 2019
Emission.podspec Add pulley as a dep Jan 15, 2019
LICENSE Updates copyright year. Nov 19, 2018
Makefile Adds cocoapod key after pod install and removes comment from locationmap Nov 21, 2018
README.md Update README.md Jan 17, 2019
dangerfile.ts Support forked PRs Jun 20, 2018
dependencyci.yml Fix dependency ci, and add types for the animations Sep 29, 2016
index.ios.js [Relay] Convert routes to query renderers. Sep 4, 2017
index.tests.ios.js New entry point for native unit tests. Jan 10, 2019
jsconfig.json [Testing] Simplify deps re:testing Aug 13, 2016
package.json 1.8.0 Jan 17, 2019
renovate.json Merge master Jan 17, 2019
rn-cli.config.js [Dev] Updates to RN 52.0 and passes `yarn type-check` Mar 1, 2018
tsconfig.json [Toolchain] Update Typescript to 3.0.3 Sep 11, 2018
tslint.json Adds tslint-plugin-relay lint rule. Oct 20, 2018
yarn.lock Add HoursCollapsible Dec 3, 2018

README.md

Reactions ⇒ Emissions

Emission is a collection of React Native Components which are consumed by Eigen. A writeup on how & why we made a lot of the repo decisions is on our blog here.

Inside Emission you will find:

  • An example app for building and running Emission's components with an Eigen-like API.
  • An NPM module that relies on React Native and manages the components.
  • A Podspec that wraps it all together for easy external usage in Eigen.

Meta

This is a core Artsy Mobile OSS project, along with Energy, Eidolon, Eigen and Emergence.

Don't know what Artsy is? Check out this overview and more, or read our objc.io on team culture.

Want to know more about Emission? Read the mobile blog posts, or Emission's / React Native's specifically. Also check out the map to Emission to oriented yourself to the codebase.

Prerequisites

  • Xcode

Installation

Automated install:

  • OSS: git clone https://github.com/artsy/emission.git && cd emission && make setup && make oss
  • Artsy: git clone https://github.com/artsy/emission.git && cd emission && make setup && make artsy. Then look in 1password for the Eigen keys.

Manual install

  1. Install Node.js, and Yarn: $ brew install node yarn

  2. Install file watcher used by React Native:

    • $ brew install watchman
  3. Install NPM modules: $ yarn install

  4. Install Pods: $ cd Example && bundle && bundle exec pod install

    Running the project:

  5. Run $ yarn start from the top directory, which will:

    • Clean the example app’s Xcode build dir.
    • Start the example app’s React Native packager.
    • Start the React Storybooks environment.
  6. Now from Xcode you can run the app in Example/Emission.xcworkspace.

  • If you already have the app installed, you can run open -a Simulator to open the last sim, and then xcrun simctl launch booted net.artsy.Emission to open the app.
  • If you run into any issues with the above commands oftentimes a full clean can help. Run rm -rf node_modules; rm -rf Example/Pods; yarn install; cd Example; bundle exec pod install and then repeat the steps above.

Daily Development

To use Storybooks, select "Open Storybook" from the "Developer" section of the root view in the app. You can also use the VSCode Storybooks plugin.


Using VS Code as an IDE

There is a comprehensive document covering our setup here.

Debugging

There is a comprehensive document covering the various options.

Updating Dependencies

We vendor some data from other repositories that you will sometimes need to update. Notably the GraphQL schema of metaphysics that Relay uses to generate queries from: $ yarn sync-schema

Deploying Emission

Note: Deploys are mostly automated, these instructions should be valid but take a look at this issue if things break.

Note 2: If you're updating React Native, you're gonna have to do a lot of this stuff manually. See the makefile/alloy/orta for more info.

  1. Update the CHANGELOG file to reflect the version that will be released and commit it.
  2. Don't change the package.json version.
  3. For non-beta releases, use either yarn release patch, yarn release minor, or yarn release major. For beta releases use yarn release prerelease.
  4. If integrating in Eigen consult the docs on updating Emission

Automated Emission App Deploys

The Emission app (in Example/) is deployed automatically to TestFlight once a week through emission-nebula. See that repo for more details.

Resources