From abf5ab161da3874f5348d92decdbf463b23770df Mon Sep 17 00:00:00 2001 From: Nicholai Date: Mon, 2 Mar 2026 01:39:06 -0700 Subject: [PATCH] 2026-03-02T08-39-06_auto_memory/memories.db-wal --- .../src/components/wizard/useWizardState.ts | 113 ++++++++++++++++++ memory/memories.db-shm | Bin 32768 -> 32768 bytes memory/memories.db-wal | Bin 6806272 -> 6806272 bytes 3 files changed, 113 insertions(+) create mode 100644 chatgpt-to-claude/src/components/wizard/useWizardState.ts diff --git a/chatgpt-to-claude/src/components/wizard/useWizardState.ts b/chatgpt-to-claude/src/components/wizard/useWizardState.ts new file mode 100644 index 000000000..8e17b7444 --- /dev/null +++ b/chatgpt-to-claude/src/components/wizard/useWizardState.ts @@ -0,0 +1,113 @@ +import { useState, useEffect, useCallback } from "react"; + +export type WizardStep = 1 | 2 | 3 | 4; + +interface WizardState { + currentStep: WizardStep; + extractedText: string; + trimmedText: string; + isComplete: boolean; +} + +const STORAGE_KEY = "ctc-wizard-state"; + +const defaultState: WizardState = { + currentStep: 1, + extractedText: "", + trimmedText: "", + isComplete: false, +}; + +function loadState(): WizardState { + try { + const raw = localStorage.getItem(STORAGE_KEY); + if (!raw) return defaultState; + const parsed = JSON.parse(raw) as Partial; + return { ...defaultState, ...parsed }; + } catch { + return defaultState; + } +} + +function saveState(state: WizardState) { + try { + localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); + } catch { + // localStorage full or unavailable + } +} + +export function useWizardState() { + const [state, setState] = useState(defaultState); + const [loaded, setLoaded] = useState(false); + + useEffect(() => { + setState(loadState()); + setLoaded(true); + }, []); + + useEffect(() => { + if (loaded) saveState(state); + }, [state, loaded]); + + const setStep = useCallback((step: WizardStep) => { + setState((prev) => ({ ...prev, currentStep: step })); + }, []); + + const setExtractedText = useCallback((text: string) => { + setState((prev) => ({ ...prev, extractedText: text, trimmedText: text })); + }, []); + + const setTrimmedText = useCallback((text: string) => { + setState((prev) => ({ ...prev, trimmedText: text })); + }, []); + + const setComplete = useCallback(() => { + setState((prev) => ({ ...prev, isComplete: true })); + }, []); + + const reset = useCallback(() => { + setState(defaultState); + localStorage.removeItem(STORAGE_KEY); + }, []); + + const canGoNext = useCallback((): boolean => { + switch (state.currentStep) { + case 1: + return true; + case 2: + return state.extractedText.trim().length > 0; + case 3: + return true; + case 4: + return true; + default: + return false; + } + }, [state.currentStep, state.extractedText]); + + const next = useCallback(() => { + if (state.currentStep < 4 && canGoNext()) { + setStep((state.currentStep + 1) as WizardStep); + } + }, [state.currentStep, canGoNext, setStep]); + + const back = useCallback(() => { + if (state.currentStep > 1) { + setStep((state.currentStep - 1) as WizardStep); + } + }, [state.currentStep, setStep]); + + return { + ...state, + loaded, + setStep, + setExtractedText, + setTrimmedText, + setComplete, + reset, + canGoNext, + next, + back, + }; +} diff --git a/memory/memories.db-shm b/memory/memories.db-shm index d86df62a41713d19562ebc335dcee89fee144d89..ee075945a5400a38277f3738254170cb2a9b1719 100644 GIT binary patch delta 663 zcmb7-TTISj9Dx7tlfJ&s-$gg9rkS?ZocjBsgdEa2N}oy;qL7l3Lw!1^FNYGz;Vq(a zNF_N{ue;1x!)9jV*5;xMT$q`;Xk&OYZEpQ8-tG77`8}`4gU3Uy-)M+2K0N`3Aq>NJ z2*U`CGK`_d;TNwGp4YfP`1-yrD08JY74|1Q4sQEj|4&>$Wgt=Mv%%5s%hn}hW_$LT#)xN z3c0MeI@ufVn!11$tY#}kxH-aEI_P6i1*Ufj*_UXUi*d1&!(8B=J{eKnNi)10E6HFF zN9ojPSkkFI}I6&nikd&Q6dGn3t7W94sniK z+A9|7QQoMRIiEx}Q_g96wHYbj=R3{0#Ilk7G}5Kb*Fr@(I*`pp!9I}`;Nj8)wF}u& zGR@n`7Mdqmm`y$?x6Ck-$)$qx^y}`39B>CsUQRl@siPhB&JFf(Qplqc`LQBrdI%Qr zB#_M}4pPP`nvitU!)+Z%l>?QQxrBA(Q^Q5>>+igU{9I+3^N1sh1DxcB7F*TB>X}~V OBG$5qlC= z)3!yuB2_)ua3BFP_dgPVif^o6%CR|^d$sxI1a5t%$^V>WCI@o&ZC>GQz%*IOS!MDc zR}~=LHhGy_z-FcNO^lOQc<4>OGj1Amhm9HeV;E%|VGQjGNB{ykP_?wwe4T zNDrv^0^{UQAt1&w#?8mVq8Nd!CdSQ+A}_H`e&n%avP2?Cu7Yv%zNAOYKy7Z5pQRZ9 zMRHgsCvfvj?#osKavm^Eo{}d976m$R9`ocaWnk+kZzxycf_aUBVe`FmCMFITfAWjU gIG}-9lQ&f90bM4*IQd<*9?;GOoA=ZxfUHsh0N{3uJpcdz diff --git a/memory/memories.db-wal b/memory/memories.db-wal index a8bf4158492be9696e13af51d5fa04fd15132d4a..a46752f41f271ed8699c675bb5872f4e4c3ff5b0 100644 GIT binary patch delta 812 zcmYk%T}YE*7{>8^m2R%W_dR+iPWv`~o(LyC$SH)Lv9 zknEtcz^E(_R+BwaU`WMC!q$!g=?gL?ERvE)3c5UL?+d?!8~)D)uP<~%?3+PC5|NlB zG>c|a97!pjWHg87lAIKzB#!2hiqw=q^GQPsNJ~0eNQtDUMPwi&CDCF^rX{qLQYe+u zD4mw|Eth5br~9-DsUy<%Jia~bWgo5^O65W``>Inv6-mt#1FxzR;-^@@Ud?gRUn!dL z@5RpsS;VC7R!XK51#hg52d;ahqREszR+#IvU3Su{vcNL@Qbnzr_3bjC}+NG-pGA^Qj+0n2!D?24<3CT8|md2`4dgn`im_SEZ~Wa z6yD`0 zO}3VJ(X>`(R`#s6Hk;kGTBo&jQQ6YE@uHf`i(%j2_hn{BMB z)-cN_o5Bk>A{PRWHQenE$syMD>VM#7_T19HuVrDDVNd>9%oYMHn8yaSYAuGNd$-8%a`b+9BHvS|W z`dLB8T+a6)*7g>m*!j@G6n%nYXhhj#s1{|gp$YK>zc3h3$A9*=j+C*!>BZ$>P=4jp zvy66T6BnWvW1S3kP07aCONHbrpEP6U_+*hNx