From 67958dae42877d90323ba757128a0df700a4b7f9 Mon Sep 17 00:00:00 2001 From: yaso-meth Date: Wed, 11 Sep 2024 12:00:36 +0200 Subject: [PATCH] check if its PWA --- Frontend/patient_manager/lib/main.dart | 3 +- .../lib/pages/authentication/signin.dart | 2 +- .../patient_manager/lib/test_files/test.dart | 97 +++++++++++++++++++ .../patient_manager/lib/theme/mihTheme.dart | 19 +--- 4 files changed, 105 insertions(+), 16 deletions(-) create mode 100644 Frontend/patient_manager/lib/test_files/test.dart diff --git a/Frontend/patient_manager/lib/main.dart b/Frontend/patient_manager/lib/main.dart index 66234ced..5bcac1a4 100644 --- a/Frontend/patient_manager/lib/main.dart +++ b/Frontend/patient_manager/lib/main.dart @@ -55,7 +55,8 @@ class _MzanziInnovationHubState extends State { } void setPlatformSpecificPlugins() { - if (theme.getPlateform() == "Android" || theme.getPlateform() == "IOS") { + print("is PWA: ${theme.isPwa()}"); + if (theme.isPwa()) { disableScreenshot(); } } diff --git a/Frontend/patient_manager/lib/pages/authentication/signin.dart b/Frontend/patient_manager/lib/pages/authentication/signin.dart index e18ee970..91ee484f 100644 --- a/Frontend/patient_manager/lib/pages/authentication/signin.dart +++ b/Frontend/patient_manager/lib/pages/authentication/signin.dart @@ -304,7 +304,7 @@ class _SignInState extends State { const SizedBox(height: 10), //Heading Text( - 'Sign In (${MzanziInnovationHub.of(context)!.theme.getPlateform()})', + 'Sign In (PWA: ${MzanziInnovationHub.of(context)!.theme.isPwa()})', style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, diff --git a/Frontend/patient_manager/lib/test_files/test.dart b/Frontend/patient_manager/lib/test_files/test.dart new file mode 100644 index 00000000..d0201769 --- /dev/null +++ b/Frontend/patient_manager/lib/test_files/test.dart @@ -0,0 +1,97 @@ +import 'package:flutter/material.dart'; +import 'package:no_screenshot/no_screenshot.dart'; +import 'package:no_screenshot/screenshot_snapshot.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + final _noScreenshot = NoScreenshot.instance; + bool _isListeningToScreenshotSnapshot = false; + ScreenshotSnapshot _latestValue = ScreenshotSnapshot( + isScreenshotProtectionOn: false, + wasScreenshotTaken: false, + screenshotPath: '', + ); + + @override + void initState() { + super.initState(); + _noScreenshot.screenshotStream.listen((value) { + setState(() { + _latestValue = value; + }); + }); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar( + title: const Text('No Screenshot Plugin Example'), + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ElevatedButton( + onPressed: () async { + await _noScreenshot.startScreenshotListening(); + setState(() { + _isListeningToScreenshotSnapshot = true; + }); + }, + child: const Text('Start Listening'), + ), + ElevatedButton( + onPressed: () async { + await _noScreenshot.stopScreenshotListening(); + setState(() { + _isListeningToScreenshotSnapshot = false; + }); + }, + child: const Text('Stop Listening'), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Text( + "Screenshot Streaming is ${_isListeningToScreenshotSnapshot ? 'ON' : 'OFF'}\n\nIsScreenshotProtectionOn: ${_latestValue.isScreenshotProtectionOn}\nwasScreenshotTaken: ${_latestValue.wasScreenshotTaken}\nScreenshot Path: ${_latestValue.screenshotPath}"), + ), + ElevatedButton( + onPressed: () async { + bool result = await _noScreenshot.screenshotOff(); + debugPrint('Screenshot Off: $result'); + }, + child: const Text('Disable Screenshot'), + ), + ElevatedButton( + onPressed: () async { + bool result = await _noScreenshot.screenshotOn(); + debugPrint('Enable Screenshot: $result'); + }, + child: const Text('Enable Screenshot'), + ), + ElevatedButton( + onPressed: () async { + bool result = await _noScreenshot.toggleScreenshot(); + debugPrint('Toggle Screenshot: $result'); + }, + child: const Text('Toggle Screenshot'), + ), + const SizedBox(height: 20), + ], + ), + ), + ), + ); + } +} diff --git a/Frontend/patient_manager/lib/theme/mihTheme.dart b/Frontend/patient_manager/lib/theme/mihTheme.dart index 885e7237..e6eaa8f4 100644 --- a/Frontend/patient_manager/lib/theme/mihTheme.dart +++ b/Frontend/patient_manager/lib/theme/mihTheme.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'dart:io' show Platform; +import "package:universal_html/html.dart" as html; class MyTheme { late int _mainColor; @@ -29,19 +29,6 @@ class MyTheme { //_mesColor = 0xffc8c8c8d9; } - String getPlateform() { - if (kIsWeb) { - return "Web"; - } - if (Platform.isAndroid) { - return "Android"; - } else if (Platform.isIOS) { - return "IOS"; - } else { - return "Other"; - } - } - ThemeData getData() { return ThemeData( fontFamily: 'Segoe UI', @@ -87,6 +74,10 @@ class MyTheme { )); } + bool isPwa() { + return html.window.matchMedia('(display-mode: standalone)').matches; + } + void setMode(String m) { mode; }