This gist contains a setup script because GitHub Gist does not preserve multiple files with the same basename such as package.json in different directories.
bash repro.sh
cd turbo-prune-bun-repro| { | |
| "data":{ | |
| "sections":[ | |
| { | |
| "items":[ | |
| { | |
| "type": "cocktail-intent", | |
| "text_color": "#ffffff", | |
| "title": "Emergency Anti Acne", | |
| "subtitle": "Moisturizer + Face Serum", |
| // 20200804192155 | |
| // https://akki91.github.io/json.io/skin/landing.json | |
| { | |
| "data": { | |
| "sections": [ | |
| { | |
| "header": "Hi, Robert", | |
| "background_image": { | |
| "dominant_color": "#c1d8cc", |
| diff --git a/Sources/Concerns/Feed/Extensions/FeedViewController+Model.swift b/Sources/Concerns/Feed/Extensions/FeedViewController+Model | |
| index 4007e5d..7786f04 100644 | |
| --- a/Sources/Concerns/Feed/Extensions/FeedViewController+Model.swift | |
| +++ b/Sources/Concerns/Feed/Extensions/FeedViewController+Model.swift | |
| @@ -67,9 +67,11 @@ extension FeedViewController { | |
| switch card.target.type { | |
| case "story": | |
| let controller = StoryViewController.instantiate(fromAppStoryboard: .story) | |
| - Hero.shared.defaultAnimation = .selectBy(presenting: .push(direction: .up), dismissing: .pull(direction: .d | |
| + |
| const statusBarMiddleware = ({ getState }) => next => (action) => { | |
| if (!Object.values(NavigationActions).includes(action.type)) { | |
| return next(action) | |
| } | |
| const currentScreen = getCurrentRouteName(getState().rootNavigation) | |
| const result = next(action) | |
| const nextScreen = getCurrentRouteName(getState().rootNavigation) | |
| if (nextScreen !== currentScreen && Platform.OS === 'ios') { | |
| setStyleForRoute(nextScreen) | |
| } |
| desc "Submit a new Beta Build to Crashlytics" | |
| lane :beta do |options| | |
| automatic_code_signing( | |
| path: "housing.xcodeproj", | |
| use_automatic_signing: true | |
| ) | |
| register_devices(devices_file: "./devices.txt") | |
| match( | |
| type: "development", | |
| force_for_new_devices: true |
| export default function localitySelect(action$, store, { ajax }) { | |
| return action$ | |
| .ofType('LOCALITY_AUTOCOMPLETE') | |
| .debounceTime(150) | |
| .distinctUntilChanged() | |
| .switchMap(({ payload: { text, cursor } }) => { | |
| return ajax | |
| .getJSON( | |
| `${api.searchSuggest}&cursor=${cursor}&string=${text}` | |
| ) |
If you have already seen Richard Feldman's talk entitled "Making Impossible States Impossible" or have read "Designing with types: Making illegal states unrepresentable" then you can skip the explanations and just head straight to the Reason examples.
This post is intended to display how to model your Reason Application to prevent creating impossible states. The benefits of being able to design a feature in this way include avoiding having to deal with complex test scenarios regarding defined business rules and a clear documentation of what is possible just by looking at the type definition. Long story short, let's see how this all works by implementing an example.
| /** | |
| * @providesModule InfinteList | |
| */ | |
| import React, { PropTypes } from 'react' | |
| import { View, StyleSheet, SectionList } from 'react-native' | |
| import ListComponent from 'ListComponent' | |
| import ListComponentStub from 'ListComponentStub' | |
| import ListHeader from 'ListHeader' | |
| import colors from 'colors' |