@aioha/react-provider
Version:
React provider for Aioha
35 lines • 1.29 kB
JavaScript
import React, { createContext, useContext, useEffect, useState } from 'react';
export const AiohaContext = createContext(undefined);
export const AiohaProvider = ({ aioha, children }) => {
const [user, setUser] = useState(aioha.getCurrentUser());
const [provider, setProvider] = useState(aioha.getCurrentProvider());
const [otherUsers, setOtherUsers] = useState(aioha.getOtherLogins());
const update = () => {
setUser(aioha.getCurrentUser());
setProvider(aioha.getCurrentProvider());
setOtherUsers(aioha.getOtherLogins());
};
useEffect(() => {
aioha.on('connect', update);
aioha.on('disconnect', update);
aioha.on('account_changed', update);
return () => {
aioha.off('connect', update);
aioha.off('disconnect', update);
aioha.off('account_changed', update);
};
}, []);
return (React.createElement(AiohaContext.Provider, { value: {
aioha,
user,
provider,
otherUsers
} }, children));
};
export const useAioha = () => {
const ctx = useContext(AiohaContext);
if (!ctx)
throw new Error('useAioha must be used within an AiohaProvider');
return ctx;
};
//# sourceMappingURL=index.js.map