import { NuxtConfig } from '@nuxt/types/config'
import { ItemMenu } from '~/types/interfaces'

/**
 * @category composables/layout/Menus
 * @class BaseMenu
 * Classe abstraite pour chacun des menu
 */
class BaseMenu {
  protected $config: NuxtConfig;

  /**
   * @constructor
   * Initialisation des services issues du context
   */
  constructor ($config: NuxtConfig) {
    this.$config = $config
  }

  /**
   * Construit un ItemMenu
   * @param {string} icon
   * @param {string} title titre qui sera traduit
   * @param {string} link lien
   * @param {boolean} isOldLink est-ce un lien renvoyant vers l'ancien admin?
   * @param {Array<ItemMenu>} children Tableau d'ItemMenu représentant les sous menu du menu principal
   * @param {boolean} isExternalLink est-ce un lien renvoyant vers l'extérieur?
   * @param {Array<ItemMenu>} actions Tableau d'ItemMenu représentant les actions devant apparaitre en bas du menu
   * @return {ItemMenu}
   */
  constructMenu (title: string, icon?: string, link?: string, isOldLink?: boolean, children?: Array<ItemMenu>, isExternalLink?: boolean): ItemMenu {
    return children ? {
      title,
      icon,
      children
    } : {
      icon,
      title,
      to: `${isExternalLink || !isOldLink ? '' : this.$config.baseURL_adminLegacy}${link}`,
      isExternalLink: isExternalLink || isOldLink
    }
  }

  getMenu (): ItemMenu | null {
    return null
  }

  getHeaderMenu (): ItemMenu | null {
    return null
  }
}
export default BaseMenu
