Handle error states and accessibility improvements

This commit is contained in:
2026-10-16 15:09:20 +02:00
parent fbd57d664f
commit 9b80580f9c
9 changed files with 139 additions and 42 deletions
+17 -5
View File
@@ -30,9 +30,15 @@ export default function ScanScreen({ preferences, productCache, onScanBarcode, o
setIsScanning(false);
setIsLoadingProduct(true);
const result = await onScanBarcode(event.data).finally(() => {
let result;
try {
result = await onScanBarcode(event.data);
} catch (error) {
result = { status: 'error', errorMessage: 'Das Produkt konnte gerade nicht geladen werden.' };
} finally {
setIsLoadingProduct(false);
});
}
if (result?.status !== 'found') {
setScanError(result?.errorMessage || 'Der Barcode konnte nicht verarbeitet werden.');
@@ -41,10 +47,15 @@ export default function ScanScreen({ preferences, productCache, onScanBarcode, o
}
async function handleManualSearch() {
if (!manualSearchQuery.trim() || isSearching) return;
setIsSearching(true);
const results = await searchProducts(manualSearchQuery, productCache, preferences.offlineModeEnabled);
setManualResults(results);
setIsSearching(false);
try {
const results = await searchProducts(manualSearchQuery, productCache, preferences.offlineModeEnabled);
setManualResults(results);
} finally {
setIsSearching(false);
}
}
function retryScan() {
@@ -98,6 +109,7 @@ export default function ScanScreen({ preferences, productCache, onScanBarcode, o
<ManualSearchInput
onChangeText={setManualSearchQuery}
onSubmit={handleManualSearch}
disabled={isSearching}
value={manualSearchQuery}
/>
{isSearching ? <Text style={styles.note}>Suche läuft...</Text> : null}