import UserChooserComponent from "select-kit/components/user-chooser";

export default UserChooserComponent.extend({
  pluginApiIdentifiers: ["email-group-user-chooser"],
  classNames: ["email-group-user-chooser"],
  classNameBindings: ["selectKit.options.fullWidthWrap:full-width-wrap"],
  valueProperty: "id",
  nameProperty: "name",

  modifyComponentForRow() {
    return "email-group-user-chooser-row";
  },

  selectKitOptions: {
    headerComponent: "email-group-user-chooser-header",
    filterComponent: "email-group-user-chooser-filter",
    fullWidthWrap: false,
    autoWrap: false,
  },

  search() {
    const superPromise = this._super(...arguments);
    if (!superPromise) {
      return;
    }
    return superPromise.then((results) => {
      if (!results || results.length === 0) {
        return;
      }
      return results.map((item) => {
        const reconstructed = {};
        if (item.username) {
          reconstructed.id = item.username;
          if (item.username.includes("@")) {
            reconstructed.isEmail = true;
          } else {
            reconstructed.isUser = true;
            reconstructed.name = item.name;
          }
        } else if (item.name) {
          reconstructed.id = item.name;
          reconstructed.name = item.full_name;
          reconstructed.isGroup = true;
        }
        return Object.assign({}, item, reconstructed);
      });
    });
  },
});
