nostr-hooks
Version:
React hooks for developing Nostr clients
45 lines • 1.54 kB
JavaScript
import { useEffect, useState } from 'react';
import { useNdk } from '../use-ndk';
/**
* Custom hook that retrieves the active user using the NDK instance and the signer.
*
* @param fetchProfile - Optional boolean indicating whether to fetch profile for the active user. Default is false.
* @returns An object containing the active user, null if there is no user, or undefined if the user is being fetched.
*/
export const useActiveUser = (fetchProfile) => {
const [activeUser, setActiveUser] = useState(undefined);
const [status, setStatus] = useState('loading');
const { ndk } = useNdk();
useEffect(() => {
setStatus('loading');
if (!ndk) {
setStatus('no-user');
setActiveUser(null);
return;
}
const { signer } = ndk;
if (!signer) {
setStatus('no-user');
setActiveUser(null);
return;
}
signer.user().then((user) => {
if (!user) {
setStatus('no-user');
setActiveUser(null);
return;
}
if (!fetchProfile) {
setStatus('success');
setActiveUser(user);
return;
}
user.fetchProfile().finally(() => {
setStatus('success');
setActiveUser(user);
});
});
}, [ndk, fetchProfile, setStatus, setActiveUser, ndk?.signer]);
return { activeUser, status };
};
//# sourceMappingURL=index.js.map