// SPDX-FileCopyrightText: 2021 Johannes Loher
//
// SPDX-License-Identifier: MIT

import { getGame } from "../utils/utils";

/**
 * @typedef {object} DS4ChatMessageFlags
 * @property {Record<string, string | number | null>} [flavorData]  Data to use for localizing the flavor of the chat message
 */

/**
 * @typedef {Record<string, unknown>} ChatMessageFlags
 * @property {DS4ChatMessageFlags} [ds4]    Flags for DS4
 */

export class DS4ChatMessage extends ChatMessage {
  prepareData() {
    super.prepareData();
    if (this.flavor) {
      const game = getGame();
      const flavorData = Object.fromEntries(
        Object.entries(this.flags.ds4?.flavorData ?? {}).map(([key, value]) => [
          key,
          typeof value === "string" ? game.i18n.localize(value) : value,
        ]),
      );
      this.flavor = game.i18n.format(this.flavor, flavorData);
    }
  }
}
