From 0a31e132c74cc2d8029cdadd103ea66a3ce16b6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
<67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Sat, 27 Apr 2024 16:48:04 +0900
Subject: [PATCH] =?UTF-8?q?fix(frontend):=20Play=E3=81=AEAiScript=E3=83=A9?=
=?UTF-8?q?=E3=83=B3=E3=82=BF=E3=82=A4=E3=83=A0=E3=81=8C=E5=81=9C=E6=AD=A2?=
=?UTF-8?q?=E3=81=97=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AB=E7=94=BB=E9=9D=A2?=
=?UTF-8?q?=E3=81=8C=E5=88=9D=E6=9C=9F=E5=8C=96=E3=81=95=E3=82=8C=E3=81=A6?=
=?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE?=
=?UTF-8?q?=E6=AD=A3=20(#13747)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix(frontend): PlayのAiScriptランタイムが停止したときに画面が初期化されていない問題を修正
* fix
* Update Changelog
* typo
---
CHANGELOG.md | 2 +
packages/frontend/src/pages/flash/flash.vue | 82 ++++++++++++++++-----
2 files changed, 66 insertions(+), 18 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5933a4383c..e4605fe746 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,6 +35,7 @@
- Enhance: リプライにて引用がある場合テキストが空でもノートできるように
- 引用したいノートのURLをコピーしリプライ投稿画面にペーストして添付することで達成できます
- Enhance: フォローするかどうかの確認ダイアログを出せるように
+- Enhance: Playを手動でリロードできるように
- Chore: AiScriptを0.18.0にバージョンアップ
- Fix: 一部のページ内リンクが正しく動作しない問題を修正
- Fix: 周年の実績が閏年を考慮しない問題を修正
@@ -50,6 +51,7 @@
- Fix: ノート詳細ページにおいてCW付き引用リノートのCWボタンのラベルに「引用」が含まれていない問題を修正
- Fix: ダイアログの入力で字数制限に違反していてもEnterキーが押せてしまう問題を修正
- Fix: ダイレクト投稿の宛先が保存されない問題を修正
+- Fix: Playのページを離れたときに、Playが正常に初期化されない問題を修正
### Server
- Enhance: エンドポイント`antennas/update`の必須項目を`antennaId`のみに
diff --git a/packages/frontend/src/pages/flash/flash.vue b/packages/frontend/src/pages/flash/flash.vue
index 4aa3ce1672..40499fde0e 100644
--- a/packages/frontend/src/pages/flash/flash.vue
+++ b/packages/frontend/src/pages/flash/flash.vue
@@ -15,11 +15,15 @@ SPDX-License-Identifier: AGPL-3.0-only
-
{{ flash.likedCount }}
-
{{ flash.likedCount }}
-
-
-
+
+
+
+
+ {{ flash.likedCount }}
+ {{ flash.likedCount }}
+
+
+
@@ -49,7 +53,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._play.editThisPage }}
-
+
@@ -94,12 +98,33 @@ function fetchFlash() {
});
}
+function share(ev: MouseEvent) {
+ if (!flash.value) return;
+
+ os.popupMenu([
+ {
+ text: i18n.ts.shareWithNote,
+ icon: 'ti ti-pencil',
+ action: shareWithNote,
+ },
+ ...(isSupportShare() ? [{
+ text: i18n.ts.share,
+ icon: 'ti ti-share',
+ action: shareWithNavigator,
+ }] : []),
+ ], ev.currentTarget ?? ev.target);
+}
+
function copyLink() {
+ if (!flash.value) return;
+
copyToClipboard(`${url}/play/${flash.value.id}`);
os.success();
}
-function share() {
+function shareWithNavigator() {
+ if (!flash.value) return;
+
navigator.share({
title: flash.value.title,
text: flash.value.summary,
@@ -108,21 +133,28 @@ function share() {
}
function shareWithNote() {
+ if (!flash.value) return;
+
os.post({
- initialText: `${flash.value.title} ${url}/play/${flash.value.id}`,
+ initialText: `${flash.value.title}\n${url}/play/${flash.value.id}`,
+ instant: true,
});
}
function like() {
+ if (!flash.value) return;
+
os.apiWithDialog('flash/like', {
flashId: flash.value.id,
}).then(() => {
- flash.value.isLiked = true;
- flash.value.likedCount++;
+ flash.value!.isLiked = true;
+ flash.value!.likedCount++;
});
}
async function unlike() {
+ if (!flash.value) return;
+
const confirm = await os.confirm({
type: 'warning',
text: i18n.ts.unlikeConfirm,
@@ -131,8 +163,8 @@ async function unlike() {
os.apiWithDialog('flash/unlike', {
flashId: flash.value.id,
}).then(() => {
- flash.value.isLiked = false;
- flash.value.likedCount--;
+ flash.value!.isLiked = false;
+ flash.value!.likedCount--;
});
}
@@ -152,6 +184,7 @@ function start() {
async function run() {
if (aiscript.value) aiscript.value.abort();
+ if (!flash.value) return;
aiscript.value = new Interpreter({
...createAiScriptEnv({
@@ -193,12 +226,17 @@ async function run() {
}
}
-onDeactivated(() => {
+function reset() {
if (aiscript.value) aiscript.value.abort();
+ started.value = false;
+}
+
+onDeactivated(() => {
+ reset();
});
onUnmounted(() => {
- if (aiscript.value) aiscript.value.abort();
+ reset();
});
const headerActions = computed(() => []);
@@ -265,11 +303,19 @@ definePageMetadata(() => ({
}
> .actions {
- display: flex;
- justify-content: center;
- gap: 12px;
margin-top: 16px;
- padding: 16px;
+
+ > .items {
+ display: flex;
+ justify-content: center;
+ gap: 12px;
+ padding: 16px;
+ border-bottom: 1px solid var(--divider);
+
+ &:last-child {
+ border-bottom: none;
+ }
+ }
}
}
}