From 4a698165cccf1960609a28a06dc9c5b92cd2d420 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 24 Sep 2025 17:53:36 +0900 Subject: [PATCH] wip --- locales/index.d.ts | 4 + locales/ja-JP.yml | 1 + .../server/api/endpoints/notes/drafts/list.ts | 7 + .../src/components/MkNoteDraftsDialog.vue | 243 +++++++++++------- packages/misskey-js/src/autogen/types.ts | 1 + 5 files changed, 158 insertions(+), 98 deletions(-) diff --git a/locales/index.d.ts b/locales/index.d.ts index fa5275878f..f4064c542d 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -5569,6 +5569,10 @@ export interface Locale extends ILocale { * 予約 */ "schedule": string; + /** + * 予約 + */ + "scheduled": string; "_compression": { "_quality": { /** diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index d8fa726adb..c52128534a 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1387,6 +1387,7 @@ createUserSpecifiedNote: "ユーザー指定ノートを作成" schedulePost: "投稿を予約" scheduleToPostOnX: "{x}に投稿を予約します" schedule: "予約" +scheduled: "予約" _compression: _quality: diff --git a/packages/backend/src/server/api/endpoints/notes/drafts/list.ts b/packages/backend/src/server/api/endpoints/notes/drafts/list.ts index f24f9b8fb2..0774f09228 100644 --- a/packages/backend/src/server/api/endpoints/notes/drafts/list.ts +++ b/packages/backend/src/server/api/endpoints/notes/drafts/list.ts @@ -41,6 +41,7 @@ export const paramDef = { untilId: { type: 'string', format: 'misskey:id' }, sinceDate: { type: 'integer' }, untilDate: { type: 'integer' }, + scheduled: { type: 'boolean', nullable: true }, }, required: [], } as const; @@ -58,6 +59,12 @@ export default class extends Endpoint { // eslint- const query = this.queryService.makePaginationQuery(this.noteDraftsRepository.createQueryBuilder('drafts'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) .andWhere('drafts.userId = :meId', { meId: me.id }); + if (ps.scheduled === true) { + query.andWhere('drafts.isActuallyScheduled = true'); + } else if (ps.scheduled === false) { + query.andWhere('drafts.isActuallyScheduled = false'); + } + const drafts = await query .limit(ps.limit) .getMany(); diff --git a/packages/frontend/src/components/MkNoteDraftsDialog.vue b/packages/frontend/src/components/MkNoteDraftsDialog.vue index 304a0f55ac..14cff56c0d 100644 --- a/packages/frontend/src/components/MkNoteDraftsDialog.vue +++ b/packages/frontend/src/components/MkNoteDraftsDialog.vue @@ -15,110 +15,133 @@ SPDX-License-Identifier: AGPL-3.0-only @esc="cancel()" > -
- - - + +
+ @@ -134,6 +157,11 @@ import * as os from '@/os.js'; import { $i } from '@/i.js'; import { misskeyApi } from '@/utility/misskey-api'; import { Paginator } from '@/utility/paginator.js'; +import MkTabs from '@/components/MkTabs.vue'; + +const props = defineProps<{ + scheduled?: boolean; +}>(); const emit = defineEmits<{ (ev: 'restore', draft: Misskey.entities.NoteDraft): void; @@ -141,8 +169,20 @@ const emit = defineEmits<{ (ev: 'closed'): void; }>(); -const paginator = markRaw(new Paginator('notes/drafts/list', { +const tab = ref<'drafts' | 'scheduled'>(props.scheduled ? 'scheduled' : 'drafts'); + +const draftsPaginator = markRaw(new Paginator('notes/drafts/list', { limit: 10, + params: { + scheduled: false, + }, +})); + +const scheduledPaginator = markRaw(new Paginator('notes/drafts/list', { + limit: 10, + params: { + scheduled: true, + }, })); const currentDraftsCount = ref(0); @@ -171,7 +211,7 @@ async function deleteDraft(draft: Misskey.entities.NoteDraft) { if (canceled) return; os.apiWithDialog('notes/drafts/delete', { draftId: draft.id }).then(() => { - paginator.reload(); + draftsPaginator.reload(); }); } @@ -229,4 +269,11 @@ async function deleteDraft(draft: Misskey.entities.NoteDraft) { padding-top: 16px; border-top: solid 1px var(--MI_THEME-divider); } + +.tabs { + background: color(from var(--MI_THEME-bg) srgb r g b / 0.75); + -webkit-backdrop-filter: var(--MI-blur, blur(15px)); + backdrop-filter: var(--MI-blur, blur(15px)); + border-bottom: solid 0.5px var(--MI_THEME-divider); +} diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts index d187b56090..0431ee4872 100644 --- a/packages/misskey-js/src/autogen/types.ts +++ b/packages/misskey-js/src/autogen/types.ts @@ -29354,6 +29354,7 @@ export interface operations { untilId?: string; sinceDate?: number; untilDate?: number; + scheduled?: boolean | null; }; }; };