Skip to content

Commit

Permalink
Prevent skin tone selection being lost on picker close. TODO: Fully p…
Browse files Browse the repository at this point in the history
…ort store util to React Native
  • Loading branch information
pederjohnsen committed May 16, 2018
1 parent 954a549 commit 9bd71af
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 9 deletions.
2 changes: 1 addition & 1 deletion dist/components/picker/nimble-picker.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/utils/shared-props.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/utils/skin.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "emoji-mart-native",
"version": "0.2.8-beta",
"version": "0.2.9-beta",
"description": "Customizable Slack-like emoji picker for React Native",
"main": "dist/index.js",
"repository": {
Expand Down
10 changes: 5 additions & 5 deletions src/components/picker/nimble-picker.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
// PixelRatio,
} from 'react-native'

import store from '../../utils/store'
import skinStore from '../../utils/skin'
import frequently from '../../utils/frequently'
import { deepMerge } from '../../utils'
import { uncompress } from '../../utils/data'
Expand Down Expand Up @@ -104,7 +104,7 @@ export default class NimblePicker extends React.PureComponent {
this.data = props.data
this.i18n = deepMerge(I18N, props.i18n)
this.state = {
skin: props.skin || store.get('skin') || props.defaultSkin,
skin: props.skin || skinStore.get() || props.defaultSkin,
firstRender: true,
}

Expand Down Expand Up @@ -217,7 +217,7 @@ export default class NimblePicker extends React.PureComponent {
componentWillReceiveProps(props) {
if (props.skin) {
this.setState({ skin: props.skin })
} else if (props.defaultSkin && !store.get('skin')) {
} else if (props.defaultSkin && !skinStore.get()) {
this.setState({ skin: props.defaultSkin })
}
}
Expand Down Expand Up @@ -376,11 +376,11 @@ export default class NimblePicker extends React.PureComponent {
}

handleSkinChange(skin) {
var newState = { skin: skin },
var newState = { skin },
{ onSkinChange } = this.props

this.setState(newState)
store.update(newState)
skinStore.set(skin)

onSkinChange(skin)
}
Expand Down
2 changes: 1 addition & 1 deletion src/utils/shared-props.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ const PickerDefaultProps = {
emoji: 'department_store',
color: '#ae65c5',
set: EmojiDefaultProps.set,
skin: EmojiDefaultProps.skin,
skin: null,
defaultSkin: EmojiDefaultProps.skin,
native: EmojiDefaultProps.native,
emojiImageFn: EmojiDefaultProps.emojiImageFn,
Expand Down
23 changes: 23 additions & 0 deletions src/utils/skin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import store from './store'

let skin, initialized

function init() {
initialized = true
skin = store.get('skin')
}

function set(skinTone) {
if (!initialized) init()

skin = skinTone
store.set('skin', skinTone)
}

function get() {
if (!initialized) init()

return skin
}

export default { set, get }

0 comments on commit 9bd71af

Please sign in to comment.