import { action, computed } from "@ember/object";
import { gte, reads } from "@ember/object/computed";
import { classNames } from "@ember-decorators/component";
import { setting } from "discourse/lib/computed";
import DiscourseURL from "discourse/lib/url";
import I18n from "discourse-i18n";
import ComboBoxComponent from "select-kit/components/combo-box";
import {
  pluginApiIdentifiers,
  selectKitOptions,
} from "select-kit/components/select-kit";

@classNames("group-dropdown")
@selectKitOptions({
  caretDownIcon: "caret-right",
  caretUpIcon: "caret-down",
  filterable: "hasManyGroups",
})
@pluginApiIdentifiers("group-dropdown")
export default class GroupDropdown extends ComboBoxComponent {
  @reads("groupsWithShortcut") content;
  @gte("content.length", 10) hasManyGroups;
  @setting("enable_group_directory") enableGroupDirectory;

  valueProperty = null;
  nameProperty = null;

  @computed("groups.[]")
  get groupsWithShortcut() {
    const shortcuts = [];

    if (this.enableGroupDirectory || this.get("currentUser.staff")) {
      shortcuts.push(I18n.t("groups.index.all"));
    }

    return shortcuts.concat(this.groups);
  }

  @action
  onChange(groupName) {
    if ((this.groups || []).includes(groupName)) {
      DiscourseURL.routeToUrl(`/g/${groupName}`);
    } else {
      DiscourseURL.routeToUrl(`/g`);
    }
  }
}