diff options
| author | Marie <github@yuugi.dev> | 2024-12-15 22:41:16 +0100 |
|---|---|---|
| committer | Marie <github@yuugi.dev> | 2024-12-15 22:41:16 +0100 |
| commit | e50ff9db6ae91e1ad34bc50935300515841bf719 (patch) | |
| tree | 137a6d0ec494ca1d1331fc7c5b0c8bf46c235e0c /packages/backend/src/server/api | |
| parent | merge: upstream changes for 2024.11 (!742) (diff) | |
| download | sharkey-e50ff9db6ae91e1ad34bc50935300515841bf719.tar.gz sharkey-e50ff9db6ae91e1ad34bc50935300515841bf719.tar.bz2 sharkey-e50ff9db6ae91e1ad34bc50935300515841bf719.zip | |
upd: make schedule time work cross timezones
Diffstat (limited to 'packages/backend/src/server/api')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/schedule/create.ts | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/schedule/create.ts b/packages/backend/src/server/api/endpoints/notes/schedule/create.ts index 7d20b6b82a..c6032fbdae 100644 --- a/packages/backend/src/server/api/endpoints/notes/schedule/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/schedule/create.ts @@ -6,6 +6,7 @@ import ms from 'ms'; import { In } from 'typeorm'; import { Inject, Injectable } from '@nestjs/common'; +import moment from 'moment'; import { isPureRenote } from '@/misc/is-renote.js'; import type { MiUser } from '@/models/User.js'; import type { @@ -307,7 +308,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- if (ps.poll) { let scheduleNote_scheduledAt = Date.now(); if (typeof ps.scheduleNote.scheduledAt === 'number') { - scheduleNote_scheduledAt = ps.scheduleNote.scheduledAt; + scheduleNote_scheduledAt = moment.utc(ps.scheduleNote.scheduledAt).local().valueOf(); } if (typeof ps.poll.expiresAt === 'number') { if (ps.poll.expiresAt < scheduleNote_scheduledAt) { @@ -318,7 +319,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- } } if (typeof ps.scheduleNote.scheduledAt === 'number') { - if (ps.scheduleNote.scheduledAt < Date.now()) { + if (moment.utc(ps.scheduleNote.scheduledAt).local().valueOf() < Date.now()) { throw new ApiError(meta.errors.cannotCreateAlreadyExpiredSchedule); } } else { @@ -347,14 +348,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- if (ps.scheduleNote.scheduledAt) { me.token = null; const noteId = this.idService.gen(new Date().getTime()); + const schedNoteLocalTime = moment.utc(ps.scheduleNote.scheduledAt).local().valueOf(); await this.noteScheduleRepository.insert({ id: noteId, note: note, userId: me.id, - scheduledAt: new Date(ps.scheduleNote.scheduledAt), + scheduledAt: new Date(schedNoteLocalTime), }); - const delay = new Date(ps.scheduleNote.scheduledAt).getTime() - Date.now(); + const delay = new Date(schedNoteLocalTime).getTime() - Date.now(); await this.queueService.ScheduleNotePostQueue.add(String(delay), { scheduleNoteId: noteId, }, { |