retrieve full signer objects to reuse anon mode address in own thread

This commit is contained in:
Tom (plebeius.eth)
2024-08-06 22:18:02 +02:00
parent 5095e0e3b9
commit a39262865d
3 changed files with 13 additions and 14 deletions
-1
View File
@@ -200,7 +200,6 @@ const PostFormTable = ({ closeForm, postCid }: { closeForm: () => void; postCid:
hasCalledAnonAddressRef.current = true; hasCalledAnonAddressRef.current = true;
const existingSigner = getExistingSigner(address); const existingSigner = getExistingSigner(address);
if (existingSigner) { if (existingSigner) {
console.log('onPublishReply - existingSigner:', existingSigner);
setPublishReplyOptions({ setPublishReplyOptions({
signer: existingSigner, signer: existingSigner,
author: { author: {
+2 -2
View File
@@ -21,9 +21,9 @@ const useAnonMode = (postCid?: string) => {
const signer = await account?.plebbit.createSigner(); const signer = await account?.plebbit.createSigner();
if (signer) { if (signer) {
if (postCid) { if (postCid) {
setThreadSigner(postCid, { privateKey: signer.privateKey, address: signer.address }); setThreadSigner(postCid, signer);
} else { } else {
setAddressSigner({ privateKey: signer.privateKey, address: signer.address }); setAddressSigner(signer);
} }
} }
return signer; return signer;
+11 -11
View File
@@ -3,13 +3,13 @@ import localForageLru from '@plebbit/plebbit-react-hooks/dist/lib/localforage-lr
interface AnonModeState { interface AnonModeState {
anonMode: boolean; anonMode: boolean;
threadSigners: { [key: string]: { privateKey: string; address: string } }; threadSigners: { [key: string]: any };
addressSigners: { [address: string]: { privateKey: string; address: string } }; addressSigners: { [address: string]: any };
setAnonMode: (mode: boolean) => void; setAnonMode: (mode: boolean) => void;
setThreadSigner: (postCid: string, signer: { privateKey: string; address: string }) => void; setThreadSigner: (postCid: string, signer: any) => void;
getThreadSigner: (postCid: string) => { privateKey: string; address: string } | undefined; getThreadSigner: (postCid: string) => any | undefined;
setAddressSigner: (signer: { privateKey: string; address: string }) => void; setAddressSigner: (signer: any) => void;
getAddressSigner: (address: string) => { privateKey: string; address: string } | undefined; getAddressSigner: (address: string) => any | undefined;
} }
const anonModeStore = localForageLru.createInstance({ const anonModeStore = localForageLru.createInstance({
@@ -22,14 +22,14 @@ const useAnonModeStore = create<AnonModeState>((set, get) => ({
threadSigners: {}, threadSigners: {},
addressSigners: {}, addressSigners: {},
setAnonMode: (mode: boolean) => set({ anonMode: mode }), setAnonMode: (mode: boolean) => set({ anonMode: mode }),
setThreadSigner: (postCid: string, signer: { privateKey: string; address: string }) => { setThreadSigner: (postCid: string, signer: any) => {
set((state) => ({ set((state) => ({
threadSigners: { ...state.threadSigners, [postCid]: signer }, threadSigners: { ...state.threadSigners, [postCid]: signer },
})); }));
anonModeStore.setItem(postCid, signer); anonModeStore.setItem(postCid, signer);
}, },
getThreadSigner: (postCid: string) => get().threadSigners[postCid], getThreadSigner: (postCid: string) => get().threadSigners[postCid],
setAddressSigner: (signer: { privateKey: string; address: string }) => { setAddressSigner: (signer: any) => {
set((state) => ({ set((state) => ({
addressSigners: { ...state.addressSigners, [signer.address]: signer }, addressSigners: { ...state.addressSigners, [signer.address]: signer },
})); }));
@@ -39,9 +39,9 @@ const useAnonModeStore = create<AnonModeState>((set, get) => ({
})); }));
const initializeAnonModeStore = async () => { const initializeAnonModeStore = async () => {
const entries: [string, { privateKey: string; address: string }][] = await anonModeStore.entries(); const entries: [string, any][] = await anonModeStore.entries();
const threadSigners: { [key: string]: { privateKey: string; address: string } } = {}; const threadSigners: { [key: string]: any } = {};
const addressSigners: { [key: string]: { privateKey: string; address: string } } = {}; const addressSigners: { [key: string]: any } = {};
entries.forEach(([key, value]) => { entries.forEach(([key, value]) => {
if (value.address) { if (value.address) {
addressSigners[value.address] = value; addressSigners[value.address] = value;