| import { getContext, setContext } from 'svelte'; | |
| export interface MessageEditState { | |
| readonly isEditing: boolean; | |
| readonly editedContent: string; | |
| readonly editedExtras: DatabaseMessageExtra[]; | |
| readonly editedUploadedFiles: ChatUploadedFile[]; | |
| readonly originalContent: string; | |
| readonly originalExtras: DatabaseMessageExtra[]; | |
| readonly showSaveOnlyOption: boolean; | |
| } | |
| export interface MessageEditActions { | |
| setContent: (content: string) => void; | |
| setExtras: (extras: DatabaseMessageExtra[]) => void; | |
| setUploadedFiles: (files: ChatUploadedFile[]) => void; | |
| save: () => void; | |
| saveOnly: () => void; | |
| cancel: () => void; | |
| startEdit: () => void; | |
| } | |
| export type MessageEditContext = MessageEditState & MessageEditActions; | |
| const MESSAGE_EDIT_KEY = Symbol.for('chat-message-edit'); | |
| /** | |
| * Sets the message edit context. Call this in the parent component (ChatMessage.svelte). | |
| */ | |
| export function setMessageEditContext(ctx: MessageEditContext): MessageEditContext { | |
| return setContext(MESSAGE_EDIT_KEY, ctx); | |
| } | |
| /** | |
| * Gets the message edit context. Call this in child components. | |
| */ | |
| export function getMessageEditContext(): MessageEditContext { | |
| return getContext(MESSAGE_EDIT_KEY); | |
| } | |