feat: Add Badge Image to Push Notification (#8012)
* fix * nanka iroiro * wip * wip * fix lint * fix loginId * fix * refactor * refactor * remove follow action * clean up * Revert "remove follow action" This reverts commit defbb416480905af2150d1c92f10d8e1d1288c0a. * Revert "clean up" This reverts commit f94919cb9cff41e274044fc69c56ad36a33974f2. * remove fetch specification * renoteの条件追加 * apiFetch => cli * bypass fetch? * fix * refactor: use path alias * temp: add submodule * remove submodule * enhane: unison-reloadに指定したパスに移動できるように * null * null * feat: ログインするアカウントのIDをクエリ文字列で指定する機能 * null * await? * rename * rename * Update read.ts * merge * get-note-summary * fix * swパッケージに * add missing packages * fix getNoteSummary * add webpack-cli * ✌️ * remove plugins * sw-inject分離したがテストしてない * fix notification.vue * remove a blank line * disconnect intersection observer * disconnect2 * fix notification.vue * remove a blank line * disconnect intersection observer * disconnect2 * fix * ✌️ * clean up config * typesを戻した * backend/src/web/index.ts * notification-badges * add scripts * change create-notification.ts * Update packages/client/src/components/notification.vue Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> * disconnect * oops * Failed to load the script unexpectedly回避 sw.jsとlib.tsを分離してみた * truncate notification * Update packages/client/src/ui/_common_/common.vue Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> * clean up * clean up * refactor * キャッシュ対策 * Truncate push notification message * fix * クライアントがあったらストリームに接続しているということなので通知しない判定の位置を修正 * components/drive-file-thumbnail.vue * components/drive-select-dialog.vue * components/drive-window.vue * merge * fix * Service Workerのビルドにesbuildを使うようにする * return createEmptyNotification() * fix * fix * i18n.ts * update * ✌️ * remove ts-loader * fix * fix * enhance: Service Workerを常に登録するように * pollEnded * pollEnded * URLをsw.jsに戻す * clean up * fix lint * changelog * alpha-test * also with twemoji * add isMimeImage function * catch * Colour => Color * char2file => char2filePath * Update autocomplete.vue * remove clone? Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
		
							parent
							
								
									54465d36a7
								
							
						
					
					
						commit
						b70473ed60
					
				
					 24 changed files with 197 additions and 21 deletions
				
			
		|  | @ -35,6 +35,7 @@ | |||
| <script lang="ts"> | ||||
| import { markRaw, ref, onUpdated, onMounted, onBeforeUnmount, nextTick, watch } from 'vue'; | ||||
| import contains from '@/scripts/contains'; | ||||
| import { char2filePath } from '@/scripts/twemoji-base'; | ||||
| import { getStaticImageUrl } from '@/scripts/get-static-image-url'; | ||||
| import { acct } from '@/filters/user'; | ||||
| import * as os from '@/os'; | ||||
|  | @ -42,7 +43,6 @@ import { MFM_TAGS } from '@/scripts/mfm-tags'; | |||
| import { defaultStore } from '@/store'; | ||||
| import { emojilist } from '@/scripts/emojilist'; | ||||
| import { instance } from '@/instance'; | ||||
| import { twemojiSvgBase } from '@/scripts/twemoji-base'; | ||||
| import { i18n } from '@/i18n'; | ||||
| 
 | ||||
| type EmojiDef = { | ||||
|  | @ -55,16 +55,10 @@ type EmojiDef = { | |||
| 
 | ||||
| const lib = emojilist.filter(x => x.category !== 'flags'); | ||||
| 
 | ||||
| const char2file = (char: string) => { | ||||
| 	let codes = Array.from(char).map(x => x.codePointAt(0)?.toString(16)); | ||||
| 	if (!codes.includes('200d')) codes = codes.filter(x => x !== 'fe0f'); | ||||
| 	return codes.filter(x => x && x.length).join('-'); | ||||
| }; | ||||
| 
 | ||||
| const emjdb: EmojiDef[] = lib.map(x => ({ | ||||
| 	emoji: x.char, | ||||
| 	name: x.name, | ||||
| 	url: `${twemojiSvgBase}/${char2file(x.char)}.svg` | ||||
| 	url: char2filePath(x.char), | ||||
| })); | ||||
| 
 | ||||
| for (const x of lib) { | ||||
|  | @ -74,7 +68,7 @@ for (const x of lib) { | |||
| 				emoji: x.char, | ||||
| 				name: k, | ||||
| 				aliasOf: x.name, | ||||
| 				url: `${twemojiSvgBase}/${char2file(x.char)}.svg` | ||||
| 				url: char2filePath(x.char), | ||||
| 			}); | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| <template> | ||||
| char2filePath<template> | ||||
| <img v-if="customEmoji" class="mk-emoji custom" :class="{ normal, noStyle }" :src="url" :alt="alt" :title="alt" decoding="async"/> | ||||
| <img v-else-if="char && !useOsNativeEmojis" class="mk-emoji" :src="url" :alt="alt" :title="alt" decoding="async"/> | ||||
| <span v-else-if="char && useOsNativeEmojis">{{ char }}</span> | ||||
|  | @ -8,7 +8,7 @@ | |||
| <script lang="ts"> | ||||
| import { computed, defineComponent, ref, watch } from 'vue'; | ||||
| import { getStaticImageUrl } from '@/scripts/get-static-image-url'; | ||||
| import { twemojiSvgBase } from '@/scripts/twemoji-base'; | ||||
| import { char2filePath } from '@/scripts/twemoji-base'; | ||||
| import { defaultStore } from '@/store'; | ||||
| import { instance } from '@/instance'; | ||||
| 
 | ||||
|  | @ -45,10 +45,7 @@ export default defineComponent({ | |||
| 		const customEmoji = computed(() => isCustom.value ? ce.value.find(x => x.name === props.emoji.substr(1, props.emoji.length - 2)) : null); | ||||
| 		const url = computed(() => { | ||||
| 			if (char.value) { | ||||
| 				let codes = Array.from(char.value).map(x => x.codePointAt(0).toString(16)); | ||||
| 				if (!codes.includes('200d')) codes = codes.filter(x => x !== 'fe0f'); | ||||
| 				codes = codes.filter(x => x && x.length); | ||||
| 				return `${twemojiSvgBase}/${codes.join('-')}.svg`; | ||||
| 				return char2filePath(char.value); | ||||
| 			} else { | ||||
| 				return defaultStore.state.disableShowingAnimatedImages | ||||
| 					? getStaticImageUrl(customEmoji.value.url) | ||||
|  |  | |||
|  | @ -1 +1,12 @@ | |||
| export const twemojiSvgBase = '/twemoji'; | ||||
| 
 | ||||
| export function char2fileName(char: string): string { | ||||
| 	let codes = Array.from(char).map(x => x.codePointAt(0)?.toString(16)); | ||||
| 	if (!codes.includes('200d')) codes = codes.filter(x => x !== 'fe0f'); | ||||
| 	codes = codes.filter(x => x && x.length); | ||||
| 	return codes.join('-'); | ||||
| } | ||||
| 
 | ||||
| export function char2filePath(char: string): string { | ||||
| 	return `${twemojiSvgBase}/${char2fileName(char)}.svg`; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue