This commit is contained in:
otsmr 2025-04-30 22:43:55 +02:00
parent aeabd9268f
commit c460befea5
4 changed files with 24 additions and 13 deletions

View file

@ -18,6 +18,7 @@ import 'package:twonly/src/views/components/media_view_sizing.dart';
import 'package:twonly/src/views/components/permissions_view.dart'; import 'package:twonly/src/views/components/permissions_view.dart';
import 'package:twonly/src/utils/storage.dart'; import 'package:twonly/src/utils/storage.dart';
import 'package:twonly/src/views/camera/share_image_editor_view.dart'; import 'package:twonly/src/views/camera/share_image_editor_view.dart';
import 'package:twonly/src/views/home_view.dart';
class CameraPreviewView extends StatefulWidget { class CameraPreviewView extends StatefulWidget {
const CameraPreviewView({super.key, this.sendTo}); const CameraPreviewView({super.key, this.sendTo});
@ -245,9 +246,12 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
if (!context.mounted) return true; if (!context.mounted) return true;
// shouldReturn is null when the user used the back button // shouldReturn is null when the user used the back button
if (shoudReturn != null && shoudReturn) { if (shoudReturn != null && shoudReturn) {
if (!context.mounted) return true;
// ignore: use_build_context_synchronously // ignore: use_build_context_synchronously
if (widget.sendTo == null) {
globalUpdateOfHomeViewPageIndex(1);
} else {
Navigator.pop(context); Navigator.pop(context);
}
return true; return true;
} }
selectCamera(cameraId); selectCamera(cameraId);
@ -381,9 +385,7 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (cameraId >= gCameras.length || controller == null) { if (cameraId >= gCameras.length || controller == null) {
return Center( return Container();
child: Text("No camera found."),
);
} }
return MediaViewSizing( return MediaViewSizing(
child: GestureDetector( child: GestureDetector(

View file

@ -288,6 +288,7 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
Future pushShareImageView() async { Future pushShareImageView() async {
Future<Uint8List?> imageBytes = getMergedImage(); Future<Uint8List?> imageBytes = getMergedImage();
videoController?.pause();
bool? wasSend = await Navigator.push( bool? wasSend = await Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
@ -304,6 +305,8 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
if (wasSend != null && wasSend && context.mounted) { if (wasSend != null && wasSend && context.mounted) {
// ignore: use_build_context_synchronously // ignore: use_build_context_synchronously
Navigator.pop(context, true); Navigator.pop(context, true);
} else {
videoController?.play();
} }
} }

View file

@ -14,7 +14,6 @@ import 'package:twonly/src/views/components/verified_shield.dart';
import 'package:twonly/src/database/daos/contacts_dao.dart'; import 'package:twonly/src/database/daos/contacts_dao.dart';
import 'package:twonly/src/database/twonly_database.dart'; import 'package:twonly/src/database/twonly_database.dart';
import 'package:twonly/src/utils/misc.dart'; import 'package:twonly/src/utils/misc.dart';
import 'package:twonly/src/views/home_view.dart';
class ShareImageView extends StatefulWidget { class ShareImageView extends StatefulWidget {
const ShareImageView( const ShareImageView(
@ -257,12 +256,13 @@ class _ShareImageView extends State<ShareImageView> {
widget.mirrorVideo, widget.mirrorVideo,
); );
if (context.mounted) { if (context.mounted) {
if (widget.preselectedUser != null) {
Navigator.pop(context, true); Navigator.pop(context, true);
} else { // if (widget.preselectedUser != null) {
Navigator.popUntil(context, (route) => route.isFirst); // Navigator.pop(context, true);
globalUpdateOfHomeViewPageIndex(1); // } else {
} // Navigator.popUntil(context, (route) => route.isFirst, true);
// globalUpdateOfHomeViewPageIndex(1);
// }
} }
}, },
style: ButtonStyle( style: ButtonStyle(

View file

@ -99,6 +99,8 @@ class _MediaViewerViewState extends State<MediaViewerView> {
} }
Future nextMediaOrExit() async { Future nextMediaOrExit() async {
if (!isMounted) return;
videoController?.dispose();
nextMediaTimer?.cancel(); nextMediaTimer?.cancel();
progressTimer?.cancel(); progressTimer?.cancel();
if (allMediaFiles.isNotEmpty) { if (allMediaFiles.isNotEmpty) {
@ -112,7 +114,7 @@ class _MediaViewerViewState extends State<MediaViewerView> {
} }
} }
if (allMediaFiles.isEmpty || allMediaFiles.length == 1) { if (allMediaFiles.isEmpty || allMediaFiles.length == 1) {
if (context.mounted) { if (isMounted) {
Navigator.pop(context); Navigator.pop(context);
} }
} else { } else {
@ -122,6 +124,7 @@ class _MediaViewerViewState extends State<MediaViewerView> {
} }
Future loadCurrentMediaFile({bool showTwonly = false}) async { Future loadCurrentMediaFile({bool showTwonly = false}) async {
if (!isMounted) return;
await _noScreenshot.screenshotOff(); await _noScreenshot.screenshotOff();
if (!context.mounted || allMediaFiles.isEmpty) return nextMediaOrExit(); if (!context.mounted || allMediaFiles.isEmpty) return nextMediaOrExit();
@ -394,6 +397,7 @@ class _MediaViewerViewState extends State<MediaViewerView> {
onPressed: () async { onPressed: () async {
nextMediaTimer?.cancel(); nextMediaTimer?.cancel();
progressTimer?.cancel(); progressTimer?.cancel();
videoController?.pause();
await Navigator.push(context, MaterialPageRoute( await Navigator.push(context, MaterialPageRoute(
builder: (context) { builder: (context) {
return CameraSendToView(widget.contact); return CameraSendToView(widget.contact);
@ -401,6 +405,8 @@ class _MediaViewerViewState extends State<MediaViewerView> {
)); ));
if (isMounted && maxShowTime != gMediaShowInfinite) { if (isMounted && maxShowTime != gMediaShowInfinite) {
nextMediaOrExit(); nextMediaOrExit();
} else {
videoController?.play();
} }
}, },
style: ButtonStyle( style: ButtonStyle(