From aba7bbce2783ba0e2fbb2e88363b80fecb04ebb7 Mon Sep 17 00:00:00 2001 From: yaso-meth Date: Thu, 29 Aug 2024 11:30:10 +0200 Subject: [PATCH] preload user profile picture --- .../lib/components/homeTileGrid.dart | 7 +++- .../lib/components/mihAppBar.dart | 8 +++-- Frontend/patient_manager/lib/pages/home.dart | 33 +++++++++++++++++++ .../lib/pages/patientAccessReview.dart | 5 ++- .../patient_manager/lib/pages/patientAdd.dart | 5 ++- .../lib/pages/patientEdit.dart | 5 ++- .../lib/pages/patientManager.dart | 5 ++- .../lib/pages/patientView.dart | 5 ++- .../lib/pages/profileBusinessAdd.dart | 5 ++- .../lib/pages/profileBusinessUpdate.dart | 5 ++- .../lib/pages/profileUserUpdate.dart | 9 +++-- 11 files changed, 77 insertions(+), 15 deletions(-) diff --git a/Frontend/patient_manager/lib/components/homeTileGrid.dart b/Frontend/patient_manager/lib/components/homeTileGrid.dart index 3aae3934..f88860d6 100644 --- a/Frontend/patient_manager/lib/components/homeTileGrid.dart +++ b/Frontend/patient_manager/lib/components/homeTileGrid.dart @@ -21,11 +21,13 @@ class HomeTileGrid extends StatefulWidget { final AppUser signedInUser; final BusinessUser? businessUser; final Business? business; + final ImageProvider? propicFile; const HomeTileGrid({ super.key, required this.signedInUser, required this.businessUser, required this.business, + required this.propicFile, }); @override @@ -401,7 +403,10 @@ class _HomeTileGridState extends State { return PopScope( canPop: false, child: Scaffold( - appBar: const MIHAppBar(barTitle: "Mzansi Innovation\nHub"), + appBar: MIHAppBar( + barTitle: "Mzansi Innovation\nHub", + propicFile: widget.propicFile, + ), drawer: MIHAppDrawer( signedInUser: widget.signedInUser, ), diff --git a/Frontend/patient_manager/lib/components/mihAppBar.dart b/Frontend/patient_manager/lib/components/mihAppBar.dart index c7dbd12e..c8af1735 100644 --- a/Frontend/patient_manager/lib/components/mihAppBar.dart +++ b/Frontend/patient_manager/lib/components/mihAppBar.dart @@ -3,8 +3,12 @@ import 'package:patient_manager/main.dart'; class MIHAppBar extends StatefulWidget implements PreferredSizeWidget { final String barTitle; - - const MIHAppBar({super.key, required this.barTitle}); + final ImageProvider? propicFile; + const MIHAppBar({ + super.key, + required this.barTitle, + required this.propicFile, + }); @override State createState() => _MIHAppBarState(); diff --git a/Frontend/patient_manager/lib/pages/home.dart b/Frontend/patient_manager/lib/pages/home.dart index 973b4367..b4f4d88f 100644 --- a/Frontend/patient_manager/lib/pages/home.dart +++ b/Frontend/patient_manager/lib/pages/home.dart @@ -25,6 +25,9 @@ class _HomeState extends State { final baseAPI = AppEnviroment.baseApiUrl; late Future profile; + late String proPicUrl; + ImageProvider? propicFile; + Future getProfile() async { AppUser userData; Business? busData; @@ -119,6 +122,28 @@ class _HomeState extends State { } } + Future getFileUrlApiCall(AppUser signedInUser) async { + if (signedInUser.pro_pic_path == "") { + return ""; + } else if (AppEnviroment.getEnv() == "Dev") { + return "${AppEnviroment.baseFileUrl}/mih/${signedInUser.pro_pic_path}"; + } else { + var url = + "${AppEnviroment.baseApiUrl}/minio/pull/file/${signedInUser.pro_pic_path}/prod"; + var response = await http.get(Uri.parse(url)); + + if (response.statusCode == 200) { + String body = response.body; + var decodedData = jsonDecode(body); + + return decodedData['minioURL']; + } else { + throw Exception( + "Error: GetUserData status code ${response.statusCode}"); + } + } + } + @override void dispose() { // TODO: implement dispose @@ -138,10 +163,18 @@ class _HomeState extends State { builder: (BuildContext context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { if (snapshot.hasData) { + getFileUrlApiCall(snapshot.requireData.signedInUser) + .then((results) { + setState(() { + proPicUrl = results; + propicFile = NetworkImage(proPicUrl); + }); + }); return HomeTileGrid( signedInUser: snapshot.requireData.signedInUser, businessUser: snapshot.data!.businessUser, business: snapshot.data!.business, + propicFile: propicFile, ); } else { return Center( diff --git a/Frontend/patient_manager/lib/pages/patientAccessReview.dart b/Frontend/patient_manager/lib/pages/patientAccessReview.dart index 3f54d161..6fb5fb85 100644 --- a/Frontend/patient_manager/lib/pages/patientAccessReview.dart +++ b/Frontend/patient_manager/lib/pages/patientAccessReview.dart @@ -267,7 +267,10 @@ class _PatientAccessRequestState extends State { final screenWidth = MediaQuery.of(context).size.width; final screenHeight = MediaQuery.of(context).size.height; return Scaffold( - appBar: const MIHAppBar(barTitle: "Access Reviews"), + appBar: const MIHAppBar( + barTitle: "Access Reviews", + propicFile: null, + ), //drawer: MIHAppDrawer(signedInUser: widget.signedInUser), body: SafeArea(child: viewAccessRequest(screenWidth, screenHeight)), ); diff --git a/Frontend/patient_manager/lib/pages/patientAdd.dart b/Frontend/patient_manager/lib/pages/patientAdd.dart index 55af3cac..55db5588 100644 --- a/Frontend/patient_manager/lib/pages/patientAdd.dart +++ b/Frontend/patient_manager/lib/pages/patientAdd.dart @@ -343,7 +343,10 @@ class _AddPatientState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: const MIHAppBar(barTitle: "Add Patient"), + appBar: const MIHAppBar( + barTitle: "Add Patient", + propicFile: null, + ), //drawer: MIHAppDrawer(signedInUser: widget.signedInUser), body: SafeArea( child: KeyboardListener( diff --git a/Frontend/patient_manager/lib/pages/patientEdit.dart b/Frontend/patient_manager/lib/pages/patientEdit.dart index 7118de90..249f215a 100644 --- a/Frontend/patient_manager/lib/pages/patientEdit.dart +++ b/Frontend/patient_manager/lib/pages/patientEdit.dart @@ -608,7 +608,10 @@ class _EditPatientState extends State { }); return Scaffold( - appBar: const MIHAppBar(barTitle: "Edit Patient"), + appBar: const MIHAppBar( + barTitle: "Edit Patient", + propicFile: null, + ), body: SafeArea( child: KeyboardListener( focusNode: _focusNode, diff --git a/Frontend/patient_manager/lib/pages/patientManager.dart b/Frontend/patient_manager/lib/pages/patientManager.dart index 336a801e..d507e145 100644 --- a/Frontend/patient_manager/lib/pages/patientManager.dart +++ b/Frontend/patient_manager/lib/pages/patientManager.dart @@ -478,7 +478,10 @@ class _PatientManagerState extends State { final screenWidth = MediaQuery.of(context).size.width; final screenHeight = MediaQuery.of(context).size.height; return Scaffold( - appBar: const MIHAppBar(barTitle: "Patient Manager"), + appBar: const MIHAppBar( + barTitle: "Patient Manager", + propicFile: null, + ), //drawer: MIHAppDrawer(signedInUser: widget.arguments.signedInUser), //floatingActionButtonLocation: FloatingActionButtonLocation., // floatingActionButton: FloatingActionButton.extended( diff --git a/Frontend/patient_manager/lib/pages/patientView.dart b/Frontend/patient_manager/lib/pages/patientView.dart index 6adfa1e8..351371a7 100644 --- a/Frontend/patient_manager/lib/pages/patientView.dart +++ b/Frontend/patient_manager/lib/pages/patientView.dart @@ -96,7 +96,10 @@ class _PatientViewState extends State { // loadImage(); // var logo = MzanziInnovationHub.of(context)!.theme.logoImage(); return Scaffold( - appBar: const MIHAppBar(barTitle: "Patient Profile"), + appBar: const MIHAppBar( + barTitle: "Patient Profile", + propicFile: null, + ), //drawer: showDrawer(), body: SafeArea( child: SingleChildScrollView( diff --git a/Frontend/patient_manager/lib/pages/profileBusinessAdd.dart b/Frontend/patient_manager/lib/pages/profileBusinessAdd.dart index 243666de..ca696b48 100644 --- a/Frontend/patient_manager/lib/pages/profileBusinessAdd.dart +++ b/Frontend/patient_manager/lib/pages/profileBusinessAdd.dart @@ -229,7 +229,10 @@ class _ProfileBusinessAddState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: const MIHAppBar(barTitle: "Add Business"), + appBar: const MIHAppBar( + barTitle: "Add Business", + propicFile: null, + ), //drawer: MIHAppDrawer(signedInUser: widget.signedInUser), body: SafeArea( child: KeyboardListener( diff --git a/Frontend/patient_manager/lib/pages/profileBusinessUpdate.dart b/Frontend/patient_manager/lib/pages/profileBusinessUpdate.dart index 57877b9d..234c5f40 100644 --- a/Frontend/patient_manager/lib/pages/profileBusinessUpdate.dart +++ b/Frontend/patient_manager/lib/pages/profileBusinessUpdate.dart @@ -312,7 +312,10 @@ class _ProfileBusinessUpdateState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: const MIHAppBar(barTitle: "Business Profile"), + appBar: const MIHAppBar( + barTitle: "Business Profile", + propicFile: null, + ), //drawer: MIHAppDrawer(signedInUser: widget.arguments.signedInUser), body: SafeArea( child: KeyboardListener( diff --git a/Frontend/patient_manager/lib/pages/profileUserUpdate.dart b/Frontend/patient_manager/lib/pages/profileUserUpdate.dart index 0579f5b9..84157389 100644 --- a/Frontend/patient_manager/lib/pages/profileUserUpdate.dart +++ b/Frontend/patient_manager/lib/pages/profileUserUpdate.dart @@ -3,11 +3,9 @@ import 'dart:convert'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:gif/gif.dart'; import 'package:patient_manager/components/inputsAndButtons/mihFileInput.dart'; import 'package:patient_manager/components/mihAppBar.dart'; import 'package:patient_manager/components/popUpMessages/mihLoadingCircle.dart'; -// import 'package:patient_manager/components/mihAppDrawer.dart'; import 'package:patient_manager/components/popUpMessages/mihErrorMessage.dart'; import 'package:patient_manager/components/popUpMessages/mihSuccessMessage.dart'; import 'package:patient_manager/components/inputsAndButtons/mihTextInput.dart'; @@ -41,7 +39,6 @@ class _ProfileUserUpdateState extends State { late Future proPicUrl; late bool businessUser; final FocusNode _focusNode = FocusNode(); - late final GifController _controller; late String oldProPicName; @@ -231,7 +228,6 @@ class _ProfileUserUpdateState extends State { @override void dispose() { - _controller.dispose(); proPicController.dispose(); usernameController.dispose(); fnameController.dispose(); @@ -262,7 +258,10 @@ class _ProfileUserUpdateState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: const MIHAppBar(barTitle: "Update Profile"), + appBar: const MIHAppBar( + barTitle: "Update Profile", + propicFile: null, + ), //drawer: MIHAppDrawer(signedInUser: widget.signedInUser), body: SafeArea( child: Padding(