emoji-mart-lazyload/src/utils/frequently.js

58 lines
1.0 KiB
JavaScript
Raw Normal View History

2016-07-20 18:45:28 +00:00
import store from './store'
2017-04-24 02:27:21 +00:00
const DEFAULTS = [
'+1',
'grinning',
'kissing_heart',
'heart_eyes',
'laughing',
'stuck_out_tongue_winking_eye',
'sweat_smile',
'joy',
'scream',
'disappointed',
'unamused',
'weary',
'sob',
'sunglasses',
'heart',
'poop',
]
let frequently = store.get('frequently')
function add(emoji) {
var { id } = emoji
2017-04-24 02:27:21 +00:00
frequently || (frequently = {})
frequently[id] || (frequently[id] = 0)
frequently[id] += 1
store.set('last', id)
store.set('frequently', frequently)
}
2017-04-24 02:27:21 +00:00
function get(perLine) {
if (!frequently) {
frequently = {}
Array(perLine).fill('').forEach((_, i) => {
frequently[DEFAULTS[i]] = perLine - i
})
}
var quantity = perLine * 4,
sorted = Object.keys(frequently).sort((a, b) => frequently[a] - frequently[b]).reverse(),
sliced = sorted.slice(0, quantity),
last = store.get('last')
if (last && sliced.indexOf(last) == -1) {
sliced.pop()
sliced.push(last)
}
return sliced
}
export default { add, get }