expiresAt to scheduledAt

Signed-off-by: mattyatea <mattyacocacora0@gmail.com>
This commit is contained in:
mattyatea 2023-11-14 17:27:52 +09:00
parent c4a8cf3a73
commit 271c872c97
No known key found for this signature in database
GPG key ID: 068E54E2C33BEF9A
6 changed files with 29 additions and 18 deletions

View file

@ -0,0 +1,11 @@
export class Schedulenote21699949373507 {
name = 'Schedulenote21699949373507'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "note_schedule" RENAME COLUMN "expiresAt" TO "scheduledAt"`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "note_schedule" RENAME COLUMN "scheduledAt" TO "expiresAt"`);
}
}

View file

@ -23,5 +23,5 @@ export class MiScheduledNote {
public userId: MiUser['id']; public userId: MiUser['id'];
@Column('timestamp with time zone') @Column('timestamp with time zone')
public expiresAt: Date; public scheduledAt: Date;
} }

View file

@ -202,7 +202,7 @@ export const paramDef = {
type: 'object', type: 'object',
nullable: true, nullable: true,
properties: { properties: {
expiresAt: { type: 'integer', nullable: false }, scheduledAt: { type: 'integer', nullable: false },
}, },
}, },
}, },
@ -388,7 +388,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
throw new ApiError(meta.errors.rolePermissionDenied); throw new ApiError(meta.errors.rolePermissionDenied);
} }
if (!ps.schedule.expiresAt) { if (!ps.schedule.scheduledAt) {
throw new ApiError(meta.errors.specifyScheduleDate); throw new ApiError(meta.errors.specifyScheduleDate);
} }
@ -398,10 +398,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
id: scheduledNoteId, id: scheduledNoteId,
note: note, note: note,
userId: me.id, userId: me.id,
expiresAt: new Date(ps.schedule.expiresAt), scheduledAt: new Date(ps.schedule.scheduledAt),
}); });
const delay = new Date(ps.schedule.expiresAt).getTime() - Date.now(); const delay = new Date(ps.schedule.scheduledAt).getTime() - Date.now();
await this.queueService.ScheduleNotePostQueue.add(String(delay), { await this.queueService.ScheduleNotePostQueue.add(String(delay), {
scheduledNoteId, scheduledNoteId,
}, { }, {

View file

@ -45,7 +45,7 @@ export const meta = {
}, },
}, },
userId: { type: 'string', optional: false, nullable: false }, userId: { type: 'string', optional: false, nullable: false },
expiresAt: { type: 'string', optional: false, nullable: false }, scheduledAt: { type: 'string', optional: false, nullable: false },
}, },
}, },
}, },
@ -97,14 +97,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
isSchedule: boolean; isSchedule: boolean;
}; };
userId: string; userId: string;
expiresAt: string; scheduledAt: string;
}[] = scheduleNotes.map((item: any) => { }[] = scheduleNotes.map((item: any) => {
return { return {
...item, ...item,
note: { note: {
...item.note, ...item.note,
user: user, user: user,
createdAt: new Date(item.expiresAt), createdAt: new Date(item.scheduledAt),
isSchedule: true, isSchedule: true,
// ↓TODO: NoteのIDに予約投稿IDを入れたくない本来別ものなため // ↓TODO: NoteのIDに予約投稿IDを入れたくない本来別ものなため
id: item.id, id: item.id,

View file

@ -177,7 +177,7 @@ let poll = $ref<{
expiredAfter: string | null; expiredAfter: string | null;
} | null>(null); } | null>(null);
let schedule = $ref<{ let schedule = $ref<{
expiresAt: string | null; scheduledAt: string | null;
}| null>(null); }| null>(null);
let useCw = $ref(false); let useCw = $ref(false);
let showPreview = $ref(defaultStore.state.showPreview); let showPreview = $ref(defaultStore.state.showPreview);
@ -405,7 +405,7 @@ function toggleSchedule() {
schedule = null; schedule = null;
} else { } else {
schedule = { schedule = {
expiresAt: null, scheduledAt: null,
}; };
} }
} }
@ -775,8 +775,8 @@ async function post(ev?: MouseEvent) {
} }
} }
if (postData.schedule?.expiresAt && typeof postData.schedule.expiresAt === 'string') { if (postData.schedule?.scheduledAt && typeof postData.schedule.scheduledAt === 'string') {
postData.schedule.expiresAt = parseInt(postData.schedule.expiresAt); postData.schedule.scheduledAt = parseInt(postData.schedule.scheduledAt);
} }
let token = undefined; let token = undefined;
@ -935,7 +935,7 @@ function openOtherSettingsMenu(ev: MouseEvent) {
icon: 'ti ti-calendar-time', icon: 'ti ti-calendar-time',
indicate: (schedule != null), indicate: (schedule != null),
action: toggleSchedule, action: toggleSchedule,
} : undefined, ...(($i.policies?.canScheduleNote) ? [ null, { } : undefined, ...(($i.policies?.canScheduleNote) ? [null, {
type: 'button', type: 'button',
text: i18n.ts._schedulePost.list, text: i18n.ts._schedulePost.list,
icon: 'ti ti-calendar-event', icon: 'ti ti-calendar-event',

View file

@ -26,19 +26,19 @@ import { i18n } from '@/i18n.js';
const props = defineProps<{ const props = defineProps<{
modelValue: { modelValue: {
expiresAt: string; scheduledAt: string;
}; };
}>(); }>();
const emit = defineEmits<{ const emit = defineEmits<{
(ev: 'update:modelValue', v: { (ev: 'update:modelValue', v: {
expiresAt: string; scheduledAt: string;
}): void; }): void;
}>(); }>();
const atDate = ref(formatDateTimeString(addTime(new Date(), 1, 'day'), 'yyyy-MM-dd')); const atDate = ref(formatDateTimeString(addTime(new Date(), 1, 'day'), 'yyyy-MM-dd'));
const atTime = ref('00:00'); const atTime = ref('00:00');
if ( props.modelValue && props.modelValue.expiresAt) { if ( props.modelValue && props.modelValue.scheduledAt) {
atDate.value = atTime.value = props.modelValue.expiresAt; atDate.value = atTime.value = props.modelValue.scheduledAt;
} }
function get() { function get() {
@ -48,7 +48,7 @@ function get() {
return { return {
...( ...(
props.modelValue ? { expiresAt: calcAt() } : {} props.modelValue ? { scheduledAt: calcAt() } : {}
), ),
}; };
} }