mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { useAccount } from '@plebbit/plebbit-react-hooks';
|
|
import useAnonModeStore from '../stores/use-anon-mode-store';
|
|
|
|
const useAnonMode = (postCid?: string) => {
|
|
const { anonMode, threadSigners, setThreadSigner, setAddressSigner, getAddressSigner } = useAnonModeStore((state) => ({
|
|
anonMode: state.anonMode,
|
|
threadSigners: state.threadSigners,
|
|
setThreadSigner: state.setThreadSigner,
|
|
setAddressSigner: state.setAddressSigner,
|
|
getAddressSigner: state.getAddressSigner,
|
|
}));
|
|
|
|
const threadSigner = postCid ? threadSigners[postCid] : undefined;
|
|
|
|
const account = useAccount();
|
|
|
|
const getNewSigner = async () => {
|
|
if (anonMode) {
|
|
if (!postCid || !threadSigner) {
|
|
try {
|
|
const signer = await account?.plebbit.createSigner();
|
|
if (signer) {
|
|
if (postCid) {
|
|
setThreadSigner(postCid, signer);
|
|
} else {
|
|
setAddressSigner(signer);
|
|
}
|
|
}
|
|
return signer;
|
|
} catch (error) {
|
|
console.error('Failed to create anonymous signer:', error);
|
|
}
|
|
} else {
|
|
try {
|
|
const signer = await account?.plebbit.createSigner({ type: 'ed25519', privateKey: threadSigner?.privateKey });
|
|
return signer;
|
|
} catch (error) {
|
|
console.error('Failed to retrieve anonymous signer:', error);
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
|
|
const getExistingSigner = (address: string) => {
|
|
return getAddressSigner(address);
|
|
};
|
|
|
|
return { anonMode, getNewSigner, getExistingSigner };
|
|
};
|
|
|
|
export default useAnonMode;
|