Compare commits

..

5 commits

Author SHA1 Message Date
ce078eb4f7 Merge pull request 'v.1.3.0 CONTRIBUTION.md update' (#24) from v.1.3.0 into main
Reviewed-on: #24
2026-06-26 09:49:54 +02:00
yaso
1d3d2b0f10 update CONTRIBUTION.md file 2026-06-26 09:45:51 +02:00
yaso
4060702a10 add CONTRIBUTION.md file 2026-06-26 09:43:18 +02:00
4bc0a85c0c Merge pull request 'v.1.3.0' (#23) from v.1.3.0 into main
Reviewed-on: #23
2026-06-26 09:21:26 +02:00
yaso
8d2462464e remove secret keys from file 2026-06-26 09:19:57 +02:00
8 changed files with 101 additions and 94 deletions

66
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,66 @@
# Contributing to MIH Project
Thank you for your interest in contributing to the MIH Project! To help us maintain a clean, stable, and secure codebase, please review and follow these contribution guidelines.
---
## 1. Important Repository Notice (GitHub Users)
> ⚠️ **CRITICAL NOTE:** If you are viewing or found this repository on GitHub, please be aware that this is a **read-only mirror** used strictly for backup purposes.
>
> **No Pull Requests (PRs) or Issues will be accepted or reviewed on GitHub.**
To contribute, you must use our active development repository hosted on **MIH Git**:
🔗 [Active MIH Git Repo](https://git.mzansi-innovation-hub.co.za/yaso_meth/mih-project)
Please conduct all development, issue tracking, and collaboration on the MIH Git platform.
---
## 2. Branching Strategy & Pull/Merge Request Rules
To ensure production stability, we enforce strict branching rules. Please ensure your contributions align with the following structure:
* **Do NOT target the `main` branch:** Pull or Merge Requests made directly against the `main` branch will be automatically rejected or closed.
* **Target the Latest Version Branch:** All bug fixes, features, and documentation updates must be made against the active version branch (e.g., branch naming convention follows `v.1.4.0` or later).
---
## 3. Recommended Workflow (Fork & Pull)
We use a **Fork-and-Pull** model to manage contributions safely and keep the main repository organized. Please follow these steps to submit your changes:
1. **Fork the Repository:** Log into **MIH Git** and click the **Fork** button on the main [mih-project](https://git.mzansi-innovation-hub.co.za/yaso_meth/mih-project) repository to create a copy under your personal account.
2. **Clone Your Fork:** Clone your personal fork locally to your machine:
```bash
git clone --depth 1 https://git.mzansi-innovation-hub.co.za/YOUR_USERNAME/mih-project.git
cd mih-project
```
3. **Checkout the Active Version Branch:** Fetch the latest branches and switch to the current active version branch (e.g., `v.1.4.0`):
```bash
git fetch origin
git checkout v.1.4.0
```
4. **Create a Feature or Fix Branch:** Create a dedicated branch for your changes stemming directly from that version branch:
```bash
git checkout -b feature/your-feature-name
```
or
```bash
git checkout -b fix/your-fix-name
```
5. **Commit and Push:** Make your changes, commit them with clear descriptive messages, and push the feature branch to your fork:
```bash
git push origin feature/your-feature-name
```
or
```bash
git push origin fix/your-fix-name
```
6. **Open a Pull/Merge Request:** Go to the main repository on MIH Git. You will see a prompt to open a new Pull/Merge Request. Ensure that:
* The **Source (Head)** is your fork's feature branch (`YOUR_USERNAME/mih-project:feature/your-feature-name`).
* The **Target (Base)** is the main repository's active version branch (`yaso_meth/mih-project:v.1.4.0`).
---
Thank you for your time and effort in helping build and improve the MIH Project!

View file

@ -1,7 +1,3 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

View file

@ -30,10 +30,6 @@ class DefaultFirebaseOptions {
return windows; return windows;
case TargetPlatform.linux: case TargetPlatform.linux:
return web; return web;
// throw UnsupportedError(
// 'DefaultFirebaseOptions have not been configured for linux - '
// 'you can reconfigure this by running the FlutterFire CLI again.',
// );
default: default:
throw UnsupportedError( throw UnsupportedError(
'DefaultFirebaseOptions are not supported for this platform.', 'DefaultFirebaseOptions are not supported for this platform.',
@ -42,48 +38,48 @@ class DefaultFirebaseOptions {
} }
static const FirebaseOptions web = FirebaseOptions( static const FirebaseOptions web = FirebaseOptions(
apiKey: 'AIzaSyDN-f4sJ4n_fyvrLR193_IIkTsccRVUQxw', apiKey: 'YOUR_WEB_API_KEY',
appId: '1:33677883408:web:47b8021df7fcacd2223295', appId: 'YOUR_WEB_APP_ID',
messagingSenderId: '33677883408', messagingSenderId: 'YOUR_MESSAGING_SENDER_ID',
projectId: 'mzansi-innovation-hub', projectId: 'YOUR_PROJECT_ID',
authDomain: 'mzansi-innovation-hub.firebaseapp.com', authDomain: 'YOUR_AUTH_DOMAIN',
storageBucket: 'mzansi-innovation-hub.firebasestorage.app', storageBucket: 'YOUR_STORAGE_BUCKET',
measurementId: 'G-Y3B5E3HCJY', measurementId: 'YOUR_MEASUREMENT_ID',
); );
static const FirebaseOptions android = FirebaseOptions( static const FirebaseOptions android = FirebaseOptions(
apiKey: 'AIzaSyBUkjWdu9YcgiF-e9TC5hoiEoCjPyjA5hU', apiKey: 'YOUR_ANDROID_API_KEY',
appId: '1:33677883408:android:ebd8565991c56257223295', appId: 'YOUR_ANDROID_APP_ID',
messagingSenderId: '33677883408', messagingSenderId: 'YOUR_MESSAGING_SENDER_ID',
projectId: 'mzansi-innovation-hub', projectId: 'YOUR_PROJECT_ID',
storageBucket: 'mzansi-innovation-hub.firebasestorage.app', storageBucket: 'YOUR_STORAGE_BUCKET',
); );
static const FirebaseOptions ios = FirebaseOptions( static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyDRqY5I5CXjEtWkUX1YUfKT8IUlln9PUuY', apiKey: 'YOUR_IOS_API_KEY',
appId: '1:33677883408:ios:2048dac086428716223295', appId: 'YOUR_IOS_APP_ID',
messagingSenderId: '33677883408', messagingSenderId: 'YOUR_MESSAGING_SENDER_ID',
projectId: 'mzansi-innovation-hub', projectId: 'YOUR_PROJECT_ID',
storageBucket: 'mzansi-innovation-hub.firebasestorage.app', storageBucket: 'YOUR_STORAGE_BUCKET',
iosBundleId: 'za.co.mzansiinnovationhub.mih', iosBundleId: 'YOUR_IOS_BUNDLE_ID',
); );
static const FirebaseOptions macos = FirebaseOptions( static const FirebaseOptions macos = FirebaseOptions(
apiKey: 'AIzaSyDRqY5I5CXjEtWkUX1YUfKT8IUlln9PUuY', apiKey: 'YOUR_MACOS_API_KEY',
appId: '1:33677883408:ios:e2db11a42fc3452e223295', appId: 'YOUR_MACOS_APP_ID',
messagingSenderId: '33677883408', messagingSenderId: 'YOUR_MESSAGING_SENDER_ID',
projectId: 'mzansi-innovation-hub', projectId: 'YOUR_PROJECT_ID',
storageBucket: 'mzansi-innovation-hub.firebasestorage.app', storageBucket: 'YOUR_STORAGE_BUCKET',
iosBundleId: 'com.example.patientManager', iosBundleId: 'YOUR_MACOS_BUNDLE_ID',
); );
static const FirebaseOptions windows = FirebaseOptions( static const FirebaseOptions windows = FirebaseOptions(
apiKey: 'AIzaSyDN-f4sJ4n_fyvrLR193_IIkTsccRVUQxw', apiKey: 'YOUR_WINDOWS_API_KEY',
appId: '1:33677883408:web:e08becaef3261c59223295', appId: 'YOUR_WINDOWS_APP_ID',
messagingSenderId: '33677883408', messagingSenderId: 'YOUR_MESSAGING_SENDER_ID',
projectId: 'mzansi-innovation-hub', projectId: 'YOUR_PROJECT_ID',
authDomain: 'mzansi-innovation-hub.firebaseapp.com', authDomain: 'YOUR_AUTH_DOMAIN',
storageBucket: 'mzansi-innovation-hub.firebasestorage.app', storageBucket: 'YOUR_STORAGE_BUCKET',
measurementId: 'G-FKKENBX8TT', measurementId: 'YOUR_MEASUREMENT_ID',
); );
} }

View file

@ -42,6 +42,7 @@ void main() async {
debugPrint('APP INSTALLED!'); debugPrint('APP INSTALLED!');
}); });
final GoRouter appRouter = MihGoRouter().mihRouter; final GoRouter appRouter = MihGoRouter().mihRouter;
FlutterNativeSplash.remove();
runApp(MzansiInnovationHub( runApp(MzansiInnovationHub(
router: appRouter, router: appRouter,
)); ));

