fix(ci): restore sanity checks
This commit is contained in:
@@ -14,6 +14,4 @@ internal fun isPassthroughAudioMimeType(mimeType: String): Boolean = when (mimeT
|
|||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun shouldBlockDirectOutputForPassthrough(mimeType: String, audioPassthroughEnabled: Boolean): Boolean {
|
internal fun shouldBlockDirectOutputForPassthrough(mimeType: String, audioPassthroughEnabled: Boolean): Boolean = !audioPassthroughEnabled && isPassthroughAudioMimeType(mimeType)
|
||||||
return !audioPassthroughEnabled && isPassthroughAudioMimeType(mimeType)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -717,9 +717,7 @@ class ExoPlayerPlugin :
|
|||||||
* Queries relevant MPV properties and returns them in a map format
|
* Queries relevant MPV properties and returns them in a map format
|
||||||
* compatible with the performance overlay.
|
* compatible with the performance overlay.
|
||||||
*/
|
*/
|
||||||
private fun getMpvStats(): Map<String, Any?> {
|
private fun getMpvStats(): Map<String, Any?> = mpvCore?.getStats() ?: mapOf("playerType" to "mpv")
|
||||||
return mpvCore?.getStats() ?: mapOf("playerType" to "mpv")
|
|
||||||
}
|
|
||||||
|
|
||||||
// PiP Mode handling
|
// PiP Mode handling
|
||||||
|
|
||||||
@@ -796,9 +794,7 @@ class ExoPlayerPlugin :
|
|||||||
options.add("sub-files=%${pathList.toByteArray(Charsets.UTF_8).size}%$pathList")
|
options.add("sub-files=%${pathList.toByteArray(Charsets.UTF_8).size}%$pathList")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun escapeMpvPathListEntry(value: String): String {
|
private fun escapeMpvPathListEntry(value: String): String = value.replace("\\", "\\\\").replace(":", "\\:")
|
||||||
return value.replace("\\", "\\\\").replace(":", "\\:")
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure a freshly initialized MPV fallback core: replay the properties
|
* Configure a freshly initialized MPV fallback core: replay the properties
|
||||||
|
|||||||
+39
-41
@@ -960,50 +960,48 @@ class _AppShell extends StatelessWidget {
|
|||||||
child: Builder(
|
child: Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return Listener(
|
return Listener(
|
||||||
onPointerDown: (event) {
|
onPointerDown: (event) {
|
||||||
if ((event.buttons & kBackMouseButton) != 0) {
|
if ((event.buttons & kBackMouseButton) != 0) {
|
||||||
rootNavigatorKey.currentState?.maybePop();
|
rootNavigatorKey.currentState?.maybePop();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
behavior: HitTestBehavior.translucent,
|
||||||
|
child: InputModeTracker(
|
||||||
|
child: MaterialApp(
|
||||||
|
title: t.app.title,
|
||||||
|
debugShowCheckedModeBanner: false,
|
||||||
|
theme: themeProvider.lightTheme,
|
||||||
|
darkTheme: themeProvider.darkTheme,
|
||||||
|
themeMode: themeProvider.materialThemeMode,
|
||||||
|
navigatorKey: rootNavigatorKey,
|
||||||
|
navigatorObservers: [routeObserver, BackKeySuppressorObserver()],
|
||||||
|
home: const OrientationAwareSetup(),
|
||||||
|
// Siri Remote select + gamepad A report as
|
||||||
|
// LogicalKeyboardKey.{select,gameButtonA} which aren't
|
||||||
|
// in Flutter's default shortcut set — Material-level
|
||||||
|
// widgets (menu items, showModalBottomSheet actions)
|
||||||
|
// ignore them. Map both to ActivateIntent so tapping
|
||||||
|
// select on tvOS activates the focused widget.
|
||||||
|
shortcuts: <ShortcutActivator, Intent>{
|
||||||
|
...WidgetsApp.defaultShortcuts,
|
||||||
|
const SingleActivator(LogicalKeyboardKey.select): const ActivateIntent(),
|
||||||
|
const SingleActivator(LogicalKeyboardKey.gameButtonA): const ActivateIntent(),
|
||||||
|
const SingleActivator(LogicalKeyboardKey.goBack): const DismissIntent(),
|
||||||
|
const SingleActivator(LogicalKeyboardKey.browserBack): const DismissIntent(),
|
||||||
|
const SingleActivator(LogicalKeyboardKey.gameButtonB): const DismissIntent(),
|
||||||
},
|
},
|
||||||
behavior: HitTestBehavior.translucent,
|
builder: (context, child) => ScaffoldMessenger(
|
||||||
child: InputModeTracker(
|
key: rootScaffoldMessengerKey,
|
||||||
child: MaterialApp(
|
child: Scaffold(
|
||||||
title: t.app.title,
|
backgroundColor: Colors.transparent,
|
||||||
debugShowCheckedModeBanner: false,
|
body: _AppleTvScale(child: child),
|
||||||
theme: themeProvider.lightTheme,
|
|
||||||
darkTheme: themeProvider.darkTheme,
|
|
||||||
themeMode: themeProvider.materialThemeMode,
|
|
||||||
navigatorKey: rootNavigatorKey,
|
|
||||||
navigatorObservers: [routeObserver, BackKeySuppressorObserver()],
|
|
||||||
home: const OrientationAwareSetup(),
|
|
||||||
// Siri Remote select + gamepad A report as
|
|
||||||
// LogicalKeyboardKey.{select,gameButtonA} which aren't
|
|
||||||
// in Flutter's default shortcut set — Material-level
|
|
||||||
// widgets (menu items, showModalBottomSheet actions)
|
|
||||||
// ignore them. Map both to ActivateIntent so tapping
|
|
||||||
// select on tvOS activates the focused widget.
|
|
||||||
shortcuts: <ShortcutActivator, Intent>{
|
|
||||||
...WidgetsApp.defaultShortcuts,
|
|
||||||
const SingleActivator(LogicalKeyboardKey.select): const ActivateIntent(),
|
|
||||||
const SingleActivator(LogicalKeyboardKey.gameButtonA): const ActivateIntent(),
|
|
||||||
const SingleActivator(LogicalKeyboardKey.goBack): const DismissIntent(),
|
|
||||||
const SingleActivator(LogicalKeyboardKey.browserBack): const DismissIntent(),
|
|
||||||
const SingleActivator(LogicalKeyboardKey.gameButtonB): const DismissIntent(),
|
|
||||||
},
|
|
||||||
builder: (context, child) => ScaffoldMessenger(
|
|
||||||
key: rootScaffoldMessengerKey,
|
|
||||||
child: Scaffold(
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
body: _AppleTvScale(child: child),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
),
|
||||||
},
|
),
|
||||||
),
|
);
|
||||||
);
|
},
|
||||||
},
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ class _ProfileDetailScreenState extends State<ProfileDetailScreen> with Controll
|
|||||||
serverManager: context.read<MultiServerProvider>().serverManager,
|
serverManager: context.read<MultiServerProvider>().serverManager,
|
||||||
);
|
);
|
||||||
if (!mounted) return;
|
if (!mounted) return;
|
||||||
await Provider.maybeOf<HiddenLibrariesProvider>(context, listen: false)?.refresh();
|
await context.read<HiddenLibrariesProvider?>()?.refresh();
|
||||||
if (!mounted) return;
|
if (!mounted) return;
|
||||||
unawaited(context.read<ActiveProfileBinder>().rebindIfActive(_profile.id));
|
unawaited(context.read<ActiveProfileBinder>().rebindIfActive(_profile.id));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -658,7 +658,6 @@ mixin _JellyfinBrowseMethods on MediaServerCacheMixin {
|
|||||||
return _pagedMediaItems(response.data, offset: offset, requestedSize: pageSize);
|
return _pagedMediaItems(response.data, offset: offset, requestedSize: pageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<LibraryPage<MediaItem>> fetchSeasonEpisodesPage(
|
Future<LibraryPage<MediaItem>> fetchSeasonEpisodesPage(
|
||||||
String seriesId,
|
String seriesId,
|
||||||
String seasonId, {
|
String seasonId, {
|
||||||
|
|||||||
Reference in New Issue
Block a user