From 65961bc15ba33151e6a2ac6da84c33e2af330af0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 5 Nov 2018 19:20:35 +0900 Subject: Refactoring & 設定でTwemojiを使うかどうか切り替えられるように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/common/views/components/autocomplete.vue | 18 ++++-- src/client/app/common/views/components/emoji.vue | 70 ++++++++++++++-------- .../views/components/misskey-flavored-markdown.ts | 4 +- .../app/common/views/directives/autocomplete.ts | 1 + 4 files changed, 60 insertions(+), 33 deletions(-) (limited to 'src/client/app/common') diff --git a/src/client/app/common/views/components/autocomplete.vue b/src/client/app/common/views/components/autocomplete.vue index dff0bfd8d3..4cf44a23ae 100644 --- a/src/client/app/common/views/components/autocomplete.vue +++ b/src/client/app/common/views/components/autocomplete.vue @@ -14,7 +14,8 @@
  1. - + + {{ emoji.emoji }} ({{ emoji.aliasOf }}) @@ -33,6 +34,7 @@ type EmojiDef = { name: string; aliasOf?: string; url?: string; + isCustomEmoji?: boolean; }; const lib = Object.entries(emojilib.lib).filter((x: any) => { @@ -40,7 +42,7 @@ const lib = Object.entries(emojilib.lib).filter((x: any) => { }); const emjdb: EmojiDef[] = lib.map((x: any) => ({ - emoji: `:${x[0]}:`, + emoji: x[1].char, name: x[0], aliasOf: null, url: `https://twemoji.maxcdn.com/2/svg/${x[1].char.codePointAt(0).toString(16)}.svg` @@ -50,7 +52,7 @@ lib.forEach((x: any) => { if (x[1].keywords) { x[1].keywords.forEach(k => { emjdb.push({ - emoji: `:${x[0]}:`, + emoji: x[1].char, name: k, aliasOf: x[0], url: `https://twemoji.maxcdn.com/2/svg/${x[1].char.codePointAt(0).toString(16)}.svg` @@ -79,6 +81,10 @@ export default Vue.extend({ computed: { items(): HTMLCollection { return (this.$refs.suggests as Element).children; + }, + + useOsDefaultEmojis(): boolean { + return this.$store.state.device.useOsDefaultEmojis; } }, @@ -109,7 +115,8 @@ export default Vue.extend({ emojiDefinitions.push({ name: x.name, emoji: `:${x.name}:`, - url: x.url + url: x.url, + isCustomEmoji: true }); if (x.aliases) { @@ -118,7 +125,8 @@ export default Vue.extend({ name: alias, aliasOf: x.name, emoji: `:${x.name}:`, - url: x.url + url: x.url, + isCustomEmoji: true }); }); } diff --git a/src/client/app/common/views/components/emoji.vue b/src/client/app/common/views/components/emoji.vue index 7429aaaa5b..a02d7b3f26 100644 --- a/src/client/app/common/views/components/emoji.vue +++ b/src/client/app/common/views/components/emoji.vue @@ -1,59 +1,77 @@ diff --git a/src/client/app/common/views/components/misskey-flavored-markdown.ts b/src/client/app/common/views/components/misskey-flavored-markdown.ts index b4b141ea2b..dd111aba05 100644 --- a/src/client/app/common/views/components/misskey-flavored-markdown.ts +++ b/src/client/app/common/views/components/misskey-flavored-markdown.ts @@ -187,10 +187,10 @@ export default Vue.component('misskey-flavored-markdown', { } case 'emoji': { - const { emoji, raw } = token; + const { emoji, name } = token; const { customEmojis } = this; return [createElement('mk-emoji', { - attrs: { emoji, raw }, + attrs: { emoji, name }, props: { customEmojis } })]; } diff --git a/src/client/app/common/views/directives/autocomplete.ts b/src/client/app/common/views/directives/autocomplete.ts index 1a5c5daedc..b91e70f900 100644 --- a/src/client/app/common/views/directives/autocomplete.ts +++ b/src/client/app/common/views/directives/autocomplete.ts @@ -145,6 +145,7 @@ class Autocomplete { } else { // サジェスト要素作成 this.suggestion = new MkAutocomplete({ + parent: this.vm, propsData: { textarea: this.textarea, complete: this.complete, -- cgit v1.3.1-freya