View file

@ -33,7 +33,8 @@ void main() async {
debugPrint('APP INSTALLED!'); debugPrint('APP INSTALLED!');
}); });
final GoRouter appRouter = MihGoRouter().mihRouter; final GoRouter appRouter = MihGoRouter().mihRouter;
(MzansiInnovationHub( FlutterNativeSplash.remove();
runApp(MzansiInnovationHub(
router: appRouter, router: appRouter,
)); ));
} }

View file

@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:mzansi_innovation_hub/mih_packages/mih_file_viewer/components/mih_print_prevew.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_file_viewer/components/mih_print_prevew.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
@ -86,7 +85,6 @@ class MihGoRouter {
]; ];
KenLogger.success( KenLogger.success(
"Redirect Check: ${state.fullPath}, isUserSignedIn: $isUserSignedIn"); "Redirect Check: ${state.fullPath}, isUserSignedIn: $isUserSignedIn");
FlutterNativeSplash.remove();
if (!isUserSignedIn && !unauthenticatedPaths.contains(state.fullPath)) { if (!isUserSignedIn && !unauthenticatedPaths.contains(state.fullPath)) {
return MihGoRouterPaths.mihAuthentication; return MihGoRouterPaths.mihAuthentication;
} }

View file

@ -5,7 +5,6 @@ import 'package:file_picker/file_picker.dart';
import 'package:file_saver/file_saver.dart'; import 'package:file_saver/file_saver.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:ken_logger/ken_logger.dart'; import 'package:ken_logger/ken_logger.dart';
@ -404,30 +403,6 @@ class _MihBusinessQrCodeState extends State<MihBusinessQrCode> {
); );
}, },
), ),
SpeedDialChild(
child: Icon(
Icons.copy_rounded,
color: MihColors.primary(),
),
label: "Copy Link",
labelBackgroundColor: MihColors.green(),
labelStyle: TextStyle(
color: MihColors.primary(),
fontWeight: FontWeight.bold,
),
backgroundColor: MihColors.green(),
onTap: () async {
await Clipboard.setData(
ClipboardData(text: "$qrCodedata${business.business_id}"),
);
if (!context.mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
MihSnackBar(
child: Text("Link Copied!"),
),
);
},
),
]), ]),
) )
], ],

View file

@ -4,7 +4,6 @@ import 'package:file_picker/file_picker.dart';
import 'package:file_saver/file_saver.dart'; import 'package:file_saver/file_saver.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:ken_logger/ken_logger.dart'; import 'package:ken_logger/ken_logger.dart';
@ -403,31 +402,6 @@ class _MihPersonalQrCodeState extends State<MihPersonalQrCode> {
); );
}, },
), ),
SpeedDialChild(
child: Icon(
Icons.copy_rounded,
color: MihColors.primary(),
),
label: "Copy Link",
labelBackgroundColor: MihColors.green(),
labelStyle: TextStyle(
color: MihColors.primary(),
fontWeight: FontWeight.bold,
),
backgroundColor: MihColors.green(),
onTap: () async {
await Clipboard.setData(
ClipboardData(
text: "$_qrCodedata${user.username.toLowerCase()}"),
);
if (!context.mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
MihSnackBar(
child: Text("Link Copied!"),
),
);
},
),
]), ]),
) )
], ],