{"action":"created","issue":{"url":"https://api.github.com/repos/shakacode/react-webpack-rails-tutorial/issues/346","repository_url":"https://api.github.com/repos/shakacode/react-webpack-rails-tutorial","labels_url":"https://api.github.com/repos/shakacode/react-webpack-rails-tutorial/issues/346/labels{/name}","comments_url":"https://api.github.com/repos/shakacode/react-webpack-rails-tutorial/issues/346/comments","events_url":"https://api.github.com/repos/shakacode/react-webpack-rails-tutorial/issues/346/events","html_url":"https://github.com/shakacode/react-webpack-rails-tutorial/pull/346","id":192067478,"number":346,"title":"React Native Tutorial","user":{"login":"alleycat-at-git","id":2248270,"avatar_url":"https://avatars.githubusercontent.com/u/2248270?v=3","gravatar_id":"","url":"https://api.github.com/users/alleycat-at-git","html_url":"https://github.com/alleycat-at-git","followers_url":"https://api.github.com/users/alleycat-at-git/followers","following_url":"https://api.github.com/users/alleycat-at-git/following{/other_user}","gists_url":"https://api.github.com/users/alleycat-at-git/gists{/gist_id}","starred_url":"https://api.github.com/users/alleycat-at-git/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alleycat-at-git/subscriptions","organizations_url":"https://api.github.com/users/alleycat-at-git/orgs","repos_url":"https://api.github.com/users/alleycat-at-git/repos","events_url":"https://api.github.com/users/alleycat-at-git/events{/privacy}","received_events_url":"https://api.github.com/users/alleycat-at-git/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2016-11-28T17:30:49Z","updated_at":"2016-12-01T17:59:29Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/shakacode/react-webpack-rails-tutorial/pulls/346","html_url":"https://github.com/shakacode/react-webpack-rails-tutorial/pull/346","diff_url":"https://github.com/shakacode/react-webpack-rails-tutorial/pull/346.diff","patch_url":"https://github.com/shakacode/react-webpack-rails-tutorial/pull/346.patch"},"body":"\n\n<!-- Reviewable:start -->\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/shakacode/react-webpack-rails-tutorial/346)\n<!-- Reviewable:end -->\n"},"comment":{"url":"https://api.github.com/repos/shakacode/react-webpack-rails-tutorial/issues/comments/264245644","html_url":"https://github.com/shakacode/react-webpack-rails-tutorial/pull/346#issuecomment-264245644","issue_url":"https://api.github.com/repos/shakacode/react-webpack-rails-tutorial/issues/346","id":264245644,"user":{"login":"alleycat-at-git","id":2248270,"avatar_url":"https://avatars.githubusercontent.com/u/2248270?v=3","gravatar_id":"","url":"https://api.github.com/users/alleycat-at-git","html_url":"https://github.com/alleycat-at-git","followers_url":"https://api.github.com/users/alleycat-at-git/followers","following_url":"https://api.github.com/users/alleycat-at-git/following{/other_user}","gists_url":"https://api.github.com/users/alleycat-at-git/gists{/gist_id}","starred_url":"https://api.github.com/users/alleycat-at-git/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alleycat-at-git/subscriptions","organizations_url":"https://api.github.com/users/alleycat-at-git/orgs","repos_url":"https://api.github.com/users/alleycat-at-git/repos","events_url":"https://api.github.com/users/alleycat-at-git/events{/privacy}","received_events_url":"https://api.github.com/users/alleycat-at-git/received_events","type":"User","site_admin":false},"created_at":"2016-12-01T17:59:29Z","updated_at":"2016-12-01T17:59:29Z","body":"@alexfedoseev They use it in the standard libs for RN, probably that's because mobile is optimized for fonts rather than svgs I've rarely seen any svgs there.\n\n---\n\nReview status: 99 of 119 files reviewed at latest revision, 35 unresolved discussions, some commit checks failed.\n\n---\n\n*[mobile/ReactNativeTutorial/.babelrc, line 2 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnpassM3Y-N5sA0eii:-KXuhL7lT2KbKs8sgxig:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.babelrc#L2)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nindent two\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.babelrc, line 3 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnpYxc9ejhXH7BSnBv:-KXuhLgGu-Yl6TQQKeRQ:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.babelrc#L3)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nmissing eof line return\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintignore, line 1 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnqNb1g1jnXC3zkENf:-KXuhrO6c7xFCxYv8Rjx:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintignore#L1)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nthis is already ignored\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintignore, line 4 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnqT7T2gt-0li8tmDo:-KXuhs5g-mngcG7C91uY:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintignore#L4)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nIs it necessary to ignore `.git`? I've never had any issues with that\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 3 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnqkgE_O7tTwsgXl4_:-KXukAJfGtfnv4rsyYAn:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L3)):*\n<details><summary><i>Previously, justin808 (Justin Gordon) wrote…</i></summary><blockquote>\n\nAgree with Rob!\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 27 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnrXKFyYfHniwptC-9:-KXukIcH8aX2AIOPpCBL:b3ojlbp) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L27)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nthese last 3 shouldn't be necessary?\n</blockquote></details>\n\nRemoved React*, fetch is necessary as it's a global function in RN\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 29 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoDkuT73Y9jASN2bUB:-KXul0xoWzTj45KFaDZA:b-zd2vr7) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L29)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nwhy this one?\n</blockquote></details>\n\nI abandoned here the notation of $$Map for immutable and use just Map, for that I need to ignore this.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 30 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoDvO-pMB-a5lcBoG3:-KXulmHkicM999tkfUVk:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L30)):*\n<details><summary><i>Previously, justin808 (Justin Gordon) wrote…</i></summary><blockquote>\n\n> react/sort-comp: \nagree\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 31 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnrzb7drFv12QLEGya:-KXun6IG0RnptJFo2vH1:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L31)):*\n<details><summary><i>Previously, justin808 (Justin Gordon) wrote…</i></summary><blockquote>\n\nagreee\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 32 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnry_FVu07G9GMwnsj:-KXunDoYtXoa9NimUwoI:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L32)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nthis is already on\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 33 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnrx7Zx-9_fBrEHnct:-KXunErantilUoYTLBCq:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L33)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nthis is already on\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 34 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXnrrfjQiataKzG2OHk:-KXunlq8RxPvTB7coqSE:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L34)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nthis should be fixed now so we can remove\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 39 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoE-wheecqoQMrr-GR:-KXunktww75of5dTYr4Y:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L39)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nThis shouldn't be necessary since you're using the `flowtype` plugin\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.eslintrc.yml, line 51 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoEDQPVWJGgaK94l_n:-KXunk4GE9-tI1DiJpm5:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.eslintrc.yml#L51)):*\n<details><summary><i>Previously, justin808 (Justin Gordon) wrote…</i></summary><blockquote>\n\nagree\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/.flowconfig, line 67 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoEnNsbbACd5mpBpuy:-KXunxJjcvufdGuafnr_:bd3sk2m) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.flowconfig#L67)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nmight as well bump this since this implementation is greenfield\n</blockquote></details>\n\nI guess I'll leave it, as this is a standard React Native template, coming from the generator\n\n---\n\n*[mobile/ReactNativeTutorial/.watchmanconfig, line 1 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoF-DEuW6-0OcA2FyF:-KXuo9-9vQiBDZP-RGAO:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/.watchmanconfig#L1)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nmissing eof line return\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/app/api/index.js, line 37 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoG3aq1KFTa8HkZsNM:-KXuxSrUqkXyaqxYEy-m:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/api/index.js#L37)):*\n<details><summary><i>Previously, justin808 (Justin Gordon) wrote…</i></summary><blockquote>\n\nMight be worth a try. We need to balance out simplicity vs. realism.\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/app/bundles/comments/components/Index/Footer/Footer.js, line 16 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoGqZm9RrUgqqbAFCy:-KXuy6k_oU1bnXTFLyjn:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/bundles/comments/components/Index/Footer/Footer.js#L16)):*\n<details><summary><i>Previously, justin808 (Justin Gordon) wrote…</i></summary><blockquote>\n\nnice one\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/app/bundles/comments/components/Index/List/List.js, line 17 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoHQ5bNWxBB-iIxo_0:-KXuywlQHHVr3wXGSkMY:b-6ioigi) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/bundles/comments/components/Index/List/List.js#L17)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nThis type of thing should be in the selector to prevent unnecessary re-computations of the sort when other unrelated props cause this component to re-render\n</blockquote></details>\n\n@robwise That's a nice one, I actually moved the sorting code to selectors long time ago, but forgot to delete this code lol )\n\n---\n\n*[mobile/ReactNativeTutorial/app/bundles/comments/components/Index/List/List.js, line 13 at r2](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXtajC9Q2tgDN51dJ1h:-KXuyEghk9cf5L05uxxq:b-951mvj) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/43b789f81e93462a92a2cdcb9ea08e6633943b16/mobile/ReactNativeTutorial/app/bundles/comments/components/Index/List/List.js#L13)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nmost FP languages call this compose (as well as [ramda](http://ramdajs.com/) as well as [Redux's version](https://github.com/reactjs/redux/blob/master/docs/api/compose.md)), so even though it's listed as an alias in lodash/fp, it's actually the name you'll more commonly see, for what that's worth\n</blockquote></details>\n\nYeah, precisely for the reason Rob stated above.\n\n---\n\n*[mobile/ReactNativeTutorial/app/bundles/comments/hocs/withIndexProps.js, line 30 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoIlwSAcY1V05w6BvS:-KXuzlxJzwMS1Rq1PDrk:b-glmvy7) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/bundles/comments/hocs/withIndexProps.js#L30)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nWhy not keep this selector in the selectors folder?\n</blockquote></details>\n\nI try to keep selectors uniform in terms of using only immutable. That way you can simply reuse any selector for new selector not keeping in mind whether it is JS or immutable. Once you leave selectors realm and try to connect component you convert Immutable to JS\n\n---\n\n*[mobile/ReactNativeTutorial/app/reducers/commentFormReducer.js, line 32 at r2](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXuTpkIOLDE_-YBtMtr:-KXvNkiaN045L04O8ta8:b-gooxdd) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/43b789f81e93462a92a2cdcb9ea08e6633943b16/mobile/ReactNativeTutorial/app/reducers/commentFormReducer.js#L32)):*\n<details><summary><i>Previously, alexfedoseev (Alex Fedoseev) wrote…</i></summary><blockquote>\n\nWhy this file is not typed?\n</blockquote></details>\n\nBasically because nothing to typecheck here, all states are immutable maps, all actions are hashmaps, and each reducer either returns initialState or merges smth\n\n---\n\n*[mobile/ReactNativeTutorial/app/reducers/commentsStoreReducer.js, line 5 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoJFTp2u5VKkZZ65Zp:-KXv1Euf0nEHDnxBaS5t:b-2yss5u) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/reducers/commentsStoreReducer.js#L5)):*\n<details><summary><i>Previously, alexfedoseev (Alex Fedoseev) wrote…</i></summary><blockquote>\n\nRight, I prefer pattern `one action -> multiple reducers reaction` instead of dispatching multiple actions b/c batched updates reduce amount of store updates (-> components re-renders) + I don't need to think about the cases when temporary invalid state can crash components tree on re-render.\n</blockquote></details>\n\nWell in Spylight I found this approach really messy. That's because we got heavy reuse of components and reducers and the latter grew really big and clumsy. Here I use two types of actions ones are simple redux actions close to redux state structure, others are thunks close to UI structure, built on top of basic actions. I also think that this approach is in line with what we're used to in MVC approach, where redux state is model and UI are controllers - you don't put the code inside model that reacts to different controllers, you do it the other way round - controllers use model's code.\n\n---\n\n*[mobile/ReactNativeTutorial/app/reducers/commentsStoreReducer.js, line 9 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoJwRziMqLAAoL-vH8:-KXv6KuQOgiPGbJkaVte:blepwfc) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/reducers/commentsStoreReducer.js#L9)):*\n<details><summary><i>Previously, alexfedoseev (Alex Fedoseev) wrote…</i></summary><blockquote>\n\nAgreed on this separation in big apps. I treat `entities` as client's data base and store only data, that was persisted on the server. It's a source of truth (data) for many components and it's decoupled from UI \"global\" part of the state. View layer related state I hold in separate reducers (usually next to the UI components as most of the time this state is \"local\" (in terms of usage) and coupled to the single part of UI).\n</blockquote></details>\n\nI agree on storing view state inside separate reducer, but here I use meta as the state of the entities state, not the part of UI. I didn't fully understand how do you propose to structure this, smth like this?\n```\n{\n  meta: {\n    comments: {\n      ...\n    },\n    people: {\n      ...\n    }\n  },\n\n  comments: {\n     1: {...}\n  },\n  people: {\n     1: {...}\n  },\n}\n```\n\n@robwise @alexfedoseev \n\n---\n\n*[mobile/ReactNativeTutorial/app/reducers/commentsStoreReducer.js, line 17 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoLAxfxx-ox3ZZgcfz:-KXv8movyhCLKilbvft_:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/reducers/commentsStoreReducer.js#L17)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nI think the convention is `export default (state = initialState, action) => {` which would save you four lines\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/app/selectors/commentsPropsSelector.js, line 8 at r2](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXuZQy93EcdIjARNVaV:-KXvPUwEkvbpG4U2QtGV:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/43b789f81e93462a92a2cdcb9ea08e6633943b16/mobile/ReactNativeTutorial/app/selectors/commentsPropsSelector.js#L8)):*\n<details><summary><i>Previously, alexfedoseev (Alex Fedoseev) wrote…</i></summary><blockquote>\n\n[`sortBy`](http://facebook.github.io/immutable-js/docs/#/Iterable/sortBy) might be more appropriate here.\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/app/setup/loggerMiddleware.js, line 3 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoLnHI3WaP7q3BY2EP:-KXv9Lo8NVZOCYwPHMvV:b-eeh84e) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/setup/loggerMiddleware.js#L3)):*\n<details><summary><i>Previously, alexfedoseev (Alex Fedoseev) wrote…</i></summary><blockquote>\n\nBTW I noticed that it has issue w/ reducers, which state is not an object: https://cl.ly/iIPo (it treats them as an empty objects).\nIn general I prefer dev tools, b/c it's invisible and doesn't pollute console that much.\n</blockquote></details>\n\nI'm doing some advanced logging here and DevTools is just for web.\n\n---\n\n*[mobile/ReactNativeTutorial/app/setup/store.js, line 12 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoXk5NNtguD7YEEPqp:-KXvPy-vnSWDT1p_ETuC:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/setup/store.js#L12)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nthis is the old syntax, I think the new syntax is a little easier to read:\n\n```js\nconst middlewares = __DEV__ ? [effectsMiddleware, loggerMiddleware] : [effectsMiddleware];\n\nexport default createStore(appReducer, initialState, applyMiddleware(...middlewares));\n```\n\nAlso, you usually want your logging to go last because most people don't want to log promises or thunks, although I noticed you do that with your custom logger:\n\n> Logger must be the last middleware in chain, otherwise it will log thunk and promise\n\n[source](https://github.com/evgenyrodionov/redux-logger#usage)\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/app/setup/Router/Router.js, line 9 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoZaQef0LYyNa7NkYp:-KXvRl9lgYWMQvn-2lZY:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/setup/Router/Router.js#L9)):*\n<details><summary><i>Previously, robwise (Rob Wise) wrote…</i></summary><blockquote>\n\nthis const doesn't seem necessary, I would just inline it\n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/app/utils/redux.js, line 4 at r1](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXoZoNE0PSvmy3mOqYk:-KXvVVAxbrOdGVWbP5c5:b-896fix) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/987a9cfb6140e36167309f949a33024aeb835bfb/mobile/ReactNativeTutorial/app/utils/redux.js#L4)):*\n<details><summary><i>Previously, justin808 (Justin Gordon) wrote…</i></summary><blockquote>\n\nI agree with Rob. Yes, this file gets a new id. \n</blockquote></details>\n\nDone.\n\n---\n\n*[mobile/ReactNativeTutorial/ios/ReactNativeTutorial.xcodeproj/project.pbxproj, line 7 at r2](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXubMtQlHFpWA5FOCVl:-KXv9mCdvlGPCk9JU0S6:bfd1mxr) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/43b789f81e93462a92a2cdcb9ea08e6633943b16/mobile/ReactNativeTutorial/ios/ReactNativeTutorial.xcodeproj/project.pbxproj#L7)):*\n<details><summary><i>Previously, alexfedoseev (Alex Fedoseev) wrote…</i></summary><blockquote>\n\nLet's use spaces! 🤓 😅\n</blockquote></details>\n\nNah - tabs!!!! ))))\n\n---\n\n*[mobile/ReactNativeTutorial/app/bundles/comments/components/Index/List/ListStyle.js, line 5 at r2](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-KXuSUZg8GJJGUf6DQFE:-KXuzYCbPZQuc1cJls-1:b-lqe01p) ([raw file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/43b789f81e93462a92a2cdcb9ea08e6633943b16/mobile/ReactNativeTutorial/app/bundles/comments/components/Index/List/ListStyle.js#L5)):*\n<details><summary><i>Previously, alexfedoseev (Alex Fedoseev) wrote…</i></summary><blockquote>\n\nNothing here, is this intentional?\n</blockquote></details>\n\nUsually I left this empty intentional, because this is very frequent way of styling, but I guess I'll drop it in the tutorial\n\n---\n\n\n*Comments from [Reviewable](https://reviewable.io:443/reviews/shakacode/react-webpack-rails-tutorial/346#-:-KXuglwh4XEjI7w12Tq-:bt4fm7m)*\n<!-- Sent from Reviewable.io -->\n"}}
{"actor":{"display_login":"alleycat-at-git"}}