export type Drafts = { [key: string]: string };

export type DraftAction =
    | { type: undefined }
    | {
          type: "SET_DRAFT";
          channel: string;
          content: string;
      }
    | {
          type: "CLEAR_DRAFT";
          channel: string;
      }
    | {
          type: "RESET";
      };

export function drafts(state: Drafts = {}, action: DraftAction): Drafts {
    switch (action.type) {
        case "SET_DRAFT":
            return {
                ...state,
                [action.channel]: action.content,
            };
        case "CLEAR_DRAFT": {
            // eslint-disable-next-line @typescript-eslint/no-unused-vars
            const { [action.channel]: _, ...newState } = state;
            return newState;
        }
        case "RESET":
            return {};
        default:
            return state;
    }
}
