diff --git a/Frontend/android/app/build.gradle b/Frontend/android/app/build.gradle index e4c651e7..166b2b2b 100644 --- a/Frontend/android/app/build.gradle +++ b/Frontend/android/app/build.gradle @@ -26,7 +26,8 @@ android { namespace "com.example.patient_manager" compileSdkVersion flutter.compileSdkVersion ndkVersion flutter.ndkVersion - + compileSdkVersion 34 + compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 diff --git a/Frontend/android/app/src/main/AndroidManifest.xml b/Frontend/android/app/src/main/AndroidManifest.xml index 3196100f..5bef92c7 100644 --- a/Frontend/android/app/src/main/AndroidManifest.xml +++ b/Frontend/android/app/src/main/AndroidManifest.xml @@ -1,9 +1,13 @@ + + + + android:icon="@mipmap/launcher_icon" + android:enableOnBackInvokedCallback="true"> + NSLocationWhenInUseUsageDescription + This app needs access to location when open. CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName diff --git a/Frontend/lib/main.dart b/Frontend/lib/main.dart index ebb99cd7..15d95886 100644 --- a/Frontend/lib/main.dart +++ b/Frontend/lib/main.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import '../mih_env/env.dart'; import '../mih_router/routeGenerator.dart'; import '../mih_theme/mih_theme.dart'; + //import 'package:fpjs_pro_plugin/fpjs_pro_plugin.dart'; class MzanziInnovationHub extends StatefulWidget { @@ -21,7 +22,7 @@ class MzanziInnovationHub extends StatefulWidget { class _MzanziInnovationHubState extends State { late ThemeMode _themeMode; late MyTheme theme; - // final noscreenshot = NoScreenshot.instance; + Color getPrimany() { return theme.primaryColor(); } @@ -78,9 +79,6 @@ class _MzanziInnovationHubState extends State { _themeMode = ThemeMode.dark; theme = MyTheme(); theme.platform = Theme.of(context).platform; - // if (theme.getPlatform() == "Android") { - // noscreenshot.screenshotOff(); - // } theme.mode = "Dark"; super.initState(); //doInit(); diff --git a/Frontend/lib/main_dev.dart b/Frontend/lib/main_dev.dart index f5ddc1cf..8b4805ea 100644 --- a/Frontend/lib/main_dev.dart +++ b/Frontend/lib/main_dev.dart @@ -3,7 +3,7 @@ import 'package:flutter_native_splash/flutter_native_splash.dart'; import '../mih_env/env.dart'; import '../../main.dart'; import 'package:supertokens_flutter/supertokens.dart'; -import 'package:flutter_web_plugins/flutter_web_plugins.dart'; +// import 'package:flutter_web_plugins/flutter_web_plugins.dart'; void main() async { WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); @@ -13,7 +13,7 @@ void main() async { apiDomain: AppEnviroment.baseApiUrl, apiBasePath: "/auth", ); - setUrlStrategy(PathUrlStrategy()); + // setUrlStrategy(PathUrlStrategy()); FlutterNativeSplash.remove(); runApp(const MzanziInnovationHub()); } diff --git a/Frontend/lib/main_prod.dart b/Frontend/lib/main_prod.dart index 5c58f1ba..ccae5b4a 100644 --- a/Frontend/lib/main_prod.dart +++ b/Frontend/lib/main_prod.dart @@ -3,7 +3,7 @@ import 'package:flutter_native_splash/flutter_native_splash.dart'; import '../mih_env/env.dart'; import '../../main.dart'; import 'package:supertokens_flutter/supertokens.dart'; -import 'package:flutter_web_plugins/flutter_web_plugins.dart'; +// import 'package:flutter_web_plugins/flutter_web_plugins.dart'; void main() async { WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); @@ -13,7 +13,7 @@ void main() async { apiDomain: AppEnviroment.baseApiUrl, apiBasePath: "/auth", ); - setUrlStrategy(PathUrlStrategy()); + // setUrlStrategy(PathUrlStrategy()); FlutterNativeSplash.remove(); runApp(const MzanziInnovationHub()); } diff --git a/Frontend/lib/mih_env/env.dart b/Frontend/lib/mih_env/env.dart index 8780f0ee..279b69a2 100644 --- a/Frontend/lib/mih_env/env.dart +++ b/Frontend/lib/mih_env/env.dart @@ -13,8 +13,8 @@ abstract class AppEnviroment { switch (env) { case Enviroment.dev: { - baseApiUrl = "http://localhost:8080"; - baseFileUrl = "http://localhost:9000"; + baseApiUrl = "http://10.0.2.2:8080"; + baseFileUrl = "http://10.0.2.2:9000"; whatsappAccessToken = "EAAPINXuNFdYBOzBjTcvZA2iPXEHbHRF9uNXyP3ihkPRUcBqKNru5g9NKRRKkFaiaITEzO3BMo6CjdUmlDH4qYTW2mzDrZB4Q21ZCEZBgECZCu27vfaOXJZCYQLNxwoXkrZBRYv8ZAP37f69r3z9JxLQxdxn9gwqA3oNZAlBBRapJQzxOr6pZBTdI3bbjbu17ZBIwRcF4JCqPDCNLEZCI3bmHwEd2i2niNMYZD"; //fingerPrintPluginKey = 'h5X7a5j14iUZCobI1ZeX'; diff --git a/Frontend/lib/mih_packages/about_mih/mih_about.dart b/Frontend/lib/mih_packages/about_mih/mih_about.dart index 0204b3fc..5b3836a9 100644 --- a/Frontend/lib/mih_packages/about_mih/mih_about.dart +++ b/Frontend/lib/mih_packages/about_mih/mih_about.dart @@ -8,7 +8,7 @@ import '../../mih_components/mih_layout/mih_tile.dart'; import '../../main.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import "package:universal_html/js.dart" as js; -import 'dart:html' as html; +// import 'dart:html' as html; class MIHAbout extends StatefulWidget { const MIHAbout({ @@ -113,9 +113,9 @@ class _MIHAboutState extends State { height: 50, child: MIHButton( onTap: () { - html.window.open( - 'https://www.youtube.com/playlist?list=PLuT35kJIui0H5kXjxNOZlHoOPZbQLr4qh', - 'new tab'); + // html.window.open( + // 'https://www.youtube.com/playlist?list=PLuT35kJIui0H5kXjxNOZlHoOPZbQLr4qh', + // 'new tab'); }, buttonText: "MIH Beginners Guide", buttonColor: @@ -335,8 +335,8 @@ class _MIHAboutState extends State { List socials = []; socials.add(MIHTile( onTap: () { - html.window - .open('https://www.tiktok.com/@mzansi.innovation.hub', 'new tab'); + // html.window + // .open('https://www.tiktok.com/@mzansi.innovation.hub', 'new tab'); }, tileName: "TikTok", tileIcon: Center( @@ -352,8 +352,8 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - html.window - .open('https://www.instagram.com/mzansi.innovation.hub', 'new tab'); + // html.window + // .open('https://www.instagram.com/mzansi.innovation.hub', 'new tab'); }, tileName: "Instagram", tileIcon: Center( @@ -369,8 +369,8 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - html.window.open( - 'https://whatsapp.com/channel/0029Vax3INCIyPtMn8KgeM2F', 'new tab'); + // html.window.open( + // 'https://whatsapp.com/channel/0029Vax3INCIyPtMn8KgeM2F', 'new tab'); }, tileName: "Whatsapp", tileIcon: Center( @@ -386,8 +386,8 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - html.window - .open('https://www.youtube.com/@mzansiinnovationhub', 'new tab'); + // html.window + // .open('https://www.youtube.com/@mzansiinnovationhub', 'new tab'); }, tileName: "YouTube", tileIcon: Center( @@ -403,7 +403,7 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - html.window.open('https://x.com/mzansi_inno_hub', 'new tab'); + // html.window.open('https://x.com/mzansi_inno_hub', 'new tab'); }, tileName: "X", tileIcon: Center( @@ -419,9 +419,9 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - html.window.open( - 'https://www.linkedin.com/company/mzansi-innovation-hub/', - 'new tab'); + // html.window.open( + // 'https://www.linkedin.com/company/mzansi-innovation-hub/', + // 'new tab'); }, tileName: "LinkedIn", tileIcon: Center( @@ -437,9 +437,9 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - html.window.open( - 'https://www.facebook.com/profile.php?id=61565345762136', - 'new tab'); + // html.window.open( + // 'https://www.facebook.com/profile.php?id=61565345762136', + // 'new tab'); }, tileName: "FaceBook", tileIcon: Center( diff --git a/Frontend/lib/mih_packages/authentication/auth_check.dart b/Frontend/lib/mih_packages/authentication/auth_check.dart index 7d522312..ef79cf12 100644 --- a/Frontend/lib/mih_packages/authentication/auth_check.dart +++ b/Frontend/lib/mih_packages/authentication/auth_check.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:supertokens_flutter/supertokens.dart'; - +import 'package:no_screenshot/no_screenshot.dart'; import '../mih_home/mih_profile_getter.dart'; import 'signin_or_register.dart'; @@ -17,6 +17,8 @@ class AuthCheck extends StatefulWidget { } class _AuthCheckState extends State { + final _noScreenshot = NoScreenshot.instance; + Future doesSessionExist() async { //wait //await Future.delayed(const Duration(seconds: 1)); @@ -24,9 +26,15 @@ class _AuthCheckState extends State { return signedIn; } + void disableScreenshot() async { + bool result = await _noScreenshot.screenshotOff(); + print('Screenshot Off: $result'); + } + @override void initState() { //signedIn = doesSessionExist(); + disableScreenshot(); super.initState(); } diff --git a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index a2ec33f1..96d3fee1 100644 --- a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,68 +1,68 @@ { - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" + "info": { + "version": 1, + "author": "xcode" }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} + "images": [ + { + "size": "16x16", + "idiom": "mac", + "filename": "app_icon_16.png", + "scale": "1x" + }, + { + "size": "16x16", + "idiom": "mac", + "filename": "app_icon_32.png", + "scale": "2x" + }, + { + "size": "32x32", + "idiom": "mac", + "filename": "app_icon_32.png", + "scale": "1x" + }, + { + "size": "32x32", + "idiom": "mac", + "filename": "app_icon_64.png", + "scale": "2x" + }, + { + "size": "128x128", + "idiom": "mac", + "filename": "app_icon_128.png", + "scale": "1x" + }, + { + "size": "128x128", + "idiom": "mac", + "filename": "app_icon_256.png", + "scale": "2x" + }, + { + "size": "256x256", + "idiom": "mac", + "filename": "app_icon_256.png", + "scale": "1x" + }, + { + "size": "256x256", + "idiom": "mac", + "filename": "app_icon_512.png", + "scale": "2x" + }, + { + "size": "512x512", + "idiom": "mac", + "filename": "app_icon_512.png", + "scale": "1x" + }, + { + "size": "512x512", + "idiom": "mac", + "filename": "app_icon_1024.png", + "scale": "2x" + } + ] +} \ No newline at end of file diff --git a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png index 82b6f9d9..2ba4b695 100644 Binary files a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png index 13b35eba..9cf7a7be 100644 Binary files a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png index 0a3f5fa4..4fdf8440 100644 Binary files a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png index bdb57226..454b766a 100644 Binary files a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png index f083318e..16627b35 100644 Binary files a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png index 326c0e72..62b325f3 100644 Binary files a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png index 2f1632cf..d2ae847a 100644 Binary files a/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and b/Frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/Frontend/pubspec.lock b/Frontend/pubspec.lock index 4c817e73..875c5953 100644 --- a/Frontend/pubspec.lock +++ b/Frontend/pubspec.lock @@ -225,6 +225,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.3" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" clock: dependency: transitive description: @@ -406,6 +414,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_launcher_icons: + dependency: "direct main" + description: + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" + source: hosted + version: "0.13.1" flutter_lints: dependency: "direct dev" description: @@ -1389,14 +1405,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" - url_strategy: - dependency: "direct main" - description: - name: url_strategy - sha256: "6eff69fa0900b731a23552b38b54389f399d247dbb0998f2cbdf25bef6790a7c" - url: "https://pub.dev" - source: hosted - version: "0.3.0" uuid: dependency: transitive description: diff --git a/Frontend/pubspec.yaml b/Frontend/pubspec.yaml index 36ab171b..21375c05 100644 --- a/Frontend/pubspec.yaml +++ b/Frontend/pubspec.yaml @@ -52,7 +52,7 @@ dependencies: intl: ^0.19.0 flutter_native_splash: ^2.4.1 #google_maps_flutter_web: ^0.5.10 - url_strategy: ^0.3.0 + # url_strategy: ^0.3.0 no_screenshot: ^0.3.1 printing: ^5.13.3 pdf: ^3.11.1 @@ -64,6 +64,7 @@ dependencies: syncfusion_flutter_barcodes: ^26.2.10 simple_barcode_scanner: ^0.2.5 mobile_scanner: ^6.0.2 + flutter_launcher_icons: ^0.13.1 dev_dependencies: flutter_test: @@ -94,6 +95,7 @@ flutter: assets: - images/ - images/loyalty_cards/ + - images/app_icon/ # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see diff --git a/Frontend/web/favicon.png b/Frontend/web/favicon.png new file mode 100644 index 00000000..4fdf8440 Binary files /dev/null and b/Frontend/web/favicon.png differ diff --git a/Frontend/web/icons/Icon-192.png b/Frontend/web/icons/Icon-192.png new file mode 100644 index 00000000..6132cffe Binary files /dev/null and b/Frontend/web/icons/Icon-192.png differ diff --git a/Frontend/web/icons/Icon-512.png b/Frontend/web/icons/Icon-512.png new file mode 100644 index 00000000..62b325f3 Binary files /dev/null and b/Frontend/web/icons/Icon-512.png differ diff --git a/Frontend/web/icons/Icon-maskable-192.png b/Frontend/web/icons/Icon-maskable-192.png new file mode 100644 index 00000000..6132cffe Binary files /dev/null and b/Frontend/web/icons/Icon-maskable-192.png differ diff --git a/Frontend/web/icons/Icon-maskable-512.png b/Frontend/web/icons/Icon-maskable-512.png new file mode 100644 index 00000000..62b325f3 Binary files /dev/null and b/Frontend/web/icons/Icon-maskable-512.png differ diff --git a/Frontend/web/manifest.json b/Frontend/web/manifest.json index c1303a01..62e43640 100644 --- a/Frontend/web/manifest.json +++ b/Frontend/web/manifest.json @@ -3,30 +3,30 @@ "short_name": "MIH", "start_url": ".", "display": "standalone", - "background_color": "#3A4454", - "theme_color": "#3A4454", + "background_color": "#hexcode", + "theme_color": "#hexcode", "description": "Digitizing Mzansi one process at a time. Discover essential Mzansi apps to streamline your personal and professional life. Simplify your daily tasks with our user-friendly solutions.", "orientation": "any", "prefer_related_applications": false, "icons": [ { - "src": "icons/android-chrome-192x192.png", + "src": "icons/Icon-192.png", "sizes": "192x192", "type": "image/png" }, { - "src": "icons/android-chrome-512x512.png", + "src": "icons/Icon-512.png", "sizes": "512x512", "type": "image/png" }, { - "src": "icons/android-chrome-192x192.png", + "src": "icons/Icon-maskable-192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "icons/android-chrome-512x512.png", + "src": "icons/Icon-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/Frontend/windows/runner/resources/app_icon.ico b/Frontend/windows/runner/resources/app_icon.ico index c04e20ca..56f9f71d 100644 Binary files a/Frontend/windows/runner/resources/app_icon.ico and b/Frontend/windows/runner/resources/app_icon.ico differ diff --git a/backend/routers/fileStorage.py b/backend/routers/fileStorage.py index bd35e6de..cc0069c2 100644 --- a/backend/routers/fileStorage.py +++ b/backend/routers/fileStorage.py @@ -93,7 +93,7 @@ async def pull_File_from_user(app_id: str, folder: str, file_name: str, env: str # return {"message": error} if(env == "Dev"): return { - "minioURL": f"http://localhost:9000/mih/{app_id}/{folder}/{file_name}", + "minioURL": f"http://10.0.2.2:9000/mih/{app_id}/{folder}/{file_name}", } else: return {