QOL: only get user data if user is null

This commit is contained in:
2025-12-09 11:46:16 +02:00
parent 7c59e2a5c8
commit 07360dd308
14 changed files with 103 additions and 213 deletions

View File

@@ -3,11 +3,6 @@ import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
import "package:universal_html/html.dart" as html;
class MihTheme {
// late int _mainColor;
// late int _secondColor;
//late int _errColor;
//late int _succColor;
// late int _mesColor;
late String mode;
late String screenType;
late AssetImage loading;
@@ -15,34 +10,14 @@ class MihTheme {
late TargetPlatform platform;
bool kIsWeb = const bool.fromEnvironment('dart.library.js_util');
String latestVersion = "1.2.5";
// Options:-
// f3f9d2 = Cream
// f0f0c9 = cream2
// caffd0 = light green
// B0F2B4 = light grean 2 *
// 85bda6 = light green 3
// 70f8ba = green
// F7F3EA = white
// a63446 = red
//747474
MihTheme() {
mode = "Dark";
//_errColor = 0xffD87E8B;
//_succColor = 0xffB0F2B4;
//_mesColor = 0xffc8c8c8d9;
}
ThemeData getData(bool bool) {
return ThemeData(
fontFamily: 'Segoe UI',
scaffoldBackgroundColor: MihColors.getPrimaryColor(mode == "Dark"),
// pageTransitionsTheme: PageTransitionsTheme(
// builders: Map<TargetPlatform, PageTransitionsBuilder>.fromIterable(
// TargetPlatform.values,
// value: (dynamic _) => const FadeUpwardsPageTransitionsBuilder(),
// ),
// ),
colorScheme: ColorScheme(
brightness: getBritness(),
primary: MihColors.getSecondaryColor(mode == "Dark"),
@@ -77,7 +52,6 @@ class MihTheme {
drawerTheme: DrawerThemeData(
backgroundColor: MihColors.getPrimaryColor(mode == "Dark"),
),
// Text selection / cursor color
textSelectionTheme: TextSelectionThemeData(
cursorColor: MihColors.getPrimaryColor(mode == "Dark"),
selectionColor:
@@ -113,48 +87,10 @@ class MihTheme {
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
triggerMode: TooltipTriggerMode.longPress,
),
// // Input decoration (text fields) theme
// inputDecorationTheme: InputDecorationTheme(
// filled: true,
// fillColor: mode == "Dark"
// ? MihColors.getPrimaryColor(true).withOpacity(0.06)
// : MihColors.getPrimaryColor(false).withOpacity(0.03),
// contentPadding:
// const EdgeInsets.symmetric(horizontal: 12, vertical: 10),
// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(8),
// borderSide:
// BorderSide(color: MihColors.getSecondaryColor(mode == "Dark")),
// ),
// enabledBorder: OutlineInputBorder(
// borderRadius: BorderRadius.circular(8),
// borderSide: BorderSide(
// color:
// MihColors.getSecondaryColor(mode == "Dark").withOpacity(0.6)),
// ),
// focusedBorder: OutlineInputBorder(
// borderRadius: BorderRadius.circular(8),
// borderSide: BorderSide(
// color: MihColors.getSecondaryColor(mode == "Dark"), width: 2),
// ),
// hintStyle: TextStyle(
// color:
// MihColors.getSecondaryColor(mode == "Dark").withOpacity(0.7)),
// labelStyle:
// TextStyle(color: MihColors.getSecondaryColor(mode == "Dark")),
// errorStyle: TextStyle(color: MihColors.getRedColor(mode == "Dark")),
// ),
);
}
String getPlatform() {
// if (isPwa()) {
// if (platform == TargetPlatform.android) {
// return "Android";
// } else if (platform == TargetPlatform.iOS) {
// return "iOS";
// }
// } else
if (kIsWeb) {
return "Web";
} else if (!kIsWeb) {
@@ -199,100 +135,6 @@ class MihTheme {
}
}
// Color messageTextColor() {
// if (mode == "Dark") {
// _mesColor = 0XFFc8c8c8;
// } else {
// _mesColor = 0XFF747474;
// }
// return Color(_mesColor);
// }
// Color errorColor() {
// if (mode == "Dark") {
// return const Color(0xffD87E8B);
// } else {
// return const Color(0xffbb3d4f);
// }
// //return Color(_errColor);
// }
// Color highlightColor() {
// if (mode == "Dark") {
// return const Color(0XFF9bc7fa);
// } else {
// return const Color(0XFF354866);
// }
// }
// Color successColor() {
// if (mode == "Dark") {
// return const Color(0xffB0F2B4);
// } else {
// return const Color(0xff56a95b);
// }
// }
// AssetImage loadingImage() {
// if (mode == "Dark") {
// loading = const AssetImage(
// 'lib/mih_package_components/assets/images/loading_light.gif',
// );
// } else {
// loading = const AssetImage(
// 'lib/mih_package_components/assets/images/loading_dark.gif',
// );
// }
// return loading;
// }
// AssetImage altLoadingImage() {
// if (mode == "Dark") {
// loading = const AssetImage(
// 'lib/mih_package_components/assets/images/loading_dark.gif',
// );
// } else {
// loading = const AssetImage(
// 'lib/mih_package_components/assets/images/loading_light.gif',
// );
// }
// return loading;
// }
// String loadingImageLocation() {
// if (mode == "Dark") {
// loadingAssetText =
// 'lib/mih_package_components/assets/images/loading_light.gif';
// } else {
// loadingAssetText =
// 'lib/mih_package_components/assets/images/loading_dark.gif';
// }
// return loadingAssetText;
// }
// String altLoadingImageLocation() {
// if (mode == "Dark") {
// loadingAssetText =
// 'lib/mih_package_components/assets/images/loading_dark.gif';
// } else {
// loadingAssetText =
// 'lib/mih_package_components/assets/images/loading_light.gif';
// }
// return loadingAssetText;
// }
// AssetImage aiLogoImage() {
// if (mode == "Dark") {
// return const AssetImage(
// 'lib/mih_package_components/assets/images/mzansi_ai-dark.png',
// );
// } else {
// return const AssetImage(
// 'lib/mih_package_components/assets/images/mzansi_ai-light.png',
// );
// }
// }
void setScreenType(double width) {
if (width <= 800) {
screenType = "mobile";
@@ -300,22 +142,4 @@ class MihTheme {
screenType = "desktop";
}
}
// Color MihColors.getPrimaryColor(mode == "Dark") {
// if (mode == "Dark") {
// _mainColor = 0XFF3A4454;
// } else {
// _mainColor = 0XFFbedcfe;
// }
// return Color(_mainColor);
// }
// Color MihColors.getSecondaryColor(mode == "Dark") {
// if (mode == "Dark") {
// _secondColor = 0XFFbedcfe;
// } else {
// _secondColor = 0XFF3A4454;
// }
// return Color(_secondColor);
// }
}

View File

@@ -31,9 +31,11 @@ class _PackageTestState extends State<PackageTest> {
});
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
}
setState(() {
_isLoadingInitialData = false;
});

View File

@@ -29,9 +29,11 @@ class _MihAccessState extends State<MihAccess> {
});
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
}
setState(() {
_isLoadingInitialData = false;
});

View File

@@ -29,9 +29,11 @@ class _MzansiCalendarState extends State<MzansiCalendar> {
});
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
}
setState(() {
_isLoadingInitialData = false;
});

