import { INSTAGRAM_REQUESTED_SCOPES } from '@/Utils/Other/Constant';

const normalizePermissions = (permissions: unknown): string[] => {
    if (Array.isArray(permissions)) {
        return permissions.map((scope) => String(scope).trim()).filter(Boolean);
    }

    if (typeof permissions === 'string') {
        return permissions.split(',').map((scope) => scope.trim()).filter(Boolean);
    }

    return [];
};

/**
 * Reads granted Instagram scopes from the short-lived token response
 * and compares them against the scopes we request in the auth URL.
 */
export const getInstagramPermissionStatus = (authResponseData: any) => {
    const rawPermissions = authResponseData?.permissions;

    const hasPermissionData = rawPermissions !== undefined && rawPermissions !== null;
    const granted = normalizePermissions(rawPermissions);
    const missing_permissions = INSTAGRAM_REQUESTED_SCOPES.filter(
        (scope) => !granted.includes(scope)
    );

    return {
        hasPermissionData,
        missing_permissions,
    };
};
