Files
fluxer/fluxer_app/src/features/messaging/state/ScheduledMessageEditor.ts
T

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();