import { useUserStore } from '@/stores/modules/user';
import { MenuType } from '@/enum/app';
function checkAction(el: any, action: any) {
  if (action.value && typeof action.value === 'string') {
    const userStore = useUserStore();
    const permissions = userStore.getPermissions;

    action = action.value.replace('@', '.').toLowerCase();
	
    const hasAction = permissions?.some(permission => {
      if (permission.type === MenuType.Button_Type) {
        const a: string =
          permission.module +
          '.' +
          permission.permission_mark.replace('@', '.');
        return action === a.toLowerCase();
      }
    });

    if (!hasAction) {
      // el.style.display = 'none'
      el.parentNode && el.parentNode.removeChild(el);
    }
  } else {
    throw new Error(
      `need action! Like v-action="module.controller.action" || v-action="module@controller@action" `
    );
  }
}

export default {
  mounted(el: any, binding: any) {
    checkAction(el, binding);
  },

  updated(el: any, binding: any) {
    checkAction(el, binding);
  }
};
