Skip to content

Commit 84795a7

Browse files
committed
Field camera: persist adjustments in localStorage with reset button
1 parent 91e474e commit 84795a7

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

src/LiveCamera.tsx

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useRef, useState, useEffect, useCallback } from 'react';
2-
import { X, RotateCcw, Share2, Download, SlidersHorizontal } from 'lucide-react';
2+
import { X, RotateCcw, Share2, Download, SlidersHorizontal, RefreshCw } from 'lucide-react';
33
import { useLiveCamera } from './hooks/useLiveCamera';
44
import type { ProcessOptions } from './worker/imageProcessor';
55

@@ -70,9 +70,17 @@ export default function LiveCamera({ onBack }: { onBack: () => void }) {
7070
const [previewUrl, setPreviewUrl] = useState<string | null>(null);
7171
const [saving, setSaving] = useState(false);
7272
const [showSliders, setShowSliders] = useState(false);
73-
const [brightness, setBrightness] = useState(100);
74-
const [contrast, setContrast] = useState(100);
75-
const [saturation, setSaturation] = useState(100);
73+
const [brightness, setBrightness] = useState(() => Number(localStorage.getItem('valgis.brightness')) || 100);
74+
const [contrast, setContrast] = useState(() => Number(localStorage.getItem('valgis.contrast')) || 100);
75+
const [saturation, setSaturation] = useState(() => Number(localStorage.getItem('valgis.saturation')) || 100);
76+
77+
useEffect(() => { localStorage.setItem('valgis.brightness', String(brightness)); }, [brightness]);
78+
useEffect(() => { localStorage.setItem('valgis.contrast', String(contrast)); }, [contrast]);
79+
useEffect(() => { localStorage.setItem('valgis.saturation', String(saturation)); }, [saturation]);
80+
81+
const resetAdjustments = useCallback(() => {
82+
setBrightness(100); setContrast(100); setSaturation(100);
83+
}, []);
7684

7785
const { state, error, fps, start, stop, pause, resume, setOptions, captureHighRes } =
7886
useLiveCamera(canvasRef);
@@ -180,6 +188,17 @@ export default function LiveCamera({ onBack }: { onBack: () => void }) {
180188
{/* Quick adjust sliders */}
181189
{showSliders && (
182190
<div className="relative px-5 pb-2 pt-3 space-y-2">
191+
<div className="flex items-center justify-between">
192+
<span className="text-white/40 text-[10px] uppercase tracking-wider">Adjustments</span>
193+
<button
194+
onClick={resetAdjustments}
195+
disabled={!hasAdjustments}
196+
className="flex items-center gap-1 text-white/50 text-[10px] disabled:opacity-30 active:text-white"
197+
>
198+
<RefreshCw className="w-3 h-3" />
199+
Reset
200+
</button>
201+
</div>
183202
<QuickSlider label="B" value={brightness} min={50} max={150} onChange={setBrightness} />
184203
<QuickSlider label="C" value={contrast} min={50} max={150} onChange={setContrast} />
185204
<QuickSlider label="S" value={saturation} min={0} max={200} onChange={setSaturation} />

0 commit comments

Comments
 (0)