mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 05:25:40 +09:00
45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import type {ScheduledMessage, ScheduledMessagePayload} from '@app/features/messaging/models/ScheduledMessage';
|
|
import {makeAutoObservable} from 'mobx';
|
|
|
|
interface ScheduledMessageEditState {
|
|
scheduledMessageId: string;
|
|
channelId: string;
|
|
payload: ScheduledMessagePayload;
|
|
scheduledLocalAt: string;
|
|
timezone: string;
|
|
}
|
|
|
|
class ScheduledMessageEditor {
|
|
private state: ScheduledMessageEditState | null = null;
|
|
|
|
constructor() {
|
|
makeAutoObservable(this, {}, {autoBind: true});
|
|
}
|
|
|
|
startEditing(record: ScheduledMessage): void {
|
|
this.state = {
|
|
scheduledMessageId: record.id,
|
|
channelId: record.channelId,
|
|
payload: record.payload,
|
|
scheduledLocalAt: record.scheduledLocalAt,
|
|
timezone: record.timezone,
|
|
};
|
|
}
|
|
|
|
stopEditing(): void {
|
|
this.state = null;
|
|
}
|
|
|
|
isEditingChannel(channelId: string): boolean {
|
|
return this.state?.channelId === channelId;
|
|
}
|
|
|
|
getEditingState(): ScheduledMessageEditState | null {
|
|
return this.state;
|
|
}
|
|
}
|
|
|
|
export default new ScheduledMessageEditor();
|