[MINOR] SettingsScreen auto-saved config bij eerste render zonder gebruikersconsent #14

Open
opened 2026-08-05 21:11:39 +02:00 by eddy · 0 comments
Owner

Probleem

src/screens/SettingsScreen.tsx:35-44: De useEffect bij mount checkt of er een config in SecureStore staat. Zo niet, dan wordt de default URL+token (inclusief de hardcoded token) automatisch opgeslagen:

useEffect(() => {
  (async () => {
    const config = await getApiConfig();
    if (config) {
      setUrl(config.url);
      setToken(config.token);
    } else {
      await saveConfig({
        url: 'https://weegschaal.eddydevink.nl',
        token: '75231d5f...'
      });
    }
  })();
}, []);

Gevolg: een gebruiker die instellingen opent en meteen sluit, heeft onbedoeld de defaults opgeslagen. Sync draait dan met deze defaults zonder dat de gebruiker expliciet akkoord is gegaan.

Oplossing

  1. Verwijder de else branch — vul alleen de formuliervelden in, sla niets automatisch op
  2. De gebruiker moet expliciet op "Instellingen opslaan" drukken om config te persisteren
useEffect(() => {
  (async () => {
    const config = await getApiConfig();
    if (config) {
      setUrl(config.url);
      setToken(config.token);
    }
    // Don't auto-save defaults — user must explicitly save
  })();
}, []);

Dit hangt samen met issue #1 — zodra de hardcoded token weg is, is deze auto-save niet meer gevaarlijk, maar het blijft ongewenst gedrag.

## Probleem `src/screens/SettingsScreen.tsx:35-44`: De `useEffect` bij mount checkt of er een config in SecureStore staat. Zo niet, dan wordt de default URL+token (inclusief de hardcoded token) automatisch opgeslagen: ```tsx useEffect(() => { (async () => { const config = await getApiConfig(); if (config) { setUrl(config.url); setToken(config.token); } else { await saveConfig({ url: 'https://weegschaal.eddydevink.nl', token: '75231d5f...' }); } })(); }, []); ``` Gevolg: een gebruiker die instellingen opent en meteen sluit, heeft onbedoeld de defaults opgeslagen. Sync draait dan met deze defaults zonder dat de gebruiker expliciet akkoord is gegaan. ## Oplossing 1. Verwijder de `else` branch — vul alleen de formuliervelden in, sla niets automatisch op 2. De gebruiker moet expliciet op "Instellingen opslaan" drukken om config te persisteren ```tsx useEffect(() => { (async () => { const config = await getApiConfig(); if (config) { setUrl(config.url); setToken(config.token); } // Don't auto-save defaults — user must explicitly save })(); }, []); ``` Dit hangt samen met issue #1 — zodra de hardcoded token weg is, is deze auto-save niet meer gevaarlijk, maar het blijft ongewenst gedrag.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
eddy/weegschaal-app#14
No description provided.