From 23db4453662c6228e02f020db868372b9a73e92e Mon Sep 17 00:00:00 2001 From: eddy Date: Mon, 20 Jul 2026 17:00:21 +0200 Subject: [PATCH] settings: vervang WebDAV configuratie door REST API configuratie --- src/screens/SettingsScreen.tsx | 81 ++++++++++++++-------------------- 1 file changed, 33 insertions(+), 48 deletions(-) diff --git a/src/screens/SettingsScreen.tsx b/src/screens/SettingsScreen.tsx index f434065..42bf76b 100644 --- a/src/screens/SettingsScreen.tsx +++ b/src/screens/SettingsScreen.tsx @@ -1,11 +1,11 @@ import React, { useEffect, useState } from 'react' import { View, Text, TextInput, TouchableOpacity, StyleSheet, Alert, ScrollView } from 'react-native' import * as SecureStore from 'expo-secure-store' -import { WebDAVConfig } from '../types' +import { ApiConfig } from '../types' -const CONFIG_KEY = 'weegschaal_webdav_config' +const CONFIG_KEY = 'weegschaal_api_config' -async function loadConfig(): Promise { +async function loadConfig(): Promise { try { const json = await SecureStore.getItemAsync(CONFIG_KEY) return json ? JSON.parse(json) : null @@ -14,7 +14,7 @@ async function loadConfig(): Promise { } } -async function saveConfig(config: WebDAVConfig): Promise { +async function saveConfig(config: ApiConfig): Promise { await SecureStore.setItemAsync(CONFIG_KEY, JSON.stringify(config)) } @@ -22,50 +22,43 @@ async function deleteConfig(): Promise { await SecureStore.deleteItemAsync(CONFIG_KEY) } -export async function getWebDAVConfig(): Promise { +export async function getApiConfig(): Promise { return loadConfig() } export default function SettingsScreen() { - const [url, setUrl] = useState('https://nextcloud.eddydevink.nl/remote.php/dav/files/eddy') - const [username, setUsername] = useState('') - const [password, setPassword] = useState('') - const [showPassword, setShowPassword] = useState(false) + const [url, setUrl] = useState('https://weegschaal.eddydevink.nl') + const [token, setToken] = useState('') + const [showToken, setShowToken] = useState(false) const [syncing, setSyncing] = useState(false) useEffect(() => { loadConfig().then(c => { if (c) { setUrl(c.url) - setUsername(c.username) - setPassword(c.password) + setToken(c.token) } }) }, []) const handleSave = async () => { - await saveConfig({ url, username, password }) - Alert.alert('Opgeslagen', 'WebDAV instellingen zijn opgeslagen') + await saveConfig({ url, token }) + Alert.alert('Opgeslagen', 'API instellingen zijn opgeslagen') } const handleClear = () => { - Alert.alert( - 'Instellingen wissen?', - 'WebDAV configuratie definitief verwijderen? Je kunt deze later opnieuw invoeren.', - [ - { text: 'Annuleren', style: 'cancel' }, - { - text: 'Ja, wissen', - style: 'destructive', - onPress: async () => { - await deleteConfig() - setUrl('') - setUsername('') - setPassword('') - }, + Alert.alert('Instellingen wissen?', 'API configuratie definitief verwijderen?', [ + { text: 'Annuleren', style: 'cancel' }, + { + text: 'Ja, wissen', + style: 'destructive', + onPress: async () => { + await deleteConfig() + setUrl('') + setToken('') }, - ] - ) + }, + ]) } const handleSync = async () => { @@ -73,7 +66,7 @@ export default function SettingsScreen() { try { const { syncAll } = await import('../sync/syncService') const result = await syncAll() - Alert.alert('Sync voltooid', `Lokaal: ${result.local}, WebDAV: ${result.remote}, samengevoegd: ${result.merged}`) + Alert.alert('Sync voltooid', `Opgehaald: ${result.pulled}, gepusht: ${result.pushed}, verwijderd: ${result.deleted}`) } catch (e: any) { Alert.alert('Sync fout', e?.message ?? 'Onbekende fout') } finally { @@ -83,38 +76,30 @@ export default function SettingsScreen() { return ( - WebDAV (Nextcloud) + REST API - URL + API URL - Gebruikersnaam - - - Wachtwoord + Token - setShowPassword(!showPassword)}> - {showPassword ? '👁' : '👁‍🗨'} + setShowToken(!showToken)}> + {showToken ? 'O' : 'O'}