import { useContext } from "react";
import { useParams } from "react-router-dom";
import AuthContext from "../context/auth-context";
import useRole from "./useRole";

export function useParsedRules(applicationOverride?: string, serviceOverride?: string) {
    const params = useParams();
    const { currentUser } = useContext(AuthContext);
    const activeRole = useRole();

    // Fall back to route params if no explicit module is passed in (old behavior preserved)
    const application = applicationOverride ?? params.application;
    const service = serviceOverride ?? params.service;

    // @ts-ignore
    const rawRules = currentUser?.permissions?.[activeRole]?.[`${application}.${service}`]?.rules ?? [];

    const rules = Array.isArray(rawRules) ? rawRules.filter(r => typeof r === "string") : [];

    const parsedRules: Record<string, boolean> = {};
    rules.forEach(rule => {
        // @ts-ignore
        const [key, value] = rule.split(":");
        if (key) parsedRules[key] = value === "true";
    });

    return parsedRules;
}
