DEV: Convert emoji-store into a native class (#23572)
This commit is contained in:
parent
a4238a3726
commit
91e456ba30
|
@ -1,39 +1,41 @@
|
||||||
import KeyValueStore from "discourse/lib/key-value-store";
|
|
||||||
import Service from "@ember/service";
|
import Service from "@ember/service";
|
||||||
|
import KeyValueStore from "discourse/lib/key-value-store";
|
||||||
|
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
|
||||||
|
|
||||||
const EMOJI_USAGE = "emojiUsage";
|
const EMOJI_USAGE = "emojiUsage";
|
||||||
const EMOJI_SELECTED_DIVERSITY = "emojiSelectedDiversity";
|
const EMOJI_SELECTED_DIVERSITY = "emojiSelectedDiversity";
|
||||||
const TRACKED_EMOJIS = 15;
|
const TRACKED_EMOJIS = 15;
|
||||||
const STORE_NAMESPACE = "discourse_emojis_";
|
const STORE_NAMESPACE = "discourse_emojis_";
|
||||||
|
|
||||||
export default Service.extend({
|
@disableImplicitInjections
|
||||||
init() {
|
export default class EmojiStore extends Service {
|
||||||
this._super(...arguments);
|
store = new KeyValueStore(STORE_NAMESPACE);
|
||||||
|
|
||||||
this.store = new KeyValueStore(STORE_NAMESPACE);
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
|
||||||
if (!this.store.getObject(EMOJI_USAGE)) {
|
if (!this.store.getObject(EMOJI_USAGE)) {
|
||||||
this.favorites = [];
|
this.favorites = [];
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
get diversity() {
|
get diversity() {
|
||||||
return this.store.getObject(EMOJI_SELECTED_DIVERSITY) || 1;
|
return this.store.getObject(EMOJI_SELECTED_DIVERSITY) || 1;
|
||||||
},
|
}
|
||||||
|
|
||||||
set diversity(value) {
|
set diversity(value) {
|
||||||
this.store.setObject({ key: EMOJI_SELECTED_DIVERSITY, value: value || 1 });
|
this.store.setObject({ key: EMOJI_SELECTED_DIVERSITY, value: value || 1 });
|
||||||
this.notifyPropertyChange("diversity");
|
this.notifyPropertyChange("diversity");
|
||||||
},
|
}
|
||||||
|
|
||||||
get favorites() {
|
get favorites() {
|
||||||
return this.store.getObject(EMOJI_USAGE) || [];
|
return this.store.getObject(EMOJI_USAGE) || [];
|
||||||
},
|
}
|
||||||
|
|
||||||
set favorites(value) {
|
set favorites(value) {
|
||||||
this.store.setObject({ key: EMOJI_USAGE, value: value || [] });
|
this.store.setObject({ key: EMOJI_USAGE, value: value || [] });
|
||||||
this.notifyPropertyChange("favorites");
|
this.notifyPropertyChange("favorites");
|
||||||
},
|
}
|
||||||
|
|
||||||
track(code) {
|
track(code) {
|
||||||
const normalizedCode = code.replace(/(^:)|(:$)/g, "");
|
const normalizedCode = code.replace(/(^:)|(:$)/g, "");
|
||||||
|
@ -41,11 +43,10 @@ export default Service.extend({
|
||||||
recent.unshift(normalizedCode);
|
recent.unshift(normalizedCode);
|
||||||
recent.length = Math.min(recent.length, TRACKED_EMOJIS);
|
recent.length = Math.min(recent.length, TRACKED_EMOJIS);
|
||||||
this.favorites = recent;
|
this.favorites = recent;
|
||||||
},
|
}
|
||||||
|
|
||||||
reset() {
|
reset() {
|
||||||
const store = new KeyValueStore(STORE_NAMESPACE);
|
this.store.setObject({ key: EMOJI_USAGE, value: [] });
|
||||||
store.setObject({ key: EMOJI_USAGE, value: [] });
|
this.store.setObject({ key: EMOJI_SELECTED_DIVERSITY, value: 1 });
|
||||||
store.setObject({ key: EMOJI_SELECTED_DIVERSITY, value: 1 });
|
}
|
||||||
},
|
}
|
||||||
});
|
|
||||||
|
|
Loading…
Reference in New Issue