UNPKG

onairos

Version:

The Onairos Library is a collection of functions that enable Applications to connect and communicate data with Onairos Identities via User Authorization. Integration for developers is designed to be seamless, simple and effective for all applications

87 lines (84 loc) 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useAccountInfo = void 0; var _react = require("react"); const API_URL = process.env.REACT_APP_API_URL || 'https://api2.onairos.uk'; const useAccountInfo = (NoAccount, NoModel) => { const [accountInfo, setAccountInfo] = (0, _react.useState)(null); const [activeModels, setActiveModels] = (0, _react.useState)([]); const [avatar, setAvatar] = (0, _react.useState)(false); const [traits, setTraits] = (0, _react.useState)(false); const [loading, setLoading] = (0, _react.useState)(false); const [error, setError] = (0, _react.useState)(null); const fetchAccountInfo = (0, _react.useCallback)(async function (identifier) { let isEmail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; setLoading(true); setError(null); try { const endpoint = isEmail ? '/getAccountInfo/email' : '/getAccountInfo'; const response = await fetch(`${API_URL}${endpoint}`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${localStorage.getItem('onairosToken')}` }, body: JSON.stringify({ identifier: identifier }) }); if (!response.ok) { throw new Error('Failed to fetch account info'); } const data = await response.json(); if (data.AccountInfo === "No Account Found") { if (NoAccount?.current) NoAccount.current = true; setAccountInfo(null); return null; } // Update states setAccountInfo(data.AccountInfo); if (data.AccountInfo.models) { setActiveModels(data.AccountInfo.models); } else if (NoModel?.current) { NoModel.current = true; } if (data.AccountInfo.avatar) { setAvatar(true); } if (data.AccountInfo.traits) { setTraits(true); } return data.AccountInfo; } catch (error) { setError(error.message); console.error('Error fetching account info:', error); throw error; } finally { setLoading(false); } }, [NoAccount, NoModel]); // Clear account info const clearAccountInfo = (0, _react.useCallback)(() => { setAccountInfo(null); setActiveModels([]); setAvatar(false); setTraits(false); setError(null); }, []); return { accountInfo, activeModels, setActiveModels, avatar, setAvatar, traits, setTraits, loading, error, fetchAccountInfo, clearAccountInfo }; }; exports.useAccountInfo = useAccountInfo;