View File

@@ -43,9 +43,12 @@ class _MihHomeState extends State<MihHome> {
});
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
}
if (mounted) {
setState(() {
_isLoadingInitialData = false;

View File

@@ -36,9 +36,11 @@ class _MihMineSweeperState extends State<MihMineSweeper> {
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
MihBannerAdProvider bannerAdProvider = context.read<MihBannerAdProvider>();
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
}
bannerAdProvider.loadBannerAd();
setState(() {
_isLoadingInitialData = false;

View File

@@ -29,9 +29,11 @@ class _MzansiAiState extends State<MzansiAi> {
});
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
}
setState(() {
_isLoadingInitialData = false;
});

View File

@@ -1,3 +1,5 @@
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_ai_toolkit/flutter_ai_toolkit.dart';
@@ -121,6 +123,26 @@ class _MihAiChatState extends State<MihAiChat> with WidgetsBindingObserver {
}
}
void saveHistory(MzansiAiProvider aiProvider) {
final history = aiProvider.ollamaProvider.history.toList();
String jsonHistory = '{"conversation_id":"1234-asdf-5678-qwert",\n';
// jsonHistory += '"app_id":"${}"\n';
jsonHistory += '"messages":[\n';
KenLogger.success("History Length: ${history.length}");
for (int i = 0; i != history.length; i++) {
final map = history[i].toJson();
final json = JsonEncoder.withIndent(' ').convert(map);
jsonHistory += json;
if (i != history.length - 1) {
KenLogger.success("i: $i");
jsonHistory += ",";
}
jsonHistory += "\n";
}
jsonHistory += ']}';
debugPrint("History: $jsonHistory");
}
void stopTTS(MzansiAiProvider aiProvider) {
_flutterTts.stop();
aiProvider.setTTSstate(false);
@@ -240,6 +262,26 @@ class _MihAiChatState extends State<MihAiChat> with WidgetsBindingObserver {
"What are the features of MIH?"
],
),
Positioned(
top: 10,
left: 10,
child: MihButton(
width: 200,
height: 30,
onPressed: () {
saveHistory(aiProvider);
},
buttonColor: MihColors.getGreenColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
child: Text(
"View History as json",
style: TextStyle(
color: MihColors.getPrimaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
),
),
),
),
if (hasHistory && lastMessage != null)
Positioned(
bottom: 80,

View File

@@ -35,9 +35,11 @@ class _MzansiDirectoryState extends State<MzansiDirectory> {
});
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
}
setState(() {
_isLoadingInitialData = false;
});

View File

@@ -37,9 +37,11 @@ class _BusinesProfileState extends State<BusinesProfile> {
});
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
}
await MihBusinessEmployeeServices()
.fetchEmployees(mzansiProfileProvider, context);
setState(() {

View File

@@ -30,9 +30,11 @@ class _MzansiProfileState extends State<MzansiProfile> {
});
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
}
setState(() {
_isLoadingInitialData = false;
});

View File

@@ -33,9 +33,11 @@ class _MihWalletState extends State<MihWallet> {
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
MzansiWalletProvider walletProvider = context.read<MzansiWalletProvider>();
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
}
await setLoyaltyCards(mzansiProfileProvider, walletProvider);
await setFavouritesCards(mzansiProfileProvider, walletProvider);
setState(() {

View File

@@ -40,9 +40,11 @@ class _PatManagerState extends State<PatManager> {
context.read<PatientManagerProvider>();
MihCalendarProvider mihCalendarProvider =
context.read<MihCalendarProvider>();
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataWithBusinessesData(
mzansiProfileProvider,
);
}
patientManagerProvider.setPersonalMode(false);
if (mzansiProfileProvider.business != null) {
await MihMzansiCalendarApis.getBusinessAppointments(

View File

@@ -42,10 +42,11 @@ class _PatientProfileState extends State<PatientProfile> {
context.read<MzansiProfileProvider>();
PatientManagerProvider patientManagerProvider =
context.read<PatientManagerProvider>();
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
if (mzansiProfileProvider.user == null) {
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
}
if (patientManagerProvider.selectedPatient == null) {
await MihPatientServices().getPatientDetails(
mzansiProfileProvider.user!.app_id, patientManagerProvider);