This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/services/emoji-store.js.es6
2019-10-29 13:29:08 -04:00

50 lines
1.3 KiB
JavaScript

import KeyValueStore from "discourse/lib/key-value-store";
import Service from "@ember/service";
const EMOJI_USAGE = "emojiUsage";
const EMOJI_SELECTED_DIVERSITY = "emojiSelectedDiversity";
const TRACKED_EMOJIS = 15;
const STORE_NAMESPACE = "discourse_emojis_";
export default Service.extend({
init() {
this._super(...arguments);
this.store = new KeyValueStore(STORE_NAMESPACE);
if (!this.store.getObject(EMOJI_USAGE)) {
this.favorites = [];
}
},
get diversity() {
return this.store.getObject(EMOJI_SELECTED_DIVERSITY) || 1;
},
set diversity(value) {
this.store.setObject({ key: EMOJI_SELECTED_DIVERSITY, value: value || 1 });
},
get favorites() {
return this.store.getObject(EMOJI_USAGE) || [];
},
set favorites(value) {
this.store.setObject({ key: EMOJI_USAGE, value: value || [] });
},
track(code) {
const normalizedCode = code.replace(/(^:)|(:$)/g, "");
const recent = this.favorites.filter(r => r !== normalizedCode);
recent.unshift(normalizedCode);
recent.length = Math.min(recent.length, TRACKED_EMOJIS);
this.favorites = recent;
},
reset() {
const store = new KeyValueStore(STORE_NAMESPACE);
store.setObject({ key: EMOJI_USAGE, value: [] });
store.setObject({ key: EMOJI_SELECTED_DIVERSITY, value: 1 });
}
});