From 2490a148515e978efa3a4e4735b60c5ac36bff22 Mon Sep 17 00:00:00 2001 From: NoriDev Date: Sat, 30 Dec 2023 15:28:33 +0900 Subject: [PATCH] =?UTF-8?q?enhance(frontend):=20=EC=84=9C=EB=B2=84?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=ED=91=B8=EC=8B=9C=20=EC=95=8C=EB=A6=BC?= =?UTF-8?q?=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EC=9C=BC=EB=A9=B4=20=ED=91=B8=EC=8B=9C=20=EC=95=8C=EB=A6=BC?= =?UTF-8?q?=EC=9D=84=20=ED=99=9C=EC=84=B1=ED=99=94=20=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=8C=80=ED=99=94=20=EC=83=81=EC=9E=90=EB=A5=BC=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG_CHERRYPICK.md | 1 + packages/frontend/src/boot/common.ts | 8 ++- .../src/components/MkPushNotification.vue | 57 +++++++++++++++++++ .../src/components/MkUserSetupDialog.vue | 2 +- packages/frontend/src/local-storage.ts | 3 +- 5 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 packages/frontend/src/components/MkPushNotification.vue diff --git a/CHANGELOG_CHERRYPICK.md b/CHANGELOG_CHERRYPICK.md index edf8157e83..a9bff30b3e 100644 --- a/CHANGELOG_CHERRYPICK.md +++ b/CHANGELOG_CHERRYPICK.md @@ -69,6 +69,7 @@ Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#2023xx](CHANGE - Enhance: 링크 또는 내용을 복사할 때 토스트 알림 표시 - Enhance: HTML 태그 및 Markdown 태그가 자동 완성을 지원함 - `<`를 입력하면 ``, ~~, , ,
, , `, ```, \(\), \(\\ \) `` 태그를 자동으로 입력할 수 있음 +- Enhance: 서버에서 푸시 알림을 사용할 수 있으면 푸시 알림을 활성화 하도록 대화 상자를 표시 - Fix: '모달 배경색 제거' 옵션이 이모지 피커에 반영되지 않음 - Fix: 열람 주의로 설정된 노트의 리액션이 '더 보기'를 눌러야 표시됨 - Fix: 채널 이름이 긴 경우 게시 양식 표시가 깨지는 문제 (misskey-dev/misskey#12524) diff --git a/packages/frontend/src/boot/common.ts b/packages/frontend/src/boot/common.ts index a55c8e5d22..2cf93bb1f6 100644 --- a/packages/frontend/src/boot/common.ts +++ b/packages/frontend/src/boot/common.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { computed, watch, version as vueVersion, App } from 'vue'; +import { computed, watch, version as vueVersion, App, defineAsyncComponent } from 'vue'; import { compareVersions } from 'compare-versions'; import widgets from '@/widgets/index.js'; import directives from '@/directives/index.js'; @@ -22,6 +22,7 @@ import { getAccountFromId } from '@/scripts/get-account-from-id.js'; import { deckStore } from '@/ui/deck/deck-store.js'; import { miLocalStorage } from '@/local-storage.js'; import { fetchCustomEmojis } from '@/custom-emojis.js'; +import { popup } from '@/os.js'; export async function common(createVue: () => App) { console.info(`CherryPick v${version}`); @@ -67,6 +68,11 @@ export async function common(createVue: () => App) { let isClientUpdated = false; let isClientMigrated = false; + const showPushNotificationDialog = miLocalStorage.getItem('showPushNotificationDialog'); + + if (instance.swPublickey && ('PushManager' in window) && $i && $i.token && showPushNotificationDialog == null) { + popup(defineAsyncComponent(() => import('@/components/MkPushNotification.vue')), {}, {}, 'closed'); + } //#region クライアントが更新されたかチェック const lastVersion = miLocalStorage.getItem('lastVersion'); diff --git a/packages/frontend/src/components/MkPushNotification.vue b/packages/frontend/src/components/MkPushNotification.vue new file mode 100644 index 0000000000..bbc93503db --- /dev/null +++ b/packages/frontend/src/components/MkPushNotification.vue @@ -0,0 +1,57 @@ + + + + + + + diff --git a/packages/frontend/src/components/MkUserSetupDialog.vue b/packages/frontend/src/components/MkUserSetupDialog.vue index 8da1503fe6..7dbf61abe1 100644 --- a/packages/frontend/src/components/MkUserSetupDialog.vue +++ b/packages/frontend/src/components/MkUserSetupDialog.vue @@ -127,7 +127,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- +
{{ i18n.ts.pushNotification }}
{{ i18n.t('_initialAccountSetting.pushNotificationDescription', { name: instance.name ?? host }) }}
diff --git a/packages/frontend/src/local-storage.ts b/packages/frontend/src/local-storage.ts index cea355c3ef..16385b9614 100644 --- a/packages/frontend/src/local-storage.ts +++ b/packages/frontend/src/local-storage.ts @@ -40,7 +40,8 @@ type Keys = 'lastEmojisFetchedAt' | // DEPRECATED, stored in indexeddb (13.9.0~) 'emojis' | // DEPRECATED, stored in indexeddb (13.9.0~); `channelLastReadedAt:${string}` | - 'neverShowNoteEditInfo' + 'neverShowNoteEditInfo' | + 'showPushNotificationDialog' export const miLocalStorage = { getItem: (key: Keys): string | null => window.localStorage.getItem(key),