@copilotkit/react-core
Version:
<div align="center"> <a href="https://copilotkit.ai" target="_blank"> <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/banner.png" alt="CopilotKit Logo"> </a>
59 lines (57 loc) • 1.86 kB
JavaScript
import {
useCopilotAction
} from "./chunk-NY3BUYYZ.mjs";
import {
useCopilotContext
} from "./chunk-PTSWFERP.mjs";
import {
__spreadProps,
__spreadValues
} from "./chunk-SKC7AJIV.mjs";
// src/hooks/use-copilot-authenticated-action.ts
import { Fragment, useCallback, useRef } from "react";
import React from "react";
function useCopilotAuthenticatedAction_c(action, dependencies) {
const { authConfig_c, authStates_c, setAuthStates_c } = useCopilotContext();
const pendingActionRef = useRef(null);
const executeAction = useCallback(
(props) => {
if (typeof action.render === "function") {
return action.render(props);
}
return action.render || React.createElement(Fragment);
},
[action]
);
const wrappedRender = useCallback(
(props) => {
const isAuthenticated = Object.values(authStates_c || {}).some(
(state) => state.status === "authenticated"
);
if (!isAuthenticated) {
pendingActionRef.current = props;
return (authConfig_c == null ? void 0 : authConfig_c.SignInComponent) ? React.createElement(authConfig_c.SignInComponent, {
onSignInComplete: (authState) => {
setAuthStates_c == null ? void 0 : setAuthStates_c((prev) => __spreadProps(__spreadValues({}, prev), { [action.name]: authState }));
if (pendingActionRef.current) {
executeAction(pendingActionRef.current);
pendingActionRef.current = null;
}
}
}) : React.createElement(Fragment);
}
return executeAction(props);
},
[action, authStates_c, setAuthStates_c]
);
useCopilotAction(
__spreadProps(__spreadValues({}, action), {
render: wrappedRender
}),
dependencies
);
}
export {
useCopilotAuthenticatedAction_c
};
//# sourceMappingURL=chunk-YI7LPACV.mjs.map