diff --git a/lib/models/latest_info.dart b/lib/models/latest_info.dart deleted file mode 100644 index b5fc2a8..0000000 --- a/lib/models/latest_info.dart +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2024 Neeraj Jakhar - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ - -class LatestInfo { - final String dest; - final String time; - final List cameras; - final int frequency; - final List minCameras; - final int minCameraFrequency; - final List types; - - LatestInfo.fromJson(Map json) - : dest = json['dest'], - time = json['time'], - cameras = List.from(json['cameras']), - frequency = json['frequency'], - minCameras = List.from(json['min_cams']), - minCameraFrequency = json['min_cam_frequency'], - types = List.from(json['types']); -} diff --git a/lib/pages/player/archive_player_base.dart b/lib/pages/player/archive_player_base.dart index 7d3f126..24f8f44 100644 --- a/lib/pages/player/archive_player_base.dart +++ b/lib/pages/player/archive_player_base.dart @@ -17,7 +17,6 @@ import '../../cubit/viewer/camera_view_state.dart'; import '../../cubit/viewer/ssh_cubit.dart'; import '../../cubit/viewer/view_state.dart'; import '../../models/camera.dart'; -import '../../models/location.dart'; import 'player_base.dart'; abstract class ArchivePlayerBase extends PlayerBase { @@ -52,60 +51,7 @@ abstract class ArchivePlayerBase extends PlayerBase { } abstract class ArchivePlayerBaseState - extends PlayerBaseState { - @override - void back(BuildContext context) => context.read().back(); - - @override - void quit(BuildContext context) => context.read().quit(); - - @override - void getStreamUrl(BuildContext context) => context - .read() - .getStreamUrl(cameraName: widget.cameraName); - - @override - void next(BuildContext context) => context.read().next(); - - @override - void previous(BuildContext context) => - context.read().previous(); - - @override - void toggleFullScreen(BuildContext context) => - context.read().toggleFullScreen(); - - @override - void updateCamera(BuildContext context, ViewUpdatedState state) => - context.read().updateCamera(state); - - @override - void emitSshUrl(BuildContext bc, int port) { - bc - .read() - .emitUrlState(host: 'localhost', port: port); - } - - @override - void updateSelectedCameraAndLocation(BuildContext context, Camera camera, - Location location, bool isFreshState) => - context - .read() - .updateSelectedCameraAndLocation(camera, location, isFreshState); - - @override - BlocListener - createCameraViewBlocListener( - void Function(BuildContext context, CameraViewState state) - listener) => - BlocListener( - listener: listener); - - @override - BlocListener createViewBlocListener( - void Function(BuildContext context, ViewState state) listener) => - BlocListener(listener: listener); - + extends PlayerBaseState { @override BlocProvider createViewBlocProvider( BuildContext context, CameraPlayerStream playerStream) => @@ -127,13 +73,4 @@ abstract class ArchivePlayerBaseState ), ), ); - - @override - BlocBuilder - createCameraErrorViewBlocBuilder( - Widget Function(BuildContext context, CameraViewState state) - builder) => - BlocBuilder( - builder: builder, - ); } diff --git a/lib/pages/player/live_player_base.dart b/lib/pages/player/live_player_base.dart index c90ccf2..de4d588 100644 --- a/lib/pages/player/live_player_base.dart +++ b/lib/pages/player/live_player_base.dart @@ -17,7 +17,6 @@ import '../../cubit/viewer/live_view_cubit.dart'; import '../../cubit/viewer/ssh_cubit.dart'; import '../../cubit/viewer/view_state.dart'; import '../../models/camera.dart'; -import '../../models/location.dart'; import 'player_base.dart'; abstract class LivePlayerBase extends PlayerBase { @@ -50,48 +49,7 @@ abstract class LivePlayerBase extends PlayerBase { } abstract class LivePlayerBaseState - extends PlayerBaseState { - @override - void toggleFullScreen(BuildContext context) => - context.read().toggleFullScreen(); - - @override - void back(BuildContext context) => context.read().back(); - - @override - void quit(BuildContext context) => context.read().quit(); - - @override - void next(BuildContext context) => context.read().next(); - - @override - void previous(BuildContext context) => - context.read().previous(); - - @override - void updateSelectedCameraAndLocation( - BuildContext context, - Camera camera, - Location location, - bool isFreshState, - ) => - context - .read() - .updateSelectedCameraAndLocation(camera, location, isFreshState); - - @override - void getStreamUrl(BuildContext context) => - context.read().getStreamUrl(); - - @override - void updateCamera(BuildContext context, ViewUpdatedState state) => - context.read().updateCamera(state); - - @override - void emitSshUrl(BuildContext bc, int port) { - bc.read().emitUrlState(host: 'localhost', port: port); - } - + extends PlayerBaseState { @override BlocProvider createViewBlocProvider( BuildContext context, CameraPlayerStream playerStream) => @@ -111,26 +69,4 @@ abstract class LivePlayerBaseState ), ), ); - - @override - BlocListener createViewBlocListener( - void Function(BuildContext context, ViewState state) listener) => - BlocListener(listener: listener); - - @override - BlocListener - createCameraViewBlocListener( - void Function(BuildContext context, CameraViewState state) - listener) => - BlocListener( - listener: listener); - - @override - BlocBuilder - createCameraErrorViewBlocBuilder( - Widget Function(BuildContext context, CameraViewState state) - builder) => - BlocBuilder( - builder: builder, - ); } diff --git a/lib/pages/player/player_base.dart b/lib/pages/player/player_base.dart index 9a01354..1403cee 100644 --- a/lib/pages/player/player_base.dart +++ b/lib/pages/player/player_base.dart @@ -9,15 +9,18 @@ import 'dart:async'; import 'dart:developer'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:wakelock_plus/wakelock_plus.dart'; import '../../cubit/mixin/camera_view_cubit_mixin.dart'; +import '../../cubit/viewer/camera_view_cubit.dart'; import '../../cubit/viewer/camera_view_state.dart'; import '../../cubit/viewer/ssh_cubit.dart'; import '../../cubit/viewer/thumbnail_cubit.dart'; import '../../cubit/viewer/video_player_cubit.dart'; +import '../../cubit/viewer/view_cubit.dart'; import '../../cubit/viewer/view_state.dart'; import '../../cubit/viewer/viewer_keyboard_cubit.dart'; import '../../models/camera.dart'; @@ -52,7 +55,8 @@ abstract class PlayerBase extends StatefulWidget { }); } -abstract class PlayerBaseState extends State +abstract class PlayerBaseState extends State with WidgetsBindingObserver implements LibHelper { final TransformationController _controller = TransformationController(); @@ -208,8 +212,8 @@ abstract class PlayerBaseState extends State ? KeyEventResult.handled : KeyEventResult.ignored, child: BlocBuilder( - builder: (context, state) => createCameraErrorViewBlocBuilder( - (context, errState) => Stack( + builder: (context, state) => BlocBuilder( + builder: (context, errState) => Stack( alignment: Alignment.center, children: [ Positioned.fill( @@ -518,8 +522,8 @@ abstract class PlayerBaseState extends State ], child: MultiBlocListener( listeners: [ - createCameraViewBlocListener( - (context, state) { + BlocListener( + listener: (context, state) { if (state is! CameraViewErrorState) { // If any state comes stop the error countdown timer. // Not this can happen if any camera gives a temporary @@ -569,8 +573,8 @@ abstract class PlayerBaseState extends State } }, ), - createViewBlocListener( - (context, state) { + BlocListener( + listener: (context, state) { if (state is ViewUpdatedState && !state.isFreshState && state.selectedCamera != null && @@ -670,59 +674,59 @@ abstract class PlayerBaseState extends State void startThumbnailGeneration(String cameraName, String locationName); @protected - void toggleFullScreen(BuildContext context); + @nonVirtual + void toggleFullScreen(BuildContext context) => + context.read().toggleFullScreen(); @protected - void back(BuildContext context); + @nonVirtual + void back(BuildContext context) => context.read().back(); @protected - void quit(BuildContext context); + @nonVirtual + void quit(BuildContext context) => context.read().quit(); @protected - void next(BuildContext context); + @nonVirtual + void next(BuildContext context) => context.read().next(); @protected - void previous(BuildContext context); + @nonVirtual + void previous(BuildContext context) => context.read().previous(); @override @protected Future stop(BuildContext context); @protected - void emitSshUrl(BuildContext bc, int port); + @nonVirtual + void emitSshUrl(BuildContext bc, int port) => + bc.read().emitUrlState(host: 'localhost', port: port); @override @protected Widget createVideoWidget(BuildContext context, VideoPlayerState state); @protected + @nonVirtual void updateSelectedCameraAndLocation(BuildContext context, Camera camera, - Location location, bool isFreshState); + Location location, bool isFreshState) => + context + .read() + .updateSelectedCameraAndLocation(camera, location, isFreshState); @protected - void getStreamUrl(BuildContext context); + @nonVirtual + void getStreamUrl(BuildContext context) => context.read().getStreamUrl(); @protected - void updateCamera(BuildContext context, ViewUpdatedState state); + @nonVirtual + void updateCamera(BuildContext context, ViewUpdatedState state) => + context.read().updateCamera(state); @protected BlocProvider createViewBlocProvider( BuildContext context, CameraPlayerStream playerStream, ); - - @protected - BlocListener createViewBlocListener( - void Function(BuildContext context, ViewState state) listener, - ); - - @protected - BlocListener createCameraViewBlocListener( - void Function(BuildContext context, CameraViewState state) listener, - ); - - @protected - BlocBuilder createCameraErrorViewBlocBuilder( - Widget Function(BuildContext context, CameraViewState state) builder, - ); } diff --git a/pubspec.yaml b/pubspec.yaml index 7907818..ea5a38b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,7 +17,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 2.9.0+1102 +version: 2.9.1+1103 homepage: https://github.com/homebackend/netr/ repository: https://github.com/homebackend/netr/