diff --git a/mobile/src/SceneActionsContext.tsx b/mobile/src/SceneActionsContext.tsx index e92f95f..3336d93 100644 --- a/mobile/src/SceneActionsContext.tsx +++ b/mobile/src/SceneActionsContext.tsx @@ -49,17 +49,17 @@ export function SceneActionsProvider({ children }: { children: React.ReactNode } const hide = React.useCallback( (scene: SceneOut) => { - Alert.alert('Ukryć scenę?', scene.title, [ - { text: 'Anuluj', style: 'cancel' }, + Alert.alert('Hide scene?', scene.title, [ + { text: 'Cancel', style: 'cancel' }, { - text: 'Ukryj', + text: 'Hide', style: 'destructive', onPress: async () => { try { await client.hideScene(scene.id); invalidate(); } catch (e: any) { - Alert.alert('Nie udało się ukryć', e?.message || 'unknown error'); + Alert.alert('Failed to hide', e?.message || 'unknown error'); } }, }, @@ -71,10 +71,10 @@ export function SceneActionsProvider({ children }: { children: React.ReactNode } const openActions = React.useCallback( (scene: SceneOut) => { if (pendingDuplicate) return; // w trakcie wyboru duplikatu — ignoruj - Alert.alert(scene.title, 'Akcje sceny', [ - { text: 'Ukryj scenę', style: 'destructive', onPress: () => hide(scene) }, - { text: 'Oznacz jako duplikat', onPress: () => setPending(scene) }, - { text: 'Anuluj', style: 'cancel' }, + Alert.alert(scene.title, 'Scene actions', [ + { text: 'Hide scene', style: 'destructive', onPress: () => hide(scene) }, + { text: 'Mark as duplicate', onPress: () => setPending(scene) }, + { text: 'Cancel', style: 'cancel' }, ]); }, [pendingDuplicate, hide], @@ -88,19 +88,19 @@ export function SceneActionsProvider({ children }: { children: React.ReactNode } return; } Alert.alert( - 'Scalić duplikat?', - `„${dup.title}"\n\nscalić w\n\n„${target.title}"`, + 'Merge duplicate?', + `"${dup.title}"\n\nmerge into\n\n"${target.title}"`, [ - { text: 'Anuluj', style: 'cancel', onPress: () => setPending(null) }, + { text: 'Cancel', style: 'cancel', onPress: () => setPending(null) }, { - text: 'Scal', + text: 'Merge', onPress: async () => { try { // keep = wybrany oryginał (target), drop = długo-naciśnięty duplikat (dup) await client.mergeDuplicateScene(target.id, dup.id); invalidate(); } catch (e: any) { - Alert.alert('Scalanie nie powiodło się', e?.message || 'unknown error'); + Alert.alert('Merge failed', e?.message || 'unknown error'); } finally { setPending(null); } @@ -132,10 +132,10 @@ export function SceneActionsProvider({ children }: { children: React.ReactNode } - Wybierz oryginał — dotknij scenę, w którą scalić „{pendingDuplicate.title}" + Pick the original — tap the scene to merge "{pendingDuplicate.title}" into - Anuluj + Cancel diff --git a/mobile/src/components/Thumb.tsx b/mobile/src/components/Thumb.tsx index 8422ac3..1b1f097 100644 --- a/mobile/src/components/Thumb.tsx +++ b/mobile/src/components/Thumb.tsx @@ -55,7 +55,9 @@ export function Thumb({ url, style, contentFit = 'cover', emptyGlyph = '🎬' }: {status === 'error' && ( - + {/* Błąd ładowania (np. wygasła sxyprn/trafficdeposit miniaturka, 404) → + czysty placeholder jak 'empty', nie alarmowe ⚠ (bug 2026-06-10). */} + {emptyGlyph} )}