mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
fix(anon mode): refreshing page could generate a new anon address for thread
This commit is contained in:
+20
-25
@@ -1,47 +1,42 @@
|
||||
import { useAccount } from '@plebbit/plebbit-react-hooks';
|
||||
import useAnonModeStore from '../stores/use-anon-mode-store';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { useCallback } from 'react';
|
||||
|
||||
const useAnonMode = (postCid?: string) => {
|
||||
const { anonMode, threadSigners, setThreadSigner, setAddressSigner, getAddressSigner } = useAnonModeStore((state) => ({
|
||||
const { anonMode, getThreadSigner, setThreadSigner, setAddressSigner, getAddressSigner } = useAnonModeStore((state) => ({
|
||||
anonMode: state.anonMode,
|
||||
threadSigners: state.threadSigners,
|
||||
getThreadSigner: state.getThreadSigner,
|
||||
setThreadSigner: state.setThreadSigner,
|
||||
setAddressSigner: state.setAddressSigner,
|
||||
getAddressSigner: state.getAddressSigner,
|
||||
}));
|
||||
|
||||
const threadSigner = useMemo(() => (postCid ? threadSigners[postCid] : undefined), [postCid, threadSigners]);
|
||||
|
||||
const account = useAccount();
|
||||
|
||||
const getNewSigner = useCallback(async () => {
|
||||
if (anonMode) {
|
||||
if (!postCid || !threadSigner) {
|
||||
try {
|
||||
const signer = await account?.plebbit.createSigner();
|
||||
if (signer) {
|
||||
if (postCid) {
|
||||
setThreadSigner(postCid, signer);
|
||||
} else {
|
||||
setAddressSigner(signer);
|
||||
}
|
||||
if (postCid) {
|
||||
const existingSigner = getThreadSigner(postCid);
|
||||
if (existingSigner) {
|
||||
return existingSigner;
|
||||
}
|
||||
}
|
||||
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 signer;
|
||||
} catch (error) {
|
||||
console.error('Failed to create anonymous signer:', error);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}, [anonMode, postCid, threadSigner, account, setThreadSigner, setAddressSigner]);
|
||||
}, [anonMode, postCid, account, getThreadSigner, setThreadSigner, setAddressSigner]);
|
||||
|
||||
const getExistingSigner = useCallback(
|
||||
(address: string) => {
|
||||
|
||||
Reference in New Issue
Block a user