fix(player): dolny pasek sterowania nad systemowym paskiem nawigacji
Zgloszenie 386ef7ab (Galaxy S25, Android 16, nawigacja trzema przyciskami): pasek przewijania niewidoczny w pionie. `controlsBottom` mial `bottom: 0` i stale `paddingBottom: 18`, bez marginesow systemowych. Od Androida 15 apka rysuje pod paskiem nawigacji, wiec przy trzech przyciskach (~48 dp) scrubber ladowal pod nimi. Dolozony `useSafeAreaInsets()`: dol plus lewy i prawy, bo w poziomie pasek przyciskow siedzi z boku. Z gestami margines to kilka dp, wiec wyglad prawie bez zmian. `SafeAreaProvider` juz owija apke, ten sam hook jest w nawigacji. tsc: 11 bledow przed i po, zadnego w okolicy zmiany. Wpis w changelogu 2026-09-02a.
This commit is contained in:
parent
ca80ae44b6
commit
e5eb27228e
2 changed files with 26 additions and 1 deletions
|
|
@ -29,6 +29,14 @@ export type ChangelogEntry = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const CHANGELOG: ChangelogEntry[] = [
|
export const CHANGELOG: ChangelogEntry[] = [
|
||||||
|
{
|
||||||
|
id: '2026-09-02a',
|
||||||
|
date: 'September 2026',
|
||||||
|
items: [
|
||||||
|
'The seek bar no longer hides behind the Android navigation buttons. On phones that use the three-button bar, the player controls sat underneath it. They now leave room for it.',
|
||||||
|
'Movies stop swallowing other movies. Titles that differ only by a series number, like part 60 and part 61, or a bare title against a numbered sequel, were being merged into one entry with a pile of wrong links. New arrivals are kept apart now; already merged ones are being sorted out separately.',
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: '2026-08-27a',
|
id: '2026-08-27a',
|
||||||
date: 'August 2026',
|
date: 'August 2026',
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import { setLastPlayback } from '../lib/lastPlayback';
|
||||||
import { allowScreenOff, keepScreenOn } from '../lib/keepAwake';
|
import { allowScreenOff, keepScreenOn } from '../lib/keepAwake';
|
||||||
import { usePreferences } from '../PreferencesContext';
|
import { usePreferences } from '../PreferencesContext';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||||
import {
|
import {
|
||||||
ActivityIndicator,
|
ActivityIndicator,
|
||||||
Alert,
|
Alert,
|
||||||
|
|
@ -203,6 +204,12 @@ function PlayerScreenActive() {
|
||||||
function NativeVideoPlayer({ params }: { params: RouteParams }) {
|
function NativeVideoPlayer({ params }: { params: RouteParams }) {
|
||||||
const client = useClient();
|
const client = useClient();
|
||||||
const nav = useNavigation<NativeStackNavigationProp<RootStackParamList, 'Player'>>();
|
const nav = useNavigation<NativeStackNavigationProp<RootStackParamList, 'Player'>>();
|
||||||
|
// Marginesy systemowe. Od Androida 15 apka rysuje pod paskiem nawigacji, wiec dolny
|
||||||
|
// pasek sterowania z `bottom: 0` ladowal POD trzema przyciskami systemowymi i scrubber
|
||||||
|
// znikal (zgloszenie 386ef7ab, Galaxy S25 / Android 16, nawigacja przyciskami).
|
||||||
|
// Z gestami dolny margines to kilka dp, z przyciskami ~48 dp; w poziomie pasek
|
||||||
|
// przyciskow siedzi z boku, stad tez lewy i prawy.
|
||||||
|
const insets = useSafeAreaInsets();
|
||||||
const { url, sceneId, origin: playOrigin, resolvePageUrl, entityKind, durationSec, refererHost, title, fallbackEmbedUrl, headers: paramHeaders, fallbackProxyUrl } = params;
|
const { url, sceneId, origin: playOrigin, resolvePageUrl, entityKind, durationSec, refererHost, title, fallbackEmbedUrl, headers: paramHeaders, fallbackProxyUrl } = params;
|
||||||
const { markBroken, canMark, busy: markBusy } = useMarkSourceBroken(params);
|
const { markBroken, canMark, busy: markBusy } = useMarkSourceBroken(params);
|
||||||
// 'movie' → /movies/{id}/progress, 'scene' (default) → /scenes/{id}/progress.
|
// 'movie' → /movies/{id}/progress, 'scene' (default) → /scenes/{id}/progress.
|
||||||
|
|
@ -1083,7 +1090,17 @@ function NativeVideoPlayer({ params }: { params: RouteParams }) {
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<View style={styles.controlsBottom} pointerEvents="box-none">
|
<View
|
||||||
|
style={[
|
||||||
|
styles.controlsBottom,
|
||||||
|
{
|
||||||
|
paddingBottom: 18 + insets.bottom,
|
||||||
|
paddingLeft: 14 + insets.left,
|
||||||
|
paddingRight: 14 + insets.right,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
pointerEvents="box-none"
|
||||||
|
>
|
||||||
<Text style={styles.timeText}>{formatTime(displayedTime)}</Text>
|
<Text style={styles.timeText}>{formatTime(displayedTime)}</Text>
|
||||||
<GestureDetector gesture={scrubGesture}>
|
<GestureDetector gesture={scrubGesture}>
|
||||||
<View style={styles.scrubTouchArea} onLayout={scrubBarLayout} collapsable={false}>
|
<View style={styles.scrubTouchArea} onLayout={scrubBarLayout} collapsable={false}>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue