@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
50 lines • 1.95 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = require("react");
const useAxiosPrivate_1 = __importDefault(require("../../config/useAxiosPrivate"));
const useProject_1 = __importDefault(require("../projects/useProject"));
function useOAuthIdentities() {
const { projectId } = (0, useProject_1.default)();
const axios = (0, useAxiosPrivate_1.default)();
const [identities, setIdentities] = (0, react_1.useState)([]);
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
const [error, setError] = (0, react_1.useState)(null);
const fetchIdentities = (0, react_1.useCallback)(async () => {
if (!projectId)
return;
setIsLoading(true);
setError(null);
try {
const response = await axios.get(`/${projectId}/oauth/identities`);
setIdentities(response.data.identities);
}
catch (err) {
setError(err.response?.data?.error || err.message);
}
finally {
setIsLoading(false);
}
}, [projectId, axios]);
const unlinkIdentity = (0, react_1.useCallback)(async ({ identityId }) => {
if (!projectId)
return;
setIsLoading(true);
setError(null);
try {
await axios.delete(`/${projectId}/oauth/identities/${identityId}`);
setIdentities((prev) => prev.filter((i) => i.id !== identityId));
}
catch (err) {
setError(err.response?.data?.error || err.message);
}
finally {
setIsLoading(false);
}
}, [projectId, axios]);
return { identities, fetchIdentities, unlinkIdentity, isLoading, error };
}
exports.default = useOAuthIdentities;
//# sourceMappingURL=useOAuthIdentities.js.map