@keycloakify/keycloak-admin-ui
Version:
<p align="center"> <img src="https://github.com/user-attachments/assets/a6aaebbd-8f59-474d-9827-c282f4527aca"> </p> <p align="center"> <i>Repackaged Keycloak Admin UI</i> <br> <br> <a href="https://github.com/keycloakify/keycloak-adm
59 lines (46 loc) • 1.35 kB
text/typescript
/* eslint-disable */
// @ts-nocheck
import { useState, useEffect } from "react";
/** A 'plain' object version of the permission status. */
export type PlainPermissionStatus = {
readonly name: string;
readonly state: PermissionState;
};
export default function useQueryPermission(
name: PermissionName,
): PlainPermissionStatus | null {
const [status, setStatus] = useState<PermissionStatus | null>(null);
const [plainStatus, setPlainStatus] = useState<PlainPermissionStatus | null>(
null,
);
function updatePlainStatus(newStatus: PermissionStatus) {
setPlainStatus({
name: newStatus.name,
state: newStatus.state,
});
}
// Query the permission status when the name changes.
useEffect(() => {
setStatus(null);
setPlainStatus(null);
navigator.permissions.query({ name }).then((newStatus) => {
setStatus(newStatus);
updatePlainStatus(newStatus);
});
}, [name]);
// Update the 'plain' status when the permission status changes.
useEffect(() => {
if (!status) {
return;
}
function onStatusChange() {
if (!status) {
return;
}
updatePlainStatus(status);
}
status.addEventListener("change", onStatusChange);
return () => status.removeEventListener("change", onStatusChange);
}, [status]);
return plainStatus;
}