From d979cd2c07d24270d03be29f8f1c5b6a3351798d Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 5 Aug 2025 09:15:02 +0900 Subject: [PATCH 01/15] =?UTF-8?q?fix(frontend):=20=E6=8A=95=E7=A8=BF?= =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=BC=E3=83=A0=E3=81=A7=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E3=81=AE=E3=82=A2=E3=83=83=E3=83=97=E3=83=AD?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=81=8C=E4=B8=AD=E6=AD=A2=E3=81=BE=E3=81=9F?= =?UTF-8?q?=E3=81=AF=E5=A4=B1=E6=95=97=E3=81=97=E3=81=9F=E9=9A=9B=E3=81=AE?= =?UTF-8?q?=E3=83=8F=E3=83=B3=E3=83=89=E3=83=AA=E3=83=B3=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + packages/frontend/src/components/MkPostForm.vue | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8fcb60a39..b0b23ed891 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ - Feat: ページのタブバーを下部に表示できるように - Enhance: コントロールパネルを検索できるように - Enhance: トルコ語 (tr-TR) に対応 +- Fix: 投稿フォームでファイルのアップロードが中止または失敗した際のハンドリングを修正 - Fix: 一部の設定検索結果が存在しないパスになる問題を修正 (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1171) - Fix: テーマエディタが動作しない問題を修正 diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index 174a73e0fd..f1fa870991 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -907,6 +907,11 @@ async function post(ev?: MouseEvent) { if (uploader.items.value.some(x => x.uploaded == null)) { await uploadFiles(); + + // アップロード失敗したものがあったら中止 + if (uploader.items.value.some(x => x.uploaded == null)) { + return; + } } let postData = { From b4a0fdfaa14ea67e78be5ba1488ccbfd6edaaf73 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 5 Aug 2025 09:35:42 +0900 Subject: [PATCH 02/15] fix type errors --- packages/frontend/src/pages/timeline.vue | 25 ++++++------------------ 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue index b783f7ee0b..b8c3ebadd9 100644 --- a/packages/frontend/src/pages/timeline.vue +++ b/packages/frontend/src/pages/timeline.vue @@ -107,7 +107,7 @@ const withSensitive = computed({ async function chooseList(ev: MouseEvent): Promise { const lists = await userListsCache.fetch(); - const items: MenuItem[] = [ + const items: (MenuItem | undefined)[] = [ ...lists.map(list => ({ type: 'link' as const, text: list.name, @@ -121,12 +121,12 @@ async function chooseList(ev: MouseEvent): Promise { to: '/my/lists', }, ]; - os.popupMenu(items, ev.currentTarget ?? ev.target); + os.popupMenu(items.filter(i => i != null), ev.currentTarget ?? ev.target); } async function chooseAntenna(ev: MouseEvent): Promise { const antennas = await antennasCache.fetch(); - const items: MenuItem[] = [ + const items: (MenuItem | undefined)[] = [ ...antennas.map(antenna => ({ type: 'link' as const, text: antenna.name, @@ -141,12 +141,12 @@ async function chooseAntenna(ev: MouseEvent): Promise { to: '/my/antennas', }, ]; - os.popupMenu(items, ev.currentTarget ?? ev.target); + os.popupMenu(items.filter(i => i != null), ev.currentTarget ?? ev.target); } async function chooseChannel(ev: MouseEvent): Promise { const channels = await favoritedChannelsCache.fetch(); - const items: MenuItem[] = [ + const items: (MenuItem | undefined)[] = [ ...channels.map(channel => { const lastReadedAt = miLocalStorage.getItemAsJson(`channelLastReadedAt:${channel.id}`) ?? null; const hasUnreadNote = (lastReadedAt && channel.lastNotedAt) ? Date.parse(channel.lastNotedAt) > lastReadedAt : !!(!lastReadedAt && channel.lastNotedAt); @@ -166,7 +166,7 @@ async function chooseChannel(ev: MouseEvent): Promise { to: '/channels', }, ]; - os.popupMenu(items, ev.currentTarget ?? ev.target); + os.popupMenu(items.filter(i => i != null), ev.currentTarget ?? ev.target); } function saveSrc(newSrc: TimelinePageSrc): void { @@ -190,19 +190,6 @@ function saveTlFilter(key: keyof typeof store.s.tl.filter, newValue: boolean) { } } -async function timetravel(): Promise { - const { canceled, result: date } = await os.inputDate({ - title: i18n.ts.date, - }); - if (canceled) return; - - tlComponent.value.timetravel(date); -} - -function focus(): void { - tlComponent.value.focus(); -} - function switchTlIfNeeded() { if (isBasicTimeline(src.value) && !isAvailableBasicTimeline(src.value)) { src.value = availableBasicTimelines()[0]; From 9931fff35ba13f1ed5d7d949d29e0da5e29a050f Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 5 Aug 2025 09:44:59 +0900 Subject: [PATCH 03/15] =?UTF-8?q?=F0=9F=8E=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/global/MkPageHeader.vue | 3 ++- packages/frontend/src/pages/timeline.vue | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/components/global/MkPageHeader.vue b/packages/frontend/src/components/global/MkPageHeader.vue index 542c3d8d12..2f4de840db 100644 --- a/packages/frontend/src/components/global/MkPageHeader.vue +++ b/packages/frontend/src/components/global/MkPageHeader.vue @@ -52,6 +52,7 @@ export type PageHeaderProps = { actions?: PageHeaderItem[] | null; thin?: boolean; hideTitle?: boolean; + canOmitTitle?: boolean; displayMyAvatar?: boolean; }; @@ -77,7 +78,7 @@ const emit = defineEmits<{ const injectedPageMetadata = inject(DI.pageMetadata, ref(null)); const pageMetadata = computed(() => props.overridePageMetadata ?? injectedPageMetadata.value); -const hideTitle = computed(() => inject('shouldOmitHeaderTitle', false) || props.hideTitle); +const hideTitle = computed(() => inject('shouldOmitHeaderTitle', false) || props.hideTitle || (props.canOmitTitle && props.tabs.length > 0)); const thin_ = props.thin || inject('shouldHeaderThin', false); const el = useTemplateRef('el'); diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue index b8c3ebadd9..3fe48b4d72 100644 --- a/packages/frontend/src/pages/timeline.vue +++ b/packages/frontend/src/pages/timeline.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only -->