Compare commits

..

279 Commits

Author SHA1 Message Date
tahaalam d2a0ae1cfc translation context added 1 week ago
tahaalam f84d5c6769 Merge remote-tracking branch 'origin/master' into watch_integration
# Conflicts:
#	lib/splashPage.dart
1 week ago
tahaalam 50d78551c2 warning dialog displayed to user if the watch intented is not currently implemented 2 weeks ago
Haroon6138 24fa8e18f3 Merge pull request 'dev_sultan' (#197) from dev_sultan into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/197
2 weeks ago
tahaalam dda4dbeba9 merge issue resolution some import were missing from master. 2 weeks ago
Sultan khan f51e37db55 Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan
* 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New:
  updates
  updates
  lab test description update

# Conflicts:
#	lib/core/api/api_client.dart
#	lib/presentation/authentication/login.dart
2 weeks ago
Sultan khan 4f303d8496 other country login done. 2 weeks ago
tahaalam 151fcf23d1 Merge remote-tracking branch 'origin/master' into watch_integration
# Conflicts:
#	android/app/build.gradle.kts
#	android/app/src/main/res/mipmap-hdpi/ic_launcher.png
#	android/app/src/main/res/mipmap-mdpi/ic_launcher.png
#	android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
#	android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
#	android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
#	android/app/src/main2/res/mipmap-hdpi/ic_launcher.png
#	android/app/src/main2/res/mipmap-mdpi/ic_launcher.png
#	android/app/src/main2/res/mipmap-xhdpi/ic_launcher.png
#	android/app/src/main2/res/mipmap-xxhdpi/ic_launcher.png
#	android/app/src/main2/res/mipmap-xxxhdpi/ic_launcher.png
#	android/build/reports/problems/problems-report.html
#	assets/langs/ar-SA.json
#	assets/langs/en-US.json
#	lib/generated/locale_keys.g.dart
#	lib/theme/colors.dart
#	package/device_calendar_plus/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
#	package/device_calendar_plus/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
#	package/device_calendar_plus/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
#	package/device_calendar_plus/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
#	package/device_calendar_plus/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
#	pubspec.yaml
2 weeks ago
Haroon6138 ff75531f26 Merge pull request 'haroon_dev' (#196) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/196
2 weeks ago
haroon amjad 114e9e7929 Merge branch 'master' into haroon_dev 2 weeks ago
haroon amjad 47b50e35a1 updates 2 weeks ago
Sultan khan 80adf1bd2f Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan
* 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New:
  updates & fixes
  updates
  updates
  Dark mode persistence added in the app
  Dark mode enabled
  Updates & fixes
  updates
  updates
  updates
2 weeks ago
haroon amjad 29447cc9fa updates 2 weeks ago
haroon amjad 5b04a5a3ea lab test description update 2 weeks ago
Haroon6138 cdbba6f270 Merge pull request 'haroon_dev' (#195) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/195
2 weeks ago
haroon amjad 6e71aa7f13 updates & fixes 2 weeks ago
haroon amjad fdeeed10d6 updates 2 weeks ago
Haroon Amjad 8de8039096 updates 3 weeks ago
Haroon Amjad 040ff6a80d Dark mode persistence added in the app 3 weeks ago
haroon amjad f46b3f745f Dark mode enabled 3 weeks ago
Sultan khan acfab432cc multiple submit button commented 3 weeks ago
haroon amjad 074c060e36 Updates & fixes 3 weeks ago
haroon amjad b4a7508f7c updates 3 weeks ago
Sultan khan d6eb6970af Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan
* 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New: (29 commits)
  calender package added
  Android zoom fixes
  updates
  updates
  wallet page fix
  updates
  fixed Ar and En files
  Insurance approvals page fixes
  fixed Ar En files
  Added immediate patient insurance update API
  updates
  sickleave & medical report fixes
  test description issue in lab results fixed
  Updates & fixes, Filter issues fixed for lab & rad
  Ancillary order fixes
  NPHIES Eligibility checks implemented
  updates
  Android package name updated to new package details
  Updates & fixes
  App update page implemented
  ...
3 weeks ago
haroon amjad 961a1f5b03 updates 3 weeks ago
haroon amjad 68ff91561f Merge branch 'master' into haroon_dev 3 weeks ago
haroon amjad 631fabad23 updates 3 weeks ago
Haroon6138 7b2e3a5a54 Merge pull request 'calender package added' (#194) from calender_pacakge_changes into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/194
3 weeks ago
tahaalam 71ac91a076 calender package added 3 weeks ago
Haroon6138 558381b797 Merge pull request 'haroon_dev' (#192) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/192
3 weeks ago
haroon amjad f5aa12a04b Android zoom fixes 3 weeks ago
haroon amjad b75f0c7ee4 updates 3 weeks ago
haroon amjad 79b23584db updates 4 weeks ago
haroon amjad 295709cbc2 Merge branch 'master' into haroon_dev 4 weeks ago
haroon amjad 1286455f8c wallet page fix 4 weeks ago
Haroon6138 8878558f12 Merge pull request 'fatima' (#191) from fatima into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/191
4 weeks ago
haroon amjad 5e16169867 updates 4 weeks ago
Fatimah.Alshammari ee358259f5 Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	assets/langs/ar-SA.json
#	assets/langs/en-US.json
4 weeks ago
Fatimah.Alshammari 8368dbd4d9 fixed Ar and En files 4 weeks ago
Haroon6138 faf00b88ef Merge pull request 'haroon_dev' (#190) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/190
1 month ago
haroon amjad cf27430e29 Merge branch 'master' into haroon_dev 1 month ago
haroon amjad dffed5df6b Insurance approvals page fixes 1 month ago
Fatimah.Alshammari cf3c14281c fixed Ar En files 1 month ago
Haroon Amjad d9013a1dc2 Added immediate patient insurance update API 1 month ago
haroon amjad a25df34f42 updates 1 month ago
haroon amjad 6cc058e86d updates 1 month ago
tahaalam fbe9cd9dff package change activity 1 month ago
haroon amjad 84224ae61b sickleave & medical report fixes 1 month ago
tahaalam 7100283a9d package change activity 1 month ago
tahaalam 3f9046f1e4 Merge remote-tracking branch 'origin/master' into watch_integration
# Conflicts:
#	android/app/src/main/AndroidManifest.xml
#	android/app/src/main/kotlin/com/ejada/hmg/MainActivity.kt
#	assets/langs/ar-SA.json
#	assets/langs/en-US.json
#	ios/Runner.xcodeproj/project.pbxproj
#	lib/core/api_consts.dart
#	lib/generated/locale_keys.g.dart
1 month ago
tahaalam b334f631bd samsung sdk health aar 1 month ago
tahaalam a395d9b93a ios health connect added 1 month ago
Haroon Amjad c2028841c5 test description issue in lab results fixed 1 month ago
tahaalam bfeb3dce4e data integration along with the data representation 1 month ago
haroon amjad dc0e4e5eb6 Updates & fixes, Filter issues fixed for lab & rad 1 month ago
Fatimah.Alshammari 46c8fbf0f6 Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	assets/langs/ar-SA.json
#	lib/generated/locale_keys.g.dart
1 month ago
Haroon6138 658b77aa37 Merge pull request 'haroon_dev' (#188) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/188
1 month ago
haroon amjad 2a819a2d97 Ancillary order fixes 1 month ago
haroon amjad 9413e54d3a NPHIES Eligibility checks implemented 1 month ago
Sultan khan b91850d388 Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan
* 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New: (67 commits)
  added women support in symptoms checker module.
  family fil fixes
  PMA-1100
  updates
  updates
  Updates & fixes
  updates
  Ai Analysis & PMA-(1078,1079)
  update
  updates
  arabic fixes
  arabic fixes
  Vital sign data connected to Symptom checker
  Date format changed to en-US
  confirm button added
  iOS BundleID changes
  Services price list implemented
  Indoor navigation implemented
  updates & fixes
  JIRA bug fixes & updates
  ...

# Conflicts:
#	lib/presentation/authentication/register_step2.dart
#	lib/presentation/vital_sign/vital_sign_page.dart
1 month ago
Haroon Amjad 105ab2326a updates 1 month ago
haroon amjad ec506869cc Android package name updated to new package details 1 month ago
haroon amjad 05b6d02e4c Updates & fixes 1 month ago
tahaalam 5ea70397e2 samsung integration addded 1 month ago
Sultan khan c416d84a3a register insurance in progress. 1 month ago
haroon amjad 8309f311e6 App update page implemented 1 month ago
haroon amjad c6ee3c453f contact us bottom sheet icons changed 1 month ago
haroon amjad 4b710523e8 Feedback status implemented 1 month ago
haroon amjad e1788f1187 Merge branch 'master' into haroon_dev 1 month ago
Haroon6138 aab1f6411b Merge pull request 'Female support in symptoms checker module and few bug fixes (faiz_dev)' (#187) from faiz_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/187
1 month ago
faizatflutter afae41c410 Merge branch 'master' into faiz_dev 1 month ago
faizatflutter b44ae1e838 added women support in symptoms checker module. 1 month ago
haroon amjad 2be65cba51 Inactive Insurance case handled 1 month ago
haroon amjad 530b87282f updates & fixes 1 month ago
haroon amjad 2e1f4e87e0 AI Lab Analysis updates 1 month ago
haroon amjad 87e0c5b6eb Merge branch 'master' into haroon_dev 1 month ago
Haroon6138 2fb787c31f Merge pull request 'dev_aamir' (#186) from dev_aamir into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/186
1 month ago
haroon amjad 1575a8e308 Feedback status implementation contd. 1 month ago
aamir-csol 23e2809fdb Merge branch 'master' into dev_aamir 1 month ago
aamir-csol 7296bfb6fc family fil fixes 1 month ago
tahaalam df0b926e59 heart rate sleep data and steps count obtained 1 month ago
haroon amjad 0da4b63d74 Merge branch 'master' into haroon_dev 1 month ago
Haroon6138 2162b8102a Merge pull request 'PMA-1100' (#185) from dev_aamir into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/185
1 month ago
haroon amjad 305b3274c0 Symptoms checker doctor selection implemented 1 month ago
haroon amjad 5015747580 LiveCare changes 1 month ago
aamir-csol c48cb78cd9 PMA-1100 1 month ago
tahaalam 4912f686f9 platform channel added. 1 month ago
Haroon6138 d76bd2a295 Merge pull request 'haroon_dev' (#184) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/184
1 month ago
Haroon Amjad cb44e902a3 Merge branch 'haroon_dev' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into haroon_dev 1 month ago
Haroon Amjad 9b3c172dd1 updates 1 month ago
haroon amjad 20ed54243b updates 1 month ago
haroon amjad 01c21377aa Updates & fixes 1 month ago
tahaalam 183bcce003 merge issue resolution 1 month ago
tahaalam 02398d3bb4 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	assets/langs/ar-SA.json
#	assets/langs/en-US.json
#	ios/Runner.xcodeproj/project.pbxproj
#	lib/generated/locale_keys.g.dart
#	lib/theme/colors.dart
1 month ago
tahaalam d137e1166d watch integration ui added. 1 month ago
Haroon6138 e62df81ba2 Merge pull request 'dev_aamir' (#182) from dev_aamir into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/182
1 month ago
aamir-csol a105d87241 Merge branch 'master' into dev_aamir
# Conflicts:
#	assets/langs/ar-SA.json
#	assets/langs/en-US.json
#	lib/features/authentication/authentication_view_model.dart
#	lib/generated/locale_keys.g.dart
1 month ago
Haroon6138 48718a3406 Merge pull request 'haroon_dev' (#181) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/181
1 month ago
haroon amjad 68f5e64557 updates 1 month ago
aamir-csol 2c7f4ddc48 Ai Analysis & PMA-(1078,1079) 1 month ago
haroon amjad 95b65ed8a5 Merge branch 'haroon_dev' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into haroon_dev
# Conflicts:
#	lib/features/book_appointments/book_appointments_view_model.dart
1 month ago
haroon amjad 102690b2b8 update 1 month ago
haroon amjad c9279e2272 updates 1 month ago
Haroon Amjad 23abbebf9e arabic fixes 1 month ago
Haroon Amjad a4573c8710 arabic fixes 1 month ago
Haroon Amjad 4ce1e912ce Vital sign data connected to Symptom checker 2 months ago
Haroon Amjad eeaa22357f Date format changed to en-US 2 months ago
haroon amjad 000c403f6b confirm button added 2 months ago
Fatimah.Alshammari 47ec43850d Merge branch 'master' into fatima 2 months ago
haroon amjad f09d478a03 iOS BundleID changes 2 months ago
haroon amjad 3c9c3032a5 Services price list implemented 2 months ago
haroon amjad 2ab3e178a2 Indoor navigation implemented 2 months ago
haroon amjad 9ed016ad8b updates & fixes 2 months ago
Haroon6138 a6344d6a81 Merge pull request 'haroon_dev' (#180) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/180
2 months ago
haroon amjad 92e745fe49 Merge branch 'master' into haroon_dev 2 months ago
haroon amjad 3af43dc676 JIRA bug fixes & updates 2 months ago
Fatimah.Alshammari 0d6d23dbbc Merge branch 'master' into fatima 2 months ago
haroon amjad 66ff6ed8b6 Prescription download changes 2 months ago
Haroon6138 478be330df Merge pull request 'haroon_dev' (#179) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/179
2 months ago
haroon amjad 85ccf41d04 Updates & fixes for Habib Wallet, Insurance update, Immediate LiveCare 2 months ago
haroon amjad b309342cdc lab fixes 2 months ago
Haroon6138 ee3dd0b5c7 Merge pull request 'haroon_dev' (#178) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/178
2 months ago
haroon amjad 5c684a6a0d Doctor Rating details implemented 2 months ago
Fatimah.Alshammari f340f4fb8f Merge branch 'master' into fatima
# Conflicts:
#	assets/langs/ar-SA.json
#	lib/generated/locale_keys.g.dart
2 months ago
haroon amjad bafe835ebd Scheduled livecare appointment booking fixes 2 months ago
haroon amjad 8472a45530 updates 2 months ago
Haroon6138 31a7aa907b Merge pull request 'haroon_dev' (#177) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/177
2 months ago
haroon amjad 70a6d90ce3 updates & fixes 2 months ago
haroon amjad 8740178f8c Merge branch 'master' into haroon_dev 2 months ago
haroon amjad cfd0c16738 updates & fixes 2 months ago
Haroon6138 df3b36eb00 Merge pull request 'dev_aamir' (#176) from dev_aamir into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/176
2 months ago
aamir-csol 7014ac397e Merge remote-tracking branch 'origin/master' into dev_aamir
# Conflicts:
#	assets/langs/ar-SA.json
#	assets/langs/en-US.json
#	lib/generated/locale_keys.g.dart
2 months ago
Haroon6138 63cdced84e Merge pull request 'haroon_dev' (#175) from haroon_dev into master
Reviewed-on: #175
2 months ago
Haroon Amjad 49542a9112 updates & fixes 2 months ago
Haroon Amjad 1ae1212733 Merge branch 'master' into haroon_dev 2 months ago
Haroon6138 7f8b2979e7 Merge pull request 'dev_sikander' (#174) from dev_sikander into master
Reviewed-on: #174
2 months ago
Haroon Amjad 537d93915e Zoom SDK fixes 2 months ago
Sikander Saleem f376f430c6 Merge branch 'refs/heads/master' into dev_sikander 2 months ago
Sikander Saleem b9350afead ui improvements 2 months ago
aamir-csol 2c2cb8bb99 family file button fix 2 months ago
aamir-csol 8c7f4afe76 family file button fix 2 months ago
Haroon6138 c50f8d63ef Merge pull request 'haroon_dev' (#171) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/171
2 months ago
Haroon6138 118da8da36 Merge pull request 'Wd: Unware clinic bottom sheet shown on appointment page.' (#170) from unware-clinic-bottomsheet into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/170
2 months ago
haroon amjad 4e6d3d3178 SmartWatch implementation contd. 2 months ago
faizatflutter 9c7cfde5f4 ui improvements 2 months ago
tahaalam f78eb5da67 Wd: Unware clinic bottom sheet shown on appointment page. 2 months ago
Sikander Saleem 6e1eb0d0bb ui improvements 2 months ago
Sikander Saleem 41a4005d41 Merge branch 'refs/heads/master' into dev_sikander 2 months ago
haroon amjad 940ce5ff14 updates 2 months ago
haroon amjad 05e87bbb2e Merge branch 'master' into haroon_dev 2 months ago
haroon amjad ae3ed83dd0 contact us page changes 2 months ago
Haroon6138 245b66150f Merge pull request 'dev_aamir' (#169) from dev_aamir into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/169
2 months ago
aamir-csol 0c2fe81c99 Merge branch 'master' into dev_aamir 2 months ago
aamir-csol bb4719bd87 logout & family file fix & PMA-1047 2 months ago
Fatimah.Alshammari 931e3fa968 Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	assets/langs/ar-SA.json
#	lib/generated/locale_keys.g.dart
2 months ago
Sikander Saleem 6e4d7519fb Merge branch 'refs/heads/master' into dev_sikander
# Conflicts:
#	lib/presentation/home/widgets/habib_wallet_card.dart
2 months ago
Sikander Saleem 2648f304f6 Merge branch 'refs/heads/master' into dev_sikander
# Conflicts:
#	lib/core/app_assets.dart
#	lib/presentation/hmg_services/services_page.dart
#	lib/presentation/home/data/landing_page_data.dart
#	lib/presentation/home/landing_page.dart
#	lib/presentation/home/widgets/habib_wallet_card.dart
#	lib/presentation/home/widgets/small_service_card.dart
#	lib/presentation/lab/lab_orders_page.dart
#	lib/widgets/appbar/collapsing_list_view.dart
2 months ago
Haroon6138 cd4fbb1905 Merge pull request 'updates & fixes' (#168) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/168
2 months ago
haroon amjad b0708d85d9 updates & fixes 2 months ago
Haroon6138 37909feb50 Merge pull request 'haroon_dev' (#167) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/167
2 months ago
haroon amjad 20216cd4ae Merge branch 'master' into haroon_dev 2 months ago
Haroon6138 22c388da23 Merge pull request 'dev_aamir' (#166) from dev_aamir into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/166
2 months ago
aamir-csol 2bbfe1f131 Merge branch 'master' into dev_aamir
# Conflicts:
#	lib/presentation/profile_settings/profile_settings.dart
2 months ago
aamir-csol 8b701255ed logout & family file fix 2 months ago
haroon amjad 7ead6d79e5 updates 2 months ago
haroon amjad 3e9a381ed7 Merge branch 'master' into haroon_dev 2 months ago
Haroon6138 cf7ff4ce1d Merge pull request 'Added Arabic Support for symptoms checker (faiz_dev)' (#165) from faiz_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/165
2 months ago
haroon amjad e4b6360808 Services Page fix 2 months ago
haroon amjad f46f978326 Clinic icons updated 2 months ago
faizatflutter 14f3c6cb81 Added Arabic Support for symptoms checker 2 months ago
haroon amjad 10a5a6f558 Ask Doctor implemented 2 months ago
Haroon6138 e8ca8b42bf Merge pull request 'haroon_dev' (#164) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/164
2 months ago
haroon amjad 4188365e6d readme update 2 months ago
haroon amjad d2deb974b1 symptoms merge 2 months ago
haroon amjad f48eb631ab Merge branch 'master' into haroon_dev 2 months ago
Haroon6138 b6c665cbf1 Merge pull request 'Symptoms Checker Module (faiz_dev)' (#163) from faiz_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/163
2 months ago
haroon amjad f54ce71177 translation changes 2 months ago
faizatflutter 07447e148b Symptoms Checker flow is completed 2 months ago
haroon amjad 6faca94b89 updates 2 months ago
Fatimah.Alshammari d027415302 fixed errors 2 months ago
haroon amjad 99282f34e3 Added language change option in landing page 2 months ago
aamir-csol 418297b6fb Merge branch 'master' into dev_aamir
# Conflicts:
#	lib/core/api_consts.dart
2 months ago
faizatflutter 4ceca016bb Merge branch 'master' into faiz_dev
# Conflicts:
#	lib/presentation/hmg_services/services_page.dart
#	pubspec.lock
2 months ago
faizatflutter 3bdc4e246f refactor 2 months ago
haroon amjad 9ef70a250d translation updates 2 months ago
haroon amjad 5b24dadb51 Merge branch 'master' into haroon_dev 2 months ago
Sikander Saleem 40ba1bd246 ui improvements 2 months ago
haroon amjad 3fc1302eaf New Flutter App param added 2 months ago
Sikander Saleem e38892ff2d Merge branch 'refs/heads/master' into dev_sikander
# Conflicts:
#	lib/presentation/habib_wallet/habib_wallet_page.dart
#	lib/presentation/hmg_services/services_page.dart
#	lib/presentation/home/landing_page.dart
#	lib/presentation/home/widgets/habib_wallet_card.dart
#	lib/presentation/insurance/insurance_home_page.dart
#	lib/presentation/lab/lab_orders_page.dart
#	lib/presentation/medical_file/medical_file_page.dart
#	lib/presentation/profile_settings/profile_settings.dart
#	lib/presentation/radiology/radiology_orders_page.dart
#	lib/widgets/appbar/collapsing_list_view.dart
2 months ago
Haroon6138 838929591a Merge pull request 'haroon_dev' (#162) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/162
2 months ago
haroon amjad 5feacfaf27 Translation updates 2 months ago
haroon amjad 39af08ddc3 Translation updates 2 months ago
Haroon6138 f026ae1d62 Merge pull request 'haroon_dev' (#161) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/161
2 months ago
haroon amjad e5f24b9c06 updates 2 months ago
haroon amjad 00475dc100 Merge branch 'master' into haroon_dev 2 months ago
Haroon6138 23b92cef41 Merge pull request 'dev_sultan' (#160) from dev_sultan into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/160
2 months ago
haroon amjad 3ff9628cd3 Translation updates 2 months ago
aamir-csol bb72c7f7d6 Merge branch 'master' into dev_aamir
# Conflicts:
#	lib/core/api_consts.dart
#	lib/presentation/hmg_services/services_page.dart
#	pubspec.lock
2 months ago
aamir-csol 0017c0601b blood donation changes 2 months ago
Sultan khan 7d8537fae6 Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan 2 months ago
Sultan khan 1edeff439e notifications page updates 2 months ago
Haroon6138 a1beacc36e Merge pull request 'haroon_dev' (#159) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/159
2 months ago
haroon amjad 3e6ee8c10c Merge branch 'master' into haroon_dev
# Conflicts:
#	lib/routes/app_routes.dart
2 months ago
haroon amjad 87422e8e05 translation updates 2 months ago
Sikander Saleem 0b9df1f22b collapsing toolbar behaviour changed as like barq 2 months ago
Haroon6138 179b86b2b0 Merge pull request 'fatima' (#158) from fatima into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/158
2 months ago
Fatimah.Alshammari f6aa1fc7ac Merge branch 'refs/heads/master' into fatima 2 months ago
Fatimah.Alshammari 9795276ef9 fixed errors 2 months ago
Sikander Saleem 45b013a048 UI/UX improvements - insurance update. 2 months ago
Sikander Saleem 1599cfed4e UI/UX improvements-1. 2 months ago
haroon amjad 96ccb40f36 Merge branch 'master' into haroon_dev 2 months ago
Haroon6138 bb7c05493a Merge pull request 'fatima' (#157) from fatima into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/157
2 months ago
haroon amjad 169215fd7b translation changes 2 months ago
Fatimah.Alshammari 97a47ce4e8 Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	lib/core/dependencies.dart
#	lib/routes/app_routes.dart
2 months ago
Fatimah.Alshammari 287e2b9562 fixed QR 2 months ago
Sikander Saleem 77a04e637e UI/UX improvements. 2 months ago
Sultan khan 8b5c4d7575 Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan
# Conflicts:
#	lib/core/dependencies.dart
#	lib/routes/app_routes.dart
2 months ago
Sultan khan 8c92df8648 contact us page fix 2 months ago
aamir-csol a816afadea Merge branch 'master' into dev_aamir
# Conflicts:
#	lib/core/dependencies.dart
#	lib/presentation/hmg_services/services_page.dart
2 months ago
aamir-csol d76ff5828f fixes 2 months ago
haroon amjad 8f428297cb Arabic translations added 2 months ago
Haroon6138 e9d3b3680a Merge pull request 'haroon_dev' (#156) from haroon_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/156
2 months ago
haroon amjad a0008c9104 Nearest Appointment sorting fixed 2 months ago
Fatimah.Alshammari 1d224702ac Merge branch 'refs/heads/master' into fatima 2 months ago
Fatimah.Alshammari 69666a6f6c fixed button 2 months ago
haroon amjad 475a9b9acb Merge branch 'master' into haroon_dev 2 months ago
Haroon6138 06c67a0409 Merge pull request 'dev_aamir' (#153) from dev_aamir into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/153
2 months ago
Haroon6138 d1b1bbf777 Merge pull request 'dev_sultan' (#154) from dev_sultan into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/154
2 months ago
Sultan khan 0ddaa6899d Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan
* 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New:
  fixed parking qr
  added parking part
  added monthly report
  added monthly report
  added monthly report
  fix error
  monthly report
  fix toggle
  fix toggle
  active medication
  active medication
  active medication
2 months ago
Sultan khan 42222804fd fix graph dot and bp graph. 2 months ago
aamir-csol bf210e664d Merge branch 'master' into dev_aamir 2 months ago
aamir-csol 6725ab028d doctor search filter design update & switch user bug fix. 2 months ago
haroon amjad 609ae6ab83 updates 2 months ago
haroon amjad 344adf23c0 Merge branch 'master' into haroon_dev
# Conflicts:
#	lib/core/dependencies.dart
#	lib/main.dart
#	lib/presentation/hmg_services/services_page.dart
#	lib/presentation/home/landing_page.dart
2 months ago
haroon amjad 44ce353dac updates 2 months ago
Haroon6138 b5753769b7 Merge pull request 'fatima' (#152) from fatima into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/152
2 months ago
Fatimah.Alshammari 250af1506c Merge branch 'master' into fatima
# Conflicts:
#	lib/core/dependencies.dart
#	lib/presentation/medical_file/medical_file_page.dart
#	lib/routes/app_routes.dart
#	lib/services/dialog_service.dart
#	lib/theme/colors.dart
2 months ago
haroon amjad fc750174fe Merge branch 'master' into haroon_dev 2 months ago
haroon amjad d848291930 updates 2 months ago
Haroon6138 aee496b7c3 Merge pull request 'dev_sultan' (#151) from dev_sultan into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/151
2 months ago
Sultan khan 16da0f4d0a Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan 2 months ago
Sultan khan 8ee0e3b4ea no message 2 months ago
Sultan khan 0c68ca4438 Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan
* 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New:
  Added 'send report to email' feature
  Completed the health Tracker Module, Only the email part is left.
  only explain api left.
  Triage Completed. Explain API left
  Till Triage Completed
  refactoring

# Conflicts:
#	lib/presentation/medical_file/medical_file_page.dart
2 months ago
haroon amjad e454c9c991 Merge branch 'master' into haroon_dev
# Conflicts:
#	lib/core/api_consts.dart
#	lib/core/dependencies.dart
2 months ago
Haroon6138 96ebc3c7e9 Merge pull request 'dev_aamir' (#149) from dev_aamir into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/149
2 months ago
Haroon6138 2240c6cc65 Merge pull request 'Health Trackers Feature (faiz_dev)' (#150) from faiz_dev into master
Reviewed-on: https://34.17.182.140/Haroon6138/HMG_Patient_App_New/pulls/150
2 months ago
Sultan khan 0514716910 no message 2 months ago
Sultan khan e903f9c418 Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan
* 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New:
  search filter on select doctor page.
  family file fix
  blood group
2 months ago
Sultan khan ac0d72b3ff vital sign finalized. 2 months ago
aamir-csol f62c7c9b20 Merge branch 'master' into dev_aamir 2 months ago
aamir-csol c11e859df1 search doctor by name filter. 2 months ago
haroon amjad 91c16f13d1 Merge branch 'master' into haroon_dev
# Conflicts:
#	lib/core/app_assets.dart
2 months ago
haroon amjad 1c0842ab95 updates 2 months ago
haroon amjad 02930a901e Indoor navigation implementation & Landing page swiper card updates 3 months ago
Fatimah.Alshammari 20e4f82df3 Merge branch 'master' into fatima
# Conflicts:
#	lib/core/dependencies.dart
#	lib/main.dart
#	lib/presentation/hmg_services/services_page.dart
#	lib/presentation/medical_file/medical_file_page.dart
#	lib/routes/app_routes.dart
3 months ago
Fatimah.Alshammari 8ae81d2b24 fixed parking qr 3 months ago
Sultan khan 34e8386ca1 Merge branch 'master' of http://34.17.182.140/Haroon6138/HMG_Patient_App_New into dev_sultan 3 months ago
Sultan khan cc255e9c9a vital sign detail page 3 months ago
Fatimah.Alshammari 11de01e079 Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	lib/presentation/hmg_services/services_page.dart
#	lib/routes/app_routes.dart
#	lib/theme/colors.dart
3 months ago
Fatimah.Alshammari 62bb667cb8 added parking part 3 months ago
Fatimah.Alshammari f3674ba06f Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	lib/core/dependencies.dart
#	lib/presentation/hmg_services/services_page.dart
#	lib/routes/app_routes.dart
3 months ago
Fatimah.Alshammari a53602dc8c added monthly report 3 months ago
Fatimah.Alshammari 7a03242396 added monthly report 3 months ago
Fatimah.Alshammari 68f044de52 added monthly report 3 months ago
Fatimah.Alshammari c9de23347a fix error 3 months ago
Fatimah.Alshammari 190492a191 Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	lib/routes/app_routes.dart
3 months ago
Fatimah.Alshammari 3d8daeb58d Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	lib/core/app_assets.dart
#	lib/core/dependencies.dart
#	lib/core/utils/calendar_utils.dart
#	lib/features/hmg_services/models/ui_models/hmg_services_component_model.dart
#	lib/main.dart
#	lib/presentation/hmg_services/services_page.dart
#	lib/presentation/hmg_services/services_view.dart
#	lib/presentation/medical_file/medical_file_page.dart
#	lib/routes/app_routes.dart
#	lib/theme/colors.dart
#	pubspec.yaml
3 months ago
Fatimah.Alshammari 0b3fea230f monthly report 3 months ago
Fatimah.Alshammari 86a91ab383 Merge branch 'refs/heads/master' into fatima 4 months ago
Fatimah.Alshammari 89ff10f506 Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	lib/core/dependencies.dart
#	lib/main.dart
#	lib/theme/colors.dart
4 months ago
Fatimah.Alshammari 8191852f4d Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	lib/core/dependencies.dart
#	lib/main.dart
4 months ago
Fatimah.Alshammari e17d3cde87 fix toggle 4 months ago
Fatimah.Alshammari 77242825bb fix toggle 4 months ago
Fatimah.Alshammari 27ad4e0764 Merge branch 'refs/heads/master' into fatima
# Conflicts:
#	lib/core/utils/utils.dart
#	lib/presentation/emergency_services/call_ambulance/tracking_screen.dart
#	lib/presentation/home/landing_page.dart
4 months ago
Fatimah.Alshammari eae16eec44 active medication 4 months ago
Fatimah.Alshammari 3f123d12d6 Merge remote-tracking branch 'refs/remotes/origin/master' into fatima
# Conflicts:
#	lib/core/api_consts.dart
#	lib/core/utils/utils.dart
#	lib/main.dart
5 months ago
Fatimah.Alshammari de8c7bc605 active medication 5 months ago
Fatimah.Alshammari cb56503622 Merge remote-tracking branch 'refs/remotes/origin/master' into fatima 6 months ago
Fatimah.Alshammari e8319a0d3f active medication 6 months ago

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 949 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

@ -0,0 +1 @@
{"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@ -0,0 +1,6 @@
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgaPetsOq3tqUlswBN
BFUWIIdEg4dcTCGRUKbAEx8ViFygCgYIKoZIzj0DAQehRANCAAS6IKkZ4tCeBlN6
DtXiBekCiIbgHxWk8AWppP0H3mJ+I2s8cIEaquL4/yeLDcHzAHf8tHcYhF/TvggT
nc30yDLv
-----END PRIVATE KEY-----

@ -1,3 +1,11 @@
# Translation prompt & Command
Read the context for both files & generate translations strings in the en-US.json & ar-SA.json files for the strings containing "needTranslation". Also replace the strings in the dart with the generated Strings. Also do not remove existing properties & do no generate duplicate strings in the json files
flutter3_32 pub run easy_localization:generate -O ./lib/generated -f keys -o locale_keys.g.dart --source-dir ./assets/langs
# HMG Patient App
A comprehensive Flutter-based mobile application for HMG (Habib Medical Group) patients,

@ -0,0 +1 @@
{"agcgw":{"url":"connect-drcn.dbankcloud.cn","backurl":"connect-drcn.hispace.hicloud.com","websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn","websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com"},"agcgw_all":{"SG":"connect-dra.dbankcloud.cn","SG_back":"connect-dra.hispace.hicloud.com","CN":"connect-drcn.dbankcloud.cn","CN_back":"connect-drcn.hispace.hicloud.com","RU":"connect-drru.hispace.dbankcloud.ru","RU_back":"connect-drru.hispace.dbankcloud.cn","DE":"connect-dre.dbankcloud.cn","DE_back":"connect-dre.hispace.hicloud.com"},"websocketgw_all":{"SG":"connect-ws-dra.hispace.dbankcloud.cn","SG_back":"connect-ws-dra.hispace.dbankcloud.com","CN":"connect-ws-drcn.hispace.dbankcloud.cn","CN_back":"connect-ws-drcn.hispace.dbankcloud.com","RU":"connect-ws-drru.hispace.dbankcloud.ru","RU_back":"connect-ws-drru.hispace.dbankcloud.cn","DE":"connect-ws-dre.hispace.dbankcloud.cn","DE_back":"connect-ws-dre.hispace.dbankcloud.com"},"client":{"cp_id":"2640966000002322881","product_id":"736430079244816567","client_id":"563735388191982656","client_secret":"650C7C799812AFFD53A10C7756CF05FB9F215A7E49032ABA8EBF3E14B77535CF","project_id":"736430079244816567","app_id":"116912301","api_key":"CgB6e3x9DJzMgRCmnT6dyUEkp6UsIfddb6l3w0ZEXzeiRMHEFi3400Z5fJ5qaHneU0OrAI/JRpk+DMGVs3QpUxlI","package_name":"com.cloudsolutions.HMGPatientApp"},"oauth_client":{"client_id":"116912301","client_type":1},"app_info":{"app_id":"116912301","package_name":"com.cloudsolutions.HMGPatientApp"},"service":{"analytics":{"collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn","collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn","collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn","collector_url_ru":"datacollector-drru.dt.dbankcloud.ru,datacollector-drru.dt.hicloud.com","collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn","resource_id":"p1","channel_id":""},"ml":{"mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"},"cloudstorage":{"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn","storage_url_ru":"https://agc-storage-drru.cloud.huawei.ru","storage_url_sg":"https://ops-dra.agcstorage.link","storage_url_de":"https://ops-dre.agcstorage.link","storage_url_cn":"https://agc-storage-drcn.platform.dbankcloud.cn","storage_url_ru_back":"https://agc-storage-drru.cloud.huawei.ru","storage_url_sg_back":"https://agc-storage-dra.cloud.huawei.asia","storage_url_de_back":"https://agc-storage-dre.cloud.huawei.eu","storage_url_cn_back":"https://agc-storage-drcn.cloud.huawei.com.cn"},"search":{"url":"https://search-drcn.cloud.huawei.com"},"edukit":{"edu_url":"edukit.cloud.huawei.com.cn","dh_url":"edukit.cloud.huawei.com.cn"}},"region":"CN","configuration_version":"3.0","appInfos":[{"package_name":"com.cloudsolutions.HMGPatientApp","client":{"app_id":"116912301"},"app_info":{"package_name":"com.cloudsolutions.HMGPatientApp","app_id":"116912301"},"oauth_client":{"client_type":1,"client_id":"116912301"}},{"package_name":"com.ejada.hmg","client":{"app_id":"102857389"},"app_info":{"package_name":"com.ejada.hmg","app_id":"102857389"},"oauth_client":{"client_type":1,"client_id":"102857389"}}]}

@ -1,74 +1 @@
{
"agcgw":{
"backurl":"connect-drcn.hispace.hicloud.com",
"url":"connect-drcn.dbankcloud.cn",
"websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com",
"websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn"
},
"agcgw_all":{
"CN":"connect-drcn.dbankcloud.cn",
"CN_back":"connect-drcn.hispace.hicloud.com",
"DE":"connect-dre.dbankcloud.cn",
"DE_back":"connect-dre.hispace.hicloud.com",
"RU":"connect-drru.dbankcloud.cn",
"RU_back":"connect-drru.hispace.hicloud.com",
"SG":"connect-dra.dbankcloud.cn",
"SG_back":"connect-dra.hispace.hicloud.com"
},
"client":{
"cp_id":"2640966000002322881",
"product_id":"736430079244816567",
"client_id":"563735388191982656",
"client_secret":"650C7C799812AFFD53A10C7756CF05FB9F215A7E49032ABA8EBF3E14B77535CF",
"project_id":"736430079244816567",
"app_id":"102857389",
"api_key":"CgB6e3x9DJzMgRCmnT6dyUEkp6UsIfddb6l3w0ZEXzeiRMHEFi3400Z5fJ5qaHneU0OrAI/JRpk+DMGVs3QpUxlI",
"package_name":"com.ejada.hmg"
},
"oauth_client":{
"client_id":"102857389",
"client_type":1
},
"app_info":{
"app_id":"102857389",
"package_name":"com.ejada.hmg"
},
"service":{
"analytics":{
"collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
"collector_url_ru":"datacollector-drru.dt.hicloud.com,datacollector-drru.dt.dbankcloud.cn",
"collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn",
"collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn",
"collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
"resource_id":"p1",
"channel_id":""
},
"search":{
"url":"https://search-drcn.cloud.huawei.com"
},
"cloudstorage":{
"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn"
},
"ml":{
"mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"
}
},
"region":"CN",
"configuration_version":"3.0",
"appInfos":[
{
"package_name":"com.ejada.hmg",
"client":{
"app_id":"102857389"
},
"app_info":{
"package_name":"com.ejada.hmg",
"app_id":"102857389"
},
"oauth_client":{
"client_type":1,
"client_id":"102857389"
}
}
]
}
{"agcgw":{"url":"connect-drcn.dbankcloud.cn","backurl":"connect-drcn.hispace.hicloud.com","websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn","websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com"},"agcgw_all":{"SG":"connect-dra.dbankcloud.cn","SG_back":"connect-dra.hispace.hicloud.com","CN":"connect-drcn.dbankcloud.cn","CN_back":"connect-drcn.hispace.hicloud.com","RU":"connect-drru.hispace.dbankcloud.ru","RU_back":"connect-drru.hispace.dbankcloud.cn","DE":"connect-dre.dbankcloud.cn","DE_back":"connect-dre.hispace.hicloud.com"},"websocketgw_all":{"SG":"connect-ws-dra.hispace.dbankcloud.cn","SG_back":"connect-ws-dra.hispace.dbankcloud.com","CN":"connect-ws-drcn.hispace.dbankcloud.cn","CN_back":"connect-ws-drcn.hispace.dbankcloud.com","RU":"connect-ws-drru.hispace.dbankcloud.ru","RU_back":"connect-ws-drru.hispace.dbankcloud.cn","DE":"connect-ws-dre.hispace.dbankcloud.cn","DE_back":"connect-ws-dre.hispace.dbankcloud.com"},"client":{"cp_id":"2640966000002322881","product_id":"736430079244816567","client_id":"563735388191982656","client_secret":"650C7C799812AFFD53A10C7756CF05FB9F215A7E49032ABA8EBF3E14B77535CF","project_id":"736430079244816567","app_id":"116912301","api_key":"CgB6e3x9DJzMgRCmnT6dyUEkp6UsIfddb6l3w0ZEXzeiRMHEFi3400Z5fJ5qaHneU0OrAI/JRpk+DMGVs3QpUxlI","package_name":"com.cloudsolutions.HMGPatientApp"},"oauth_client":{"client_id":"116912301","client_type":1},"app_info":{"app_id":"116912301","package_name":"com.cloudsolutions.HMGPatientApp"},"service":{"analytics":{"collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn","collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn","collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn","collector_url_ru":"datacollector-drru.dt.dbankcloud.ru,datacollector-drru.dt.hicloud.com","collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn","resource_id":"p1","channel_id":""},"ml":{"mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"},"cloudstorage":{"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn","storage_url_ru":"https://agc-storage-drru.cloud.huawei.ru","storage_url_sg":"https://ops-dra.agcstorage.link","storage_url_de":"https://ops-dre.agcstorage.link","storage_url_cn":"https://agc-storage-drcn.platform.dbankcloud.cn","storage_url_ru_back":"https://agc-storage-drru.cloud.huawei.ru","storage_url_sg_back":"https://agc-storage-dra.cloud.huawei.asia","storage_url_de_back":"https://agc-storage-dre.cloud.huawei.eu","storage_url_cn_back":"https://agc-storage-drcn.cloud.huawei.com.cn"},"search":{"url":"https://search-drcn.cloud.huawei.com"},"edukit":{"edu_url":"edukit.cloud.huawei.com.cn","dh_url":"edukit.cloud.huawei.com.cn"}},"region":"CN","configuration_version":"3.0","appInfos":[{"package_name":"com.cloudsolutions.HMGPatientApp","client":{"app_id":"116912301"},"app_info":{"package_name":"com.cloudsolutions.HMGPatientApp","app_id":"116912301"},"oauth_client":{"client_type":1,"client_id":"116912301"}},{"package_name":"com.ejada.hmg","client":{"app_id":"102857389"},"app_info":{"package_name":"com.ejada.hmg","app_id":"102857389"},"oauth_client":{"client_type":1,"client_id":"102857389"}}]}

@ -7,6 +7,7 @@ plugins {
id("com.google.gms.google-services") version "4.4.1" // Add the version here
id("dev.flutter.flutter-gradle-plugin")
id("com.huawei.agconnect")
id("kotlin-parcelize")
// id("com.mapbox.gradle.application")
// id("com.mapbox.gradle.plugins.ndk")
}
@ -18,20 +19,33 @@ if (keystorePropertiesFile.exists()) {
}
android {
namespace = "com.ejada.hmg"
namespace = "com.cloudsolutions.HMGPatientApp"
compileSdk = 36
ndkVersion = "28.2.13676358"
// Using NDK 26 for better compatibility with Zoom SDK native libraries
ndkVersion = "27.0.12077973"
// ndkVersion = "25.1.8937393"
sourceSets {
getByName("main") {
jniLibs.srcDirs("src/main/jniLibs")
}
}
defaultConfig {
applicationId = "com.ejada.hmg"
applicationId = "com.cloudsolutions.HMGPatientApp"
// minSdk = 24
minSdk = 26
targetSdk = 36
targetSdk = 35
compileSdk = 36
// targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
multiDexEnabled = true
// Filter to arm64-v8a for better native library compatibility
ndk {
abiFilters += listOf("arm64-v8a", "armeabi-v7a")
}
}
buildFeatures {
@ -82,7 +96,7 @@ android {
}
}
packagingOptions {
packaging {
jniLibs {
pickFirsts += listOf(
"lib/x86/libc++_shared.so",
@ -92,9 +106,16 @@ android {
"**/*.so"
)
useLegacyPackaging = true
// Keep Zoom SDK libraries unstripped to preserve symbols
keepDebugSymbols += listOf(
"*/libzoom_util.so",
"*/libzoom_check.so",
"*/libc++_shared.so"
)
}
resources {
excludes += listOf("META-INF/proguard/androidx-annotations.pro")
excludes.add("lib/*/libc++_shared.so")
}
}
@ -127,9 +148,13 @@ dependencies {
implementation("com.google.code.gson:gson:2.12.0")
// Zoom SDKs
implementation("us.zoom.videosdk:zoomvideosdk-core:1.12.10")
implementation("us.zoom.videosdk:zoomvideosdk-annotation:1.12.10")
implementation("us.zoom.videosdk:zoomvideosdk-videoeffects:1.12.10")
// implementation("us.zoom.videosdk:zoomvideosdk-core:1.12.10")
// implementation("us.zoom.videosdk:zoomvideosdk-annotation:1.12.10")
// implementation("us.zoom.videosdk:zoomvideosdk-videoeffects:1.12.10")
implementation("us.zoom.videosdk:zoomvideosdk-core:2.1.10")
implementation("us.zoom.videosdk:zoomvideosdk-videoeffects:2.1.10")
implementation("us.zoom.videosdk:zoomvideosdk-annotation:2.1.10")
// Networking
implementation("com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11")
@ -160,12 +185,16 @@ dependencies {
annotationProcessor("com.github.bumptech.glide:compiler:4.16.0")
implementation("com.mapbox.maps:android:11.5.0")
implementation("com.mapbox.mapboxsdk:mapbox-sdk-turf:7.3.1")
// implementation("com.mapbox.maps:android:11.4.0")
// AARs
implementation(files("libs/PenNavUI.aar"))
implementation(files("libs/Penguin.aar"))
implementation(files("libs/PenguinRenderer.aar"))
api(files("libs/samsung-health-data-api.aar"))
implementation("com.huawei.hms:health:6.11.0.300")
implementation("com.huawei.hms:hmscoreinstaller:6.6.0.300")
implementation("com.github.kittinunf.fuel:fuel:2.3.1")
implementation("com.github.kittinunf.fuel:fuel-android:2.3.1")
@ -186,5 +215,39 @@ dependencies {
implementation("com.whatsapp.otp:whatsapp-otp-android-sdk:0.1.0")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
// implementation(project(":vitalSignEngine"))
}
tasks.whenTaskAdded {
if (name.contains("merge") && name.contains("NativeLibs")) {
doLast {
val outputDir = File(project.buildDir, "intermediates/merged_native_libs/release/out/lib")
// Handle both architectures
val abis = listOf("arm64-v8a", "armeabi-v7a")
abis.forEach { abi ->
val targetFile = File(outputDir, "$abi/libc++_shared.so")
val sourceFile = file("src/main/jniLibs/$abi/libc++_shared.so")
if (sourceFile.exists() && targetFile.exists()) {
println("FORCING: Overwriting $abi version with known-good 1.2MB library")
sourceFile.copyTo(targetFile, overwrite = true)
}
}
}
}
}
}
//tasks.whenTaskAdded {
// if (name.contains("merge") && name.contains("NativeLibs")) {
// doLast {
// val outputDir = File(project.buildDir, "intermediates/merged_native_libs/release/out/lib")
// val targetFile = File(outputDir, "arm64-v8a/libc++_shared.so")
// val sourceFile = file("src/main/jniLibs/arm64-v8a/libc++_shared.so")
//
// if (sourceFile.exists()) {
// println("FORCE REPLACING: Injecting 1.2MB libc++ into APK...")
// sourceFile.copyTo(targetFile, overwrite = true)
// }
// }
// }
//}

@ -3,9 +3,45 @@
"project_number": "815750722565",
"firebase_url": "https://api-project-815750722565.firebaseio.com",
"project_id": "api-project-815750722565",
"storage_bucket": "api-project-815750722565.appspot.com"
"storage_bucket": "api-project-815750722565.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:815750722565:android:fa20b3a2401e08633c186c",
"android_client_info": {
"package_name": "com.cloudsolutions.HMGPatientApp"
}
},
"oauth_client": [
{
"client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyDZDeWcBlRE3YfJWYt_DCiToVnANfaj8qg"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "815750722565-0cq9366orvsk5ipivq6lijcj56u03fr7.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.void.demo"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:815750722565:android:62281cd3e5df4063",

Binary file not shown.

@ -52,6 +52,11 @@
*;
}
# Prevent stripping of standard C++ symbols
-keepclassmembers class * {
native <methods>;
}
-dontwarn com.opentok.android.**
-dontwarn com.opentok.otc.**

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.ejada.hmg">
package="com.cloudsolutions.HMGPatientApp">
<!--
io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
@ -49,7 +49,7 @@
<uses-permission
android:name="android.permission.ACCESS_BACKGROUND_LOCATION"
tools:node="remove" /> <!-- <uses-permission android:name="android.permission.INTERNET" /> -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
@ -62,7 +62,6 @@
<uses-feature android:name="android.hardware.camera.any" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-feature
@ -125,29 +124,34 @@
</queries>
<application
android:foregroundServiceType="mediaPlayback|connectedDevice|dataSync"
android:name=".Application"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher_local"
android:label="Dr. Alhabib"
android:label="Dr. Alhabib Beta"
android:screenOrientation="sensorPortrait"
android:showOnLockScreen="true"
android:usesCleartextTraffic="true"
android:extractNativeLibs="true"
tools:replace="android:label">
<activity
android:name="com.cloud.hmg_patient_app.whatsapp.WhatsAppCodeActivity"
android:exported="true"
android:enabled="true"
android:launchMode="standard"
>
<intent-filter>
<action android:name="com.whatsapp.otp.OTP_RETRIEVED" />
</intent-filter>
</activity>
<!-- <activity-->
<!-- android:name="com.cloud.hmg_patient_app.whatsapp.WhatsAppCodeActivity"-->
<!-- android:exported="true"-->
<!-- android:enabled="true"-->
<!-- android:launchMode="standard"-->
<!-- >-->
<!-- <intent-filter>-->
<!-- <action android:name="com.whatsapp.otp.OTP_RETRIEVED" />-->
<!-- </intent-filter>-->
<!-- </activity>-->
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
<meta-data
android:name="com.google.ar.core"
tools:node="remove" />
<activity
android:name=".MainActivity"
@ -155,7 +159,7 @@
android:enabled="true"
android:exported="true"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:launchMode="singleInstance"
android:showOnLockScreen="true"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize"
@ -199,10 +203,10 @@
<!-- </intent-filter> -->
<!-- </receiver> -->
<!-- Geofencing -->
<service
android:name=".geofence.intent_receivers.GeofenceTransitionsJobIntentService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" />
<!-- <service-->
<!-- android:name=".geofence.intent_receivers.GeofenceTransitionsJobIntentService"-->
<!-- android:exported="true"-->
<!-- android:permission="android.permission.BIND_JOB_SERVICE" />-->
<!-- <receiver-->
<!-- android:name=".geofence.intent_receivers.GeofenceBroadcastReceiver"-->

@ -1,5 +1,5 @@
//package com.cloud.diplomaticquarterapp
package com.ejada.hmg
package com.cloudsolutions.HMGPatientApp
import io.flutter.app.FlutterApplication

@ -1,6 +1,5 @@
package com.ejada.hmg
package com.cloudsolutions.HMGPatientApp
import android.app.PendingIntent
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
@ -8,7 +7,7 @@ import android.util.Log
import android.view.WindowManager
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi
import com.ejada.hmg.penguin.PenguinInPlatformBridge
import com.cloudsolutions.HMGPatientApp.watch.samsung_watch.SamsungWatch
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
@ -16,6 +15,7 @@ import io.flutter.embedding.android.FlutterFragmentActivity
class MainActivity: FlutterFragmentActivity() {
@RequiresApi(Build.VERSION_CODES.O)
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
@ -23,6 +23,7 @@ class MainActivity: FlutterFragmentActivity() {
this.window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)
PenguinInPlatformBridge(flutterEngine, this).create()
SamsungWatch(flutterEngine, this)
}
override fun onRequestPermissionsResult(
@ -48,4 +49,30 @@ class MainActivity: FlutterFragmentActivity() {
override fun onResume() {
super.onResume()
}
// override fun onActivityResult(requestCode: Int, resultCode: Int, @Nullable data: Intent?) {
// super.onActivityResult(requestCode, resultCode, data)
//
// // Process only the response result of the authorization process.
// if (requestCode == 1002) {
// // Obtain the authorization response result from the intent.
// val result: HealthKitAuthResult? = huaweiWatch?.mSettingController?.parseHealthKitAuthResultFromIntent(data)
// if (result == null) {
// Log.w(huaweiWatch?.TAG, "authorization fail")
// return
// }
//
// if (result.isSuccess) {
// Log.i(huaweiWatch?.TAG, "authorization success")
// if (result.getAuthAccount() != null && result.authAccount.authorizedScopes != null) {
// val authorizedScopes: MutableSet<Scope?> = result.authAccount.authorizedScopes
// if(authorizedScopes.isNotEmpty()) {
// huaweiWatch?.getHealthAppAuthorization()
// }
// }
// } else {
// Log.w("MainActivty", "authorization fail, errorCode:" + result.getErrorCode())
// }
// }
// }
}

@ -1,15 +1,14 @@
package com.ejada.hmg.penguin
package com.cloudsolutions.HMGPatientApp
import com.ejada.hmg.MainActivity
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import com.ejada.hmg.penguin.PenguinView
import com.cloudsolutions.HMGPatientApp.penguin.PenguinView
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall
import com.ejada.hmg.PermissionManager.HostNotificationPermissionManager
import com.ejada.hmg.PermissionManager.HostBgLocationManager
import com.ejada.hmg.PermissionManager.HostGpsStateManager
import com.cloudsolutions.HMGPatientApp.PermissionManager.HostNotificationPermissionManager
import com.cloudsolutions.HMGPatientApp.PermissionManager.HostBgLocationManager
import com.cloudsolutions.HMGPatientApp.PermissionManager.HostGpsStateManager
import io.flutter.plugin.common.MethodChannel
class PenguinInPlatformBridge(

@ -1,4 +1,4 @@
package com.ejada.hmg.PermissionManager;
package com.cloudsolutions.HMGPatientApp.PermissionManager;
import android.content.Context;
import android.content.SharedPreferences;

@ -1,4 +1,4 @@
package com.ejada.hmg.PermissionManager;
package com.cloudsolutions.HMGPatientApp.PermissionManager;
import android.Manifest;
import android.app.Activity;

@ -1,4 +1,4 @@
package com.ejada.hmg.PermissionManager;
package com.cloudsolutions.HMGPatientApp.PermissionManager;
import android.Manifest;
import android.app.Activity;

@ -1,4 +1,4 @@
package com.ejada.hmg.PermissionManager;
package com.cloudsolutions.HMGPatientApp.PermissionManager;
import android.app.Activity;
import android.content.pm.PackageManager;

@ -1,7 +1,6 @@
package com.ejada.hmg.PermissionManager
package com.cloudsolutions.HMGPatientApp.PermissionManager
import android.Manifest
import android.os.Build
object PermissionHelper {

@ -1,4 +1,4 @@
package com.ejada.hmg.PermissionManager
package com.cloudsolutions.HMGPatientApp.PermissionManager
import android.app.Activity
import android.content.Context

@ -1,4 +1,4 @@
package com.ejada.hmg.PermissionManager
package com.cloudsolutions.HMGPatientApp.PermissionManager
// PermissionResultReceiver.kt
import android.content.BroadcastReceiver

@ -1,4 +1,4 @@
package com.ejada.hmg.penguin
package com.cloudsolutions.HMGPatientApp.penguin
enum class PenguinMethod {
// initializePenguin("initializePenguin"),

@ -1,4 +1,4 @@
package com.ejada.hmg.penguin
package com.cloudsolutions.HMGPatientApp.penguin
import android.content.Context
import com.google.gson.Gson
@ -21,7 +21,7 @@ class PenguinNavigator() {
val postToken = PostToken(clientID, clientKey)
getToken(mContext, postToken, object : RefIdDelegate {
override fun onRefByIDSuccess(PoiId: String?) {
Log.e("navigateTo", "PoiId is+++++++ $PoiId")
Log.e("navigateTo", "PoiId is+++++++ $refID")
PlugAndPlaySDK.navigateTo(mContext, refID, object : RefIdDelegate {
override fun onRefByIDSuccess(PoiId: String?) {

@ -1,4 +1,4 @@
package com.ejada.hmg.penguin
package com.cloudsolutions.HMGPatientApp.penguin
import android.app.Activity
import android.content.Context
@ -12,10 +12,10 @@ import android.view.ViewGroup
import android.widget.RelativeLayout
import android.widget.Toast
import androidx.annotation.RequiresApi
import com.ejada.hmg.PermissionManager.PermissionManager
import com.ejada.hmg.PermissionManager.PermissionResultReceiver
import com.ejada.hmg.MainActivity
import com.ejada.hmg.PermissionManager.PermissionHelper
import com.cloudsolutions.HMGPatientApp.PermissionManager.PermissionManager
import com.cloudsolutions.HMGPatientApp.PermissionManager.PermissionResultReceiver
import com.cloudsolutions.HMGPatientApp.MainActivity
import com.cloudsolutions.HMGPatientApp.PermissionManager.PermissionHelper
import com.peng.pennavmap.PlugAndPlayConfiguration
import com.peng.pennavmap.PlugAndPlaySDK
import com.peng.pennavmap.enums.InitializationErrorType
@ -25,7 +25,6 @@ import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.platform.PlatformView
import com.ejada.hmg.penguin.PenguinNavigator
import com.peng.pennavmap.interfaces.PIEventsDelegate
import com.peng.pennavmap.interfaces.PILocationDelegate
import com.peng.pennavmap.interfaces.RefIdDelegate
@ -320,6 +319,7 @@ internal class PenguinView(
if(clinicId.isEmpty()) return
navigateTo(clinicId)
// navigateTo("3-1")
}
/**

@ -0,0 +1,402 @@
package com.cloudsolutions.HMGPatientApp.watch.samsung_watch
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import com.cloudsolutions.HMGPatientApp.MainActivity
import com.cloudsolutions.HMGPatientApp.watch.samsung_watch.model.Vitals
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall
import com.samsung.android.sdk.health.data.HealthDataService
import com.samsung.android.sdk.health.data.HealthDataStore
import com.samsung.android.sdk.health.data.data.AggregatedData
import com.samsung.android.sdk.health.data.data.HealthDataPoint
import com.samsung.android.sdk.health.data.permission.AccessType
import com.samsung.android.sdk.health.data.permission.Permission
import com.samsung.android.sdk.health.data.request.DataType
import com.samsung.android.sdk.health.data.request.DataTypes
import com.samsung.android.sdk.health.data.request.LocalTimeFilter
import com.samsung.android.sdk.health.data.request.LocalTimeGroup
import com.samsung.android.sdk.health.data.request.LocalTimeGroupUnit
import com.samsung.android.sdk.health.data.request.Ordering
import com.samsung.android.sdk.health.data.response.DataResponse
import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
import java.time.LocalDateTime
import java.time.LocalTime
class SamsungWatch(
private var flutterEngine: FlutterEngine,
private var mainActivity: MainActivity
) {
private lateinit var channel: MethodChannel
private lateinit var dataStore: HealthDataStore
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
private val TAG = "SamsungWatch"
private lateinit var vitals: MutableMap<String, List<Vitals>>
companion object {
private const val CHANNEL = "samsung_watch"
}
init{
create()
}
@RequiresApi(Build.VERSION_CODES.O)
fun create() {
Log.d(TAG, "create: is called")
// openTok = OpenTok(mainActivity, flutterEngine)
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
when (call.method) {
"init" -> {
Log.d(TAG, "onMethodCall: init called")
dataStore = HealthDataService.getStore(mainActivity)
vitals = mutableMapOf()
result.success("initialized")
}
"getPermission"->{
if(!this::dataStore.isInitialized)
result.error("DataStoreNotInitialized", "Please call init before requesting permissions", null)
val permSet = setOf(
Permission.of(DataTypes.HEART_RATE, AccessType.READ),
Permission.of(DataTypes.STEPS, AccessType.READ),
Permission.of(DataTypes.BLOOD_OXYGEN, AccessType.READ),
Permission.of(DataTypes.ACTIVITY_SUMMARY, AccessType.READ),
Permission.of(DataTypes.SLEEP, AccessType.READ),
Permission.of(DataTypes.BODY_TEMPERATURE, AccessType.READ),
Permission.of(DataTypes.EXERCISE, AccessType.READ),
// Permission.of(DataTypes.SKIN_TEMPERATURE, AccessType.READ),
// Permission.of(DataTypes.NUTRITION, AccessType.READ),
)
scope.launch {
try {
var granted = dataStore.getGrantedPermissions(permSet)
if (granted.containsAll(permSet)) {
result.success("Permission Granted")
return@launch
}
granted = dataStore.requestPermissions(permSet, mainActivity)
if (granted.containsAll(permSet)) {
result.success("Permission Granted") // adapt result as needed
return@launch
}
result.error("PermissionError", "Permission Not Granted", null) // adapt result as needed
} catch (e: Exception) {
Log.e(TAG, "create: getPermission failed", e)
result.error("PermissionError", e.message, null)
}
}
}
"getHeartRate"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val readRequest = DataTypes.HEART_RATE.readDataRequestBuilder
.setLocalTimeFilter(localTimeFilter)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val heartRateList = dataStore.readData(readRequest).dataList
processHeartVital(heartRateList)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals}")
result.success("Data is obtained")
}
}
"getSleepData" -> {
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val readRequest = DataTypes.SLEEP.readDataRequestBuilder
.setLocalTimeFilter(localTimeFilter)
.setOrdering(Ordering.ASC)
.build()
scope.launch {
val sleepData = dataStore.readData(readRequest).dataList
processSleepVital(sleepData)
print("the data is $vitals")
Log.d(TAG, "the data is $vitals")
result.success("Data is obtained")
}
}
"steps"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val localTimeGroup = LocalTimeGroup.of(LocalTimeGroupUnit.HOURLY, 1)
val aggregateRequest = DataType.StepsType.TOTAL.requestBuilder
.setLocalTimeFilterWithGroup(localTimeFilter, localTimeGroup)
.setOrdering(Ordering.ASC)
.build()
scope.launch {
val steps = dataStore.aggregateData(aggregateRequest)
processStepsCount(steps)
print("the data is $vitals")
Log.d(TAG, "the data is $vitals")
result.success("Data is obtained")
}
}
"activitySummary"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val localTimeGroup = LocalTimeGroup.of(LocalTimeGroupUnit.HOURLY, 1)
val readRequest = DataType.ActivitySummaryType.TOTAL_ACTIVE_CALORIES_BURNED
.requestBuilder
.setLocalTimeFilterWithGroup(localTimeFilter, localTimeGroup)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val activityResult = dataStore.aggregateData(readRequest).dataList
processActivity(activityResult)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals}")
result.success("Data is obtained")
}
// val readRequest = DataTypes.EXERCISE.readDataRequestBuilder
// .setLocalTimeFilter(localTimeFilter)
// .build()
//
// scope.launch{
// try {
// val readResult = dataStore.readData(readRequest)
// val dataPoints = readResult.dataList
//
// processActivity(dataPoints)
//
//
// } catch (e: Exception) {
// e.printStackTrace()
// }
// result.success("Data is obtained")
// }
}
"bloodOxygen"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val readRequest = DataTypes.BLOOD_OXYGEN.readDataRequestBuilder
.setLocalTimeFilter(localTimeFilter)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val bloodOxygenList = dataStore.readData(readRequest).dataList
processBloodOxygen(bloodOxygenList)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals["bloodOxygen"]}")
result.success("Data is obtained")
}
}
"bodyTemperature"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val readRequest = DataTypes.BODY_TEMPERATURE.readDataRequestBuilder
.setLocalTimeFilter(localTimeFilter)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val bodyTemperatureList = dataStore.readData(readRequest).dataList
processBodyTemperature(bodyTemperatureList)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals["bodyTemperature"]}")
result.success("Data is obtained")
}
}
"distance"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val localTimeGroup = LocalTimeGroup.of(LocalTimeGroupUnit.HOURLY, 1)
val readRequest = DataType.ActivitySummaryType.TOTAL_DISTANCE.requestBuilder
.setLocalTimeFilterWithGroup(localTimeFilter, localTimeGroup)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val activityResult = dataStore.aggregateData(readRequest).dataList
processDistance(activityResult)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals}")
result.success("Data is obtained")
}
}
"retrieveData"->{
if(vitals.isEmpty()){
result.error("NoDataFound", "No Data was obtained", null)
return@setMethodCallHandler
}
result.success("""
{
"heartRate": ${vitals["heartRate"]},
"steps": ${vitals["steps"]},
"sleep": ${vitals["sleep"]},
"activity": ${vitals["activity"]},
"bloodOxygen": ${vitals["bloodOxygen"]},
"bodyTemperature": ${vitals["bodyTemperature"]},
"distance": ${vitals["distance"]}
}
""".trimIndent())
}
"closeCoroutineScope"->{
destroy()
result.success("Coroutine Scope Cancelled")
}
else -> {
result.notImplemented()
}
}
}
}
private fun CoroutineScope.processDistance(activityResult: List<AggregatedData<Float>>) {
vitals["distance"] = mutableListOf()
activityResult.forEach { stepData ->
val vitalData = Vitals().apply {
value = stepData.value.toString()
timeStamp = stepData.startTime.toString()
}
(vitals["distance"] as MutableList).add(vitalData)
}
}
private fun CoroutineScope.processBodyTemperature( bodyTemperatureList :List<HealthDataPoint>) {
vitals["bodyTemperature"] = mutableListOf()
bodyTemperatureList.forEach { stepData ->
val vitalData = Vitals().apply {
value = stepData.getValue(DataType.BodyTemperatureType.BODY_TEMPERATURE).toString()
timeStamp = stepData.endTime.toString()
}
(vitals["bodyTemperature"] as MutableList).add(vitalData)
}
}
private fun CoroutineScope.processBloodOxygen( bloodOxygenList :List<HealthDataPoint>) {
vitals["bloodOxygen"] = mutableListOf()
bloodOxygenList.forEach { stepData ->
val vitalData = Vitals().apply {
value = stepData.getValue(DataType.BloodOxygenType.OXYGEN_SATURATION).toString()
timeStamp = stepData.endTime.toString()
}
(vitals["bloodOxygen"] as MutableList).add(vitalData)
}
}
// private fun CoroutineScope.processActivity(activityResult: List<AggregatedData<Float>>) {
//
// vitals["activity"] = mutableListOf()
// activityResult.forEach { stepData ->
// val vitalData = Vitals().apply {
//
// value = stepData.value.toString()
// timeStamp = stepData.startTime.toString()
// }
// (vitals["activity"] as MutableList).add(vitalData)
// }
// }
private fun CoroutineScope.processActivity(activityResult: List<AggregatedData<Float>>) {
vitals["activity"] = mutableListOf()
activityResult.forEach { stepData ->
val vitalData = Vitals().apply {
value = stepData.value.toString()
timeStamp = stepData.startTime.toString()
}
(vitals["activity"] as MutableList).add(vitalData)
}
// dataPoints.forEach { dataPoint ->
// val sessions = dataPoint.getValue(DataType.ExerciseType.SESSIONS)
//
// sessions?.forEach { session ->
//
// val exerciseSessionCalories = session.calories
// val vitalData = Vitals().apply {
// value = exerciseSessionCalories.toString()
// timeStamp = session.startTime.toString()
// }
// (vitals["activity"] as MutableList).add(vitalData)
// }
// }
}
private fun CoroutineScope.processStepsCount(result: DataResponse<AggregatedData<Long>>) {
val stepCount = ArrayList<AggregatedData<Long>>()
var totalSteps: Long = 0
vitals["steps"] = mutableListOf()
result.dataList.forEach { stepData ->
val vitalData = Vitals().apply {
value = (stepData.value as Long).toString()
timeStamp = stepData.startTime.toString()
}
(vitals["steps"] as MutableList).add(vitalData)
}
}
private fun CoroutineScope.processSleepVital(sleepData: List<HealthDataPoint>) {
vitals["sleep"] = mutableListOf()
sleepData.forEach {
(vitals["sleep"] as MutableList).add(
Vitals().apply {
timeStamp = it.startTime.toString()
value = (it.getValue(DataType.SleepType.DURATION)?.toMillis().toString())
}
)
}
}
private suspend fun CoroutineScope.processHeartVital(
heartRateList: List<HealthDataPoint>,
) {
vitals["heartRate"] = mutableListOf()
heartRateList.forEach {
(vitals["heartRate"] as MutableList).add(processHeartRateData(it))
}
}
private fun processHeartRateData(heartRateData: HealthDataPoint) =
Vitals().apply {
heartRateData.getValue(DataType.HeartRateType.MAX_HEART_RATE)?.let {
value = it.toString()
}
timeStamp = heartRateData.startTime.toString()
}
fun destroy() {
scope.cancel()
}
}

@ -0,0 +1,13 @@
package com.cloudsolutions.HMGPatientApp.watch.samsung_watch.model
data class Vitals(
var value : String = "",
var timeStamp :String = ""
){
override fun toString(): String {
return """{
"value": "$value",
"timeStamp": "$timeStamp"}
""".trimIndent()
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 14 KiB

@ -0,0 +1,274 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.cloudsolutions.HMGPatientApp">
<!--
io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here.
-->
<uses-permission
android:name="android.permission.ACTIVITY_RECOGNITION"
tools:node="remove" />
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:node="remove" /> <!-- <uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove"/> -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" tools:node="remove"/> -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove"/> -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_SCAN" tools:node="remove"/> -->
<uses-permission
android:name="android.permission.BROADCAST_STICKY"
tools:node="remove" />
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" /> <!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> -->
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE"
tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
<!-- Added by open_filex -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" tools:node="remove" />
<uses-permission
android:name="android.permission.ACCESS_BACKGROUND_LOCATION"
tools:node="remove" /> <!-- <uses-permission android:name="android.permission.INTERNET" /> -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
<uses-feature android:name="android.hardware.camera.any" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-feature
android:name="android.hardware.sensor.stepcounter"
android:required="false"
tools:node="replace" />
<uses-feature
android:name="android.hardware.sensor.stepdetector"
android:required="false"
tools:node="replace" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.VIDEO_CAPTURE" />
<uses-permission android:name="android.permission.AUDIO_CAPTURE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
<uses-feature
android:name="android.hardware.location.network"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-permission android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA" /> <!-- <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" /> -->
<!-- Wifi Permissions -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> -->
<!-- Detect Reboot Permission -->
<!-- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> -->
<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
<package android:name="com.whatsapp" />
<package android:name="com.whatsapp.w4b" />
</queries>
<application
android:foregroundServiceType="mediaPlayback|connectedDevice|dataSync"
android:name=".Application"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher_local"
android:label="Dr. Alhabib Beta"
android:screenOrientation="sensorPortrait"
android:showOnLockScreen="true"
android:usesCleartextTraffic="true"
tools:replace="android:label">
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="102857389"/>
<!-- <activity-->
<!-- android:name="com.cloud.hmg_patient_app.whatsapp.WhatsAppCodeActivity"-->
<!-- android:exported="true"-->
<!-- android:enabled="true"-->
<!-- android:launchMode="standard"-->
<!-- >-->
<!-- <intent-filter>-->
<!-- <action android:name="com.whatsapp.otp.OTP_RETRIEVED" />-->
<!-- </intent-filter>-->
<!-- </activity>-->
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:enabled="true"
android:exported="true"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:showOnLockScreen="true"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize"
tools:node="merge">
<!--
Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI.
-->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" />
<!--
Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame.
-->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity> <!-- <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver" android:exported="true"> -->
<!-- <intent-filter> -->
<!-- <action android:name="android.intent.action.BOOT_COMPLETED"/> -->
<!-- <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> -->
<!-- </intent-filter> -->
<!-- </receiver> -->
<!-- Geofencing -->
<!-- <service-->
<!-- android:name=".geofence.intent_receivers.GeofenceTransitionsJobIntentService"-->
<!-- android:exported="true"-->
<!-- android:permission="android.permission.BIND_JOB_SERVICE" />-->
<!-- <receiver-->
<!-- android:name=".geofence.intent_receivers.GeofenceBroadcastReceiver"-->
<!-- android:enabled="true"-->
<!-- android:exported="false" />-->
<!-- <receiver-->
<!-- android:name=".geofence.intent_receivers.GeofencingRebootBroadcastReceiver"-->
<!-- android:enabled="true"-->
<!-- android:exported="false">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.BOOT_COMPLETED" />-->
<!-- <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />-->
<!-- </intent-filter>-->
<!-- </receiver>-->
<!-- <receiver-->
<!-- android:name=".geofence.intent_receivers.LocationProviderChangeReceiver"-->
<!-- android:exported="false">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.location.PROVIDERS_CHANGED" />-->
<!-- </intent-filter>-->
<!-- </receiver>-->
<!-- <service-->
<!-- android:name=".geofence.intent_receivers.ReregisterGeofenceJobService"-->
<!-- android:exported="true"-->
<!-- android:permission="android.permission.BIND_JOB_SERVICE" /> &lt;!&ndash; Geofencing &ndash;&gt;-->
<!--
Huawei Push Notifications
Set push kit auto enable to true (for obtaining the token on initialize)
-->
<!-- <meta-data -->
<!-- android:name="push_kit_auto_init_enabled" -->
<!-- android:value="true" /> -->
<!-- These receivers are for sending scheduled local notifications -->
<!-- <receiver-->
<!-- android:name="com.huawei.hms.flutter.push.receiver.local.HmsLocalNotificationBootEventReceiver"-->
<!-- android:exported="false">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.BOOT_COMPLETED" />-->
<!-- </intent-filter>-->
<!-- </receiver>-->
<!-- <receiver-->
<!-- android:name="com.huawei.hms.flutter.push.receiver.local.HmsLocalNotificationScheduledPublisher"-->
<!-- android:enabled="true"-->
<!-- android:exported="false" />-->
<!-- <receiver-->
<!-- android:name="com.huawei.hms.flutter.push.receiver.BackgroundMessageBroadcastReceiver"-->
<!-- android:enabled="true"-->
<!-- android:exported="true">-->
<!-- <intent-filter>-->
<!-- <action android:name="com.huawei.hms.flutter.push.receiver.BACKGROUND_REMOTE_MESSAGE" />-->
<!-- </intent-filter>-->
<!-- </receiver> &lt;!&ndash; Huawei Push Notifications &ndash;&gt;-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyB6TERnxIr0yJ3qG4ULBZbu0sAD4tGqtng" />
<!--
Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java
-->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>

@ -0,0 +1,84 @@
package com.ejada.hmg
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.util.Log
import android.view.WindowManager
import androidx.annotation.NonNull
import androidx.annotation.Nullable
import androidx.annotation.RequiresApi
import com.ejada.hmg.penguin.PenguinInPlatformBridge
import com.ejada.hmg.watch.huawei.HuaweiWatch
import com.ejada.hmg.watch.huawei.samsung_watch.SamsungWatch
import com.huawei.hms.hihealth.result.HealthKitAuthResult
import com.huawei.hms.support.api.entity.auth.Scope
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterFragmentActivity() {
private var huaweiWatch : HuaweiWatch? = null
@RequiresApi(Build.VERSION_CODES.O)
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
// Create Flutter Platform Bridge
this.window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)
PenguinInPlatformBridge(flutterEngine, this).create()
SamsungWatch(flutterEngine, this)
huaweiWatch = HuaweiWatch(flutterEngine, this)
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
val granted = grantResults.all { it == PackageManager.PERMISSION_GRANTED }
val intent = Intent("PERMISSION_RESULT_ACTION").apply {
putExtra("PERMISSION_GRANTED", granted)
}
sendBroadcast(intent)
// Log the request code and permission results
Log.d("PermissionsResult", "Request Code: $requestCode")
Log.d("PermissionsResult", "Permissions: ${permissions.joinToString()}")
Log.d("PermissionsResult", "Grant Results: ${grantResults.joinToString()}")
}
override fun onResume() {
super.onResume()
}
// override fun onActivityResult(requestCode: Int, resultCode: Int, @Nullable data: Intent?) {
// super.onActivityResult(requestCode, resultCode, data)
//
// // Process only the response result of the authorization process.
// if (requestCode == 1002) {
// // Obtain the authorization response result from the intent.
// val result: HealthKitAuthResult? = huaweiWatch?.mSettingController?.parseHealthKitAuthResultFromIntent(data)
// if (result == null) {
// Log.w(huaweiWatch?.TAG, "authorization fail")
// return
// }
//
// if (result.isSuccess) {
// Log.i(huaweiWatch?.TAG, "authorization success")
// if (result.getAuthAccount() != null && result.authAccount.authorizedScopes != null) {
// val authorizedScopes: MutableSet<Scope?> = result.authAccount.authorizedScopes
// if(authorizedScopes.isNotEmpty()) {
// huaweiWatch?.getHealthAppAuthorization()
// }
// }
// } else {
// Log.w("MainActivty", "authorization fail, errorCode:" + result.getErrorCode())
// }
// }
// }
}

@ -0,0 +1,402 @@
package com.ejada.hmg.watch.huawei.samsung_watch
import com.ejada.hmg.MainActivity
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall
import com.ejada.hmg.watch.huawei.samsung_watch.model.Vitals
import com.samsung.android.sdk.health.data.HealthDataService
import com.samsung.android.sdk.health.data.HealthDataStore
import com.samsung.android.sdk.health.data.data.AggregatedData
import com.samsung.android.sdk.health.data.data.HealthDataPoint
import com.samsung.android.sdk.health.data.permission.AccessType
import com.samsung.android.sdk.health.data.permission.Permission
import com.samsung.android.sdk.health.data.request.DataType
import com.samsung.android.sdk.health.data.request.DataTypes
import com.samsung.android.sdk.health.data.request.LocalTimeFilter
import com.samsung.android.sdk.health.data.request.LocalTimeGroup
import com.samsung.android.sdk.health.data.request.LocalTimeGroupUnit
import com.samsung.android.sdk.health.data.request.Ordering
import com.samsung.android.sdk.health.data.response.DataResponse
import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
import java.time.LocalDateTime
import java.time.LocalTime
class SamsungWatch(
private var flutterEngine: FlutterEngine,
private var mainActivity: MainActivity
) {
private lateinit var channel: MethodChannel
private lateinit var dataStore: HealthDataStore
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
private val TAG = "SamsungWatch"
private lateinit var vitals: MutableMap<String, List<Vitals>>
companion object {
private const val CHANNEL = "samsung_watch"
}
init{
create()
}
@RequiresApi(Build.VERSION_CODES.O)
fun create() {
Log.d(TAG, "create: is called")
// openTok = OpenTok(mainActivity, flutterEngine)
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
when (call.method) {
"init" -> {
Log.d(TAG, "onMethodCall: init called")
dataStore = HealthDataService.getStore(mainActivity)
vitals = mutableMapOf()
result.success("initialized")
}
"getPermission"->{
if(!this::dataStore.isInitialized)
result.error("DataStoreNotInitialized", "Please call init before requesting permissions", null)
val permSet = setOf(
Permission.of(DataTypes.HEART_RATE, AccessType.READ),
Permission.of(DataTypes.STEPS, AccessType.READ),
Permission.of(DataTypes.BLOOD_OXYGEN, AccessType.READ),
Permission.of(DataTypes.ACTIVITY_SUMMARY, AccessType.READ),
Permission.of(DataTypes.SLEEP, AccessType.READ),
Permission.of(DataTypes.BODY_TEMPERATURE, AccessType.READ),
Permission.of(DataTypes.EXERCISE, AccessType.READ),
// Permission.of(DataTypes.SKIN_TEMPERATURE, AccessType.READ),
// Permission.of(DataTypes.NUTRITION, AccessType.READ),
)
scope.launch {
try {
var granted = dataStore.getGrantedPermissions(permSet)
if (granted.containsAll(permSet)) {
result.success("Permission Granted")
return@launch
}
granted = dataStore.requestPermissions(permSet, mainActivity)
if (granted.containsAll(permSet)) {
result.success("Permission Granted") // adapt result as needed
return@launch
}
result.error("PermissionError", "Permission Not Granted", null) // adapt result as needed
} catch (e: Exception) {
Log.e(TAG, "create: getPermission failed", e)
result.error("PermissionError", e.message, null)
}
}
}
"getHeartRate"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val readRequest = DataTypes.HEART_RATE.readDataRequestBuilder
.setLocalTimeFilter(localTimeFilter)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val heartRateList = dataStore.readData(readRequest).dataList
processHeartVital(heartRateList)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals}")
result.success("Data is obtained")
}
}
"getSleepData" -> {
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val readRequest = DataTypes.SLEEP.readDataRequestBuilder
.setLocalTimeFilter(localTimeFilter)
.setOrdering(Ordering.ASC)
.build()
scope.launch {
val sleepData = dataStore.readData(readRequest).dataList
processSleepVital(sleepData)
print("the data is $vitals")
Log.d(TAG, "the data is $vitals")
result.success("Data is obtained")
}
}
"steps"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val localTimeGroup = LocalTimeGroup.of(LocalTimeGroupUnit.HOURLY, 1)
val aggregateRequest = DataType.StepsType.TOTAL.requestBuilder
.setLocalTimeFilterWithGroup(localTimeFilter, localTimeGroup)
.setOrdering(Ordering.ASC)
.build()
scope.launch {
val steps = dataStore.aggregateData(aggregateRequest)
processStepsCount(steps)
print("the data is $vitals")
Log.d(TAG, "the data is $vitals")
result.success("Data is obtained")
}
}
"activitySummary"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val localTimeGroup = LocalTimeGroup.of(LocalTimeGroupUnit.HOURLY, 1)
val readRequest = DataType.ActivitySummaryType.TOTAL_ACTIVE_CALORIES_BURNED
.requestBuilder
.setLocalTimeFilterWithGroup(localTimeFilter, localTimeGroup)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val activityResult = dataStore.aggregateData(readRequest).dataList
processActivity(activityResult)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals}")
result.success("Data is obtained")
}
// val readRequest = DataTypes.EXERCISE.readDataRequestBuilder
// .setLocalTimeFilter(localTimeFilter)
// .build()
//
// scope.launch{
// try {
// val readResult = dataStore.readData(readRequest)
// val dataPoints = readResult.dataList
//
// processActivity(dataPoints)
//
//
// } catch (e: Exception) {
// e.printStackTrace()
// }
// result.success("Data is obtained")
// }
}
"bloodOxygen"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val readRequest = DataTypes.BLOOD_OXYGEN.readDataRequestBuilder
.setLocalTimeFilter(localTimeFilter)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val bloodOxygenList = dataStore.readData(readRequest).dataList
processBloodOxygen(bloodOxygenList)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals["bloodOxygen"]}")
result.success("Data is obtained")
}
}
"bodyTemperature"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val readRequest = DataTypes.BODY_TEMPERATURE.readDataRequestBuilder
.setLocalTimeFilter(localTimeFilter)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val bodyTemperatureList = dataStore.readData(readRequest).dataList
processBodyTemperature(bodyTemperatureList)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals["bodyTemperature"]}")
result.success("Data is obtained")
}
}
"distance"->{
val dateTime = LocalDateTime.now().with(LocalTime.MIDNIGHT).minusDays(365)
val localTimeFilter = LocalTimeFilter.of(dateTime, LocalDateTime.now())
val localTimeGroup = LocalTimeGroup.of(LocalTimeGroupUnit.HOURLY, 1)
val readRequest = DataType.ActivitySummaryType.TOTAL_DISTANCE.requestBuilder
.setLocalTimeFilterWithGroup(localTimeFilter, localTimeGroup)
.setOrdering(Ordering.DESC)
.build()
scope.launch {
val activityResult = dataStore.aggregateData(readRequest).dataList
processDistance(activityResult)
Log.d("TAG"," the data is ${vitals}")
print("the data is ${vitals}")
result.success("Data is obtained")
}
}
"retrieveData"->{
if(vitals.isEmpty()){
result.error("NoDataFound", "No Data was obtained", null)
return@setMethodCallHandler
}
result.success("""
{
"heartRate": ${vitals["heartRate"]},
"steps": ${vitals["steps"]},
"sleep": ${vitals["sleep"]},
"activity": ${vitals["activity"]},
"bloodOxygen": ${vitals["bloodOxygen"]},
"bodyTemperature": ${vitals["bodyTemperature"]},
"distance": ${vitals["distance"]}
}
""".trimIndent())
}
"closeCoroutineScope"->{
destroy()
result.success("Coroutine Scope Cancelled")
}
else -> {
result.notImplemented()
}
}
}
}
private fun CoroutineScope.processDistance(activityResult: List<AggregatedData<Float>>) {
vitals["distance"] = mutableListOf()
activityResult.forEach { stepData ->
val vitalData = Vitals().apply {
value = stepData.value.toString()
timeStamp = stepData.startTime.toString()
}
(vitals["distance"] as MutableList).add(vitalData)
}
}
private fun CoroutineScope.processBodyTemperature( bodyTemperatureList :List<HealthDataPoint>) {
vitals["bodyTemperature"] = mutableListOf()
bodyTemperatureList.forEach { stepData ->
val vitalData = Vitals().apply {
value = stepData.getValue(DataType.BodyTemperatureType.BODY_TEMPERATURE).toString()
timeStamp = stepData.endTime.toString()
}
(vitals["bodyTemperature"] as MutableList).add(vitalData)
}
}
private fun CoroutineScope.processBloodOxygen( bloodOxygenList :List<HealthDataPoint>) {
vitals["bloodOxygen"] = mutableListOf()
bloodOxygenList.forEach { stepData ->
val vitalData = Vitals().apply {
value = stepData.getValue(DataType.BloodOxygenType.OXYGEN_SATURATION).toString()
timeStamp = stepData.endTime.toString()
}
(vitals["bloodOxygen"] as MutableList).add(vitalData)
}
}
// private fun CoroutineScope.processActivity(activityResult: List<AggregatedData<Float>>) {
//
// vitals["activity"] = mutableListOf()
// activityResult.forEach { stepData ->
// val vitalData = Vitals().apply {
//
// value = stepData.value.toString()
// timeStamp = stepData.startTime.toString()
// }
// (vitals["activity"] as MutableList).add(vitalData)
// }
// }
private fun CoroutineScope.processActivity(activityResult: List<AggregatedData<Float>>) {
vitals["activity"] = mutableListOf()
activityResult.forEach { stepData ->
val vitalData = Vitals().apply {
value = stepData.value.toString()
timeStamp = stepData.startTime.toString()
}
(vitals["activity"] as MutableList).add(vitalData)
}
// dataPoints.forEach { dataPoint ->
// val sessions = dataPoint.getValue(DataType.ExerciseType.SESSIONS)
//
// sessions?.forEach { session ->
//
// val exerciseSessionCalories = session.calories
// val vitalData = Vitals().apply {
// value = exerciseSessionCalories.toString()
// timeStamp = session.startTime.toString()
// }
// (vitals["activity"] as MutableList).add(vitalData)
// }
// }
}
private fun CoroutineScope.processStepsCount(result: DataResponse<AggregatedData<Long>>) {
val stepCount = ArrayList<AggregatedData<Long>>()
var totalSteps: Long = 0
vitals["steps"] = mutableListOf()
result.dataList.forEach { stepData ->
val vitalData = Vitals().apply {
value = (stepData.value as Long).toString()
timeStamp = stepData.startTime.toString()
}
(vitals["steps"] as MutableList).add(vitalData)
}
}
private fun CoroutineScope.processSleepVital(sleepData: List<HealthDataPoint>) {
vitals["sleep"] = mutableListOf()
sleepData.forEach {
(vitals["sleep"] as MutableList).add(
Vitals().apply {
timeStamp = it.startTime.toString()
value = (it.getValue(DataType.SleepType.DURATION)?.toMillis().toString())
}
)
}
}
private suspend fun CoroutineScope.processHeartVital(
heartRateList: List<HealthDataPoint>,
) {
vitals["heartRate"] = mutableListOf()
heartRateList.forEach {
(vitals["heartRate"] as MutableList).add(processHeartRateData(it))
}
}
private fun processHeartRateData(heartRateData: HealthDataPoint) =
Vitals().apply {
heartRateData.getValue(DataType.HeartRateType.MAX_HEART_RATE)?.let {
value = it.toString()
}
timeStamp = heartRateData.startTime.toString()
}
fun destroy() {
scope.cancel()
}
}

@ -0,0 +1,13 @@
package com.ejada.hmg.watch.huawei.samsung_watch.model
data class Vitals(
var value : String = "",
var timeStamp :String = ""
){
override fun toString(): String {
return """{
"value": "$value",
"timeStamp": "$timeStamp"}
""".trimIndent()
}
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1021 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.cloud.diplomaticquarterapp.whatsapp.WhatsAppCodeActivity">
</androidx.constraintlayout.widget.ConstraintLayout>

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal">
<FrameLayout
android:id="@+id/publisher_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF9800" />
</LinearLayout>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal">
<FrameLayout
android:id="@+id/subscriber_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#3F51B5" />
<TextView
android:text="Remote"
android:textColor="#FFFFFF"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@drawable/*,@raw/slow_spring_board" />

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

@ -0,0 +1,3 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- <string name="mapbox_access_token" translatable="false" tools:ignore="UnusedResources">sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg</string>-->
</resources>

@ -0,0 +1,23 @@
<resources>
<string name="app_name">HMG Patient App</string>
<string name="geofence_unknown_error">
Unknown error: the Geofence service is not available now.
</string>
<string name="geofence_not_available">
Geofence service is not available now. Go to Settings>Location>Mode and choose High accuracy.
</string>
<string name="geofence_too_many_geofences">
Your app has registered too many geofences.
</string>
<string name="geofence_too_many_pending_intents">
You have provided too many PendingIntents to the addGeofences() call.
</string>
<string name="GEOFENCE_INSUFFICIENT_LOCATION_PERMISSION">
App do not have permission to access location service.
</string>
<string name="GEOFENCE_REQUEST_TOO_FREQUENT">
Geofence requests happened too frequently.
</string>
<string name="mapbox_access_token" translatable="false">pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ</string>
</resources>

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@android:color/white</item>
</style>
</resources>

File diff suppressed because one or more lines are too long

@ -3,9 +3,45 @@
"project_number": "815750722565",
"firebase_url": "https://api-project-815750722565.firebaseio.com",
"project_id": "api-project-815750722565",
"storage_bucket": "api-project-815750722565.appspot.com"
"storage_bucket": "api-project-815750722565.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:815750722565:android:fa20b3a2401e08633c186c",
"android_client_info": {
"package_name": "com.cloudsolutions.HMGPatientApp"
}
},
"oauth_client": [
{
"client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyDZDeWcBlRE3YfJWYt_DCiToVnANfaj8qg"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "815750722565-0cq9366orvsk5ipivq6lijcj56u03fr7.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.void.demo"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:815750722565:android:62281cd3e5df4063",

@ -1,3 +1,10 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
#org.gradle.jvmargs=-xmx4608m
android.enableR8=true
android.enableJetifier=true
android.useDeprecatedNdk=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
android.useAndroidX=true
android.enableImpeller=false

@ -19,6 +19,9 @@ pluginManagement {
plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
// id("com.android.application") version "8.9.3" apply false
// START: FlutterFire Configuration
id("com.google.gms.google-services") version("4.4.1") apply false
// END: FlutterFire Configuration
id("com.android.application") version "8.9.3" apply false
id("org.jetbrains.kotlin.android") version "2.1.0" apply false
}

@ -1,767 +1 @@
{
"nm": "HDFC Success",
"h": 512,
"w": 512,
"meta": {
"g": "LottieFiles AE 1.0.0"
},
"layers": [
{
"ty": 4,
"nm": "check",
"sr": 1,
"st": 0,
"op": 240,
"ip": 0,
"hasMask": false,
"ao": 0,
"ks": {
"a": {
"a": 0,
"k": [
0,
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
256,
256,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
},
"ef": [],
"shapes": [
{
"ty": "gr",
"nm": "Shape 1",
"it": [
{
"ty": "sh",
"nm": "Path 1",
"d": 1,
"ks": {
"a": 0,
"k": {
"c": false,
"i": [
[
0,
0
],
[
0,
0
],
[
0,
0
]
],
"o": [
[
0,
0
],
[
0,
0
],
[
0,
0
]
],
"v": [
[
-82.5,
4.5
],
[
-31,
55
],
[
73,
-52.5
]
]
}
}
},
{
"ty": "tm",
"nm": "Trim Paths 1",
"e": {
"a": 1,
"k": [
{
"o": {
"x": 1,
"y": 0.076
},
"i": {
"x": 0.667,
"y": 1
},
"s": [
0
],
"t": 60
},
{
"s": [
100
],
"t": 85
}
]
},
"o": {
"a": 0,
"k": 0
},
"s": {
"a": 0,
"k": 0
},
"m": 1
},
{
"ty": "st",
"nm": "Stroke 1",
"lc": 2,
"lj": 2,
"ml": 1,
"o": {
"a": 0,
"k": 100
},
"w": {
"a": 0,
"k": 30
},
"c": {
"a": 0,
"k": [
1,
1,
1
]
}
},
{
"ty": "tr",
"a": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
0,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
}
]
}
],
"ind": 1
},
{
"ty": 4,
"nm": "Shape Layer 2",
"sr": 1,
"st": 0,
"op": 240,
"ip": 0,
"hasMask": false,
"ao": 0,
"ks": {
"a": {
"a": 0,
"k": [
0,
0,
0
]
},
"s": {
"a": 1,
"k": [
{
"o": {
"x": 0.656,
"y": 0.872
},
"i": {
"x": 0,
"y": 0.98
},
"s": [
0,
0,
100
],
"t": 20
},
{
"s": [
150,
150,
100
],
"t": 60
}
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
256,
257.86,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
},
"ef": [],
"shapes": [
{
"ty": "gr",
"nm": "Ellipse 1",
"it": [
{
"ty": "el",
"nm": "Ellipse Path 1",
"d": 1,
"p": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
236,
236
]
}
},
{
"ty": "fl",
"nm": "Fill 1",
"c": {
"a": 0,
"k": [
0.094,
0.761,
0.451
]
},
"r": 1,
"o": {
"a": 0,
"k": 100
}
},
{
"ty": "tr",
"a": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
0,
-3
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
}
]
}
],
"ind": 2
},
{
"ty": 4,
"nm": "Shape Layer 1",
"sr": 1,
"st": 0,
"op": 240,
"ip": 0,
"hasMask": false,
"ao": 0,
"ks": {
"a": {
"a": 0,
"k": [
0,
0,
0
]
},
"s": {
"a": 1,
"k": [
{
"o": {
"x": 0.477,
"y": 0.587
},
"i": {
"x": 0,
"y": 0.999
},
"s": [
0,
0,
100
],
"t": 10
},
{
"o": {
"x": 0.167,
"y": 0.167
},
"i": {
"x": 0.833,
"y": 0.833
},
"s": [
150,
150,
100
],
"t": 50
},
{
"o": {
"x": 0.167,
"y": 0
},
"i": {
"x": 0.833,
"y": 1
},
"s": [
150,
150,
100
],
"t": 76
},
{
"s": [
210,
210,
100
],
"t": 123
}
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
256,
257.86,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 1,
"k": [
{
"o": {
"x": 0.912,
"y": 0.073
},
"i": {
"x": 0.626,
"y": 0.729
},
"s": [
100
],
"t": 76
},
{
"s": [
0
],
"t": 119
}
]
}
},
"ef": [],
"shapes": [
{
"ty": "gr",
"nm": "Ellipse 1",
"it": [
{
"ty": "el",
"nm": "Ellipse Path 1",
"d": 1,
"p": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
236,
236
]
}
},
{
"ty": "st",
"nm": "Stroke 1",
"lc": 1,
"lj": 1,
"ml": 4,
"o": {
"a": 0,
"k": 100
},
"w": {
"a": 0,
"k": 2
},
"c": {
"a": 0,
"k": [
1,
1,
1
]
}
},
{
"ty": "fl",
"nm": "Fill 1",
"c": {
"a": 0,
"k": [
0.784,
0.945,
0.878
]
},
"r": 1,
"o": {
"a": 0,
"k": 100
}
},
{
"ty": "tr",
"a": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
0,
-3
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
}
]
}
],
"ind": 3
},
{
"ty": 4,
"nm": "BG",
"sr": 1,
"st": 0,
"op": 240,
"ip": 0,
"hasMask": false,
"ao": 0,
"ks": {
"a": {
"a": 0,
"k": [
0,
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
256,
256,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
},
"ef": [],
"shapes": [
{
"ty": "gr",
"nm": "Rectangle 1",
"it": [
{
"ty": "rc",
"nm": "Rectangle Path 1",
"d": 1,
"p": {
"a": 0,
"k": [
0,
0
]
},
"r": {
"a": 0,
"k": 0
},
"s": {
"a": 0,
"k": [
554,
556
]
}
},
{
"ty": "fl",
"nm": "Fill 1",
"c": {
"a": 0,
"k": [
0.972,
0.972,
0.972
]
},
"r": 1,
"o": {
"a": 0,
"k": 100
}
},
{
"ty": "tr",
"a": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
-1,
6
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
}
]
}
],
"ind": 4
}
],
"v": "4.8.0",
"fr": 60,
"op": 130,
"ip": 0,
"assets": []
}
{"nm":"Main Scene","ddd":0,"h":512,"w":512,"meta":{"g":"@lottiefiles/creator 1.75.0"},"layers":[{"ty":4,"nm":"check","sr":1,"st":0,"op":240,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[256,256],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 1","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-82.5,4.5],[-31,55],[73,-52.5]]},"ix":2}},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":1,"y":0.076},"i":{"x":0.667,"y":1},"s":[0],"t":60},{"s":[100],"t":85}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"c":{"a":0,"k":[1,1,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"Shape Layer 2","sr":1,"st":0,"op":240,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.656,"y":0.872},"i":{"x":0,"y":0.98},"s":[0,0,100],"t":20},{"s":[150,150,100],"t":60}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[256,257.86],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[236,236],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0941,0.7608,0.451],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,-3],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"Shape Layer 1","sr":1,"st":0,"op":240,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.477,"y":0.587},"i":{"x":0,"y":0.999},"s":[0,0,100],"t":10},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[150,150,100],"t":50},{"o":{"x":0.167,"y":0},"i":{"x":0.833,"y":1},"s":[150,150,100],"t":76},{"s":[210,210,100],"t":123}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[256,257.86],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.912,"y":0.073},"i":{"x":0.626,"y":0.729},"s":[100],"t":76},{"s":[0],"t":119}],"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[236,236],"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"c":{"a":0,"k":[1,1,1],"ix":3}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7843,0.9451,0.8784],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,-3],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3}],"v":"5.7.0","fr":60,"op":130,"ip":0,"assets":[]}

@ -0,0 +1,767 @@
{
"nm": "HDFC Success",
"h": 512,
"w": 512,
"meta": {
"g": "LottieFiles AE 1.0.0"
},
"layers": [
{
"ty": 4,
"nm": "check",
"sr": 1,
"st": 0,
"op": 240,
"ip": 0,
"hasMask": false,
"ao": 0,
"ks": {
"a": {
"a": 0,
"k": [
0,
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
256,
256,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
},
"ef": [],
"shapes": [
{
"ty": "gr",
"nm": "Shape 1",
"it": [
{
"ty": "sh",
"nm": "Path 1",
"d": 1,
"ks": {
"a": 0,
"k": {
"c": false,
"i": [
[
0,
0
],
[
0,
0
],
[
0,
0
]
],
"o": [
[
0,
0
],
[
0,
0
],
[
0,
0
]
],
"v": [
[
-82.5,
4.5
],
[
-31,
55
],
[
73,
-52.5
]
]
}
}
},
{
"ty": "tm",
"nm": "Trim Paths 1",
"e": {
"a": 1,
"k": [
{
"o": {
"x": 1,
"y": 0.076
},
"i": {
"x": 0.667,
"y": 1
},
"s": [
0
],
"t": 60
},
{
"s": [
100
],
"t": 85
}
]
},
"o": {
"a": 0,
"k": 0
},
"s": {
"a": 0,
"k": 0
},
"m": 1
},
{
"ty": "st",
"nm": "Stroke 1",
"lc": 2,
"lj": 2,
"ml": 1,
"o": {
"a": 0,
"k": 100
},
"w": {
"a": 0,
"k": 30
},
"c": {
"a": 0,
"k": [
1,
1,
1
]
}
},
{
"ty": "tr",
"a": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
0,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
}
]
}
],
"ind": 1
},
{
"ty": 4,
"nm": "Shape Layer 2",
"sr": 1,
"st": 0,
"op": 240,
"ip": 0,
"hasMask": false,
"ao": 0,
"ks": {
"a": {
"a": 0,
"k": [
0,
0,
0
]
},
"s": {
"a": 1,
"k": [
{
"o": {
"x": 0.656,
"y": 0.872
},
"i": {
"x": 0,
"y": 0.98
},
"s": [
0,
0,
100
],
"t": 20
},
{
"s": [
150,
150,
100
],
"t": 60
}
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
256,
257.86,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
},
"ef": [],
"shapes": [
{
"ty": "gr",
"nm": "Ellipse 1",
"it": [
{
"ty": "el",
"nm": "Ellipse Path 1",
"d": 1,
"p": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
236,
236
]
}
},
{
"ty": "fl",
"nm": "Fill 1",
"c": {
"a": 0,
"k": [
0.094,
0.761,
0.451
]
},
"r": 1,
"o": {
"a": 0,
"k": 100
}
},
{
"ty": "tr",
"a": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
0,
-3
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
}
]
}
],
"ind": 2
},
{
"ty": 4,
"nm": "Shape Layer 1",
"sr": 1,
"st": 0,
"op": 240,
"ip": 0,
"hasMask": false,
"ao": 0,
"ks": {
"a": {
"a": 0,
"k": [
0,
0,
0
]
},
"s": {
"a": 1,
"k": [
{
"o": {
"x": 0.477,
"y": 0.587
},
"i": {
"x": 0,
"y": 0.999
},
"s": [
0,
0,
100
],
"t": 10
},
{
"o": {
"x": 0.167,
"y": 0.167
},
"i": {
"x": 0.833,
"y": 0.833
},
"s": [
150,
150,
100
],
"t": 50
},
{
"o": {
"x": 0.167,
"y": 0
},
"i": {
"x": 0.833,
"y": 1
},
"s": [
150,
150,
100
],
"t": 76
},
{
"s": [
210,
210,
100
],
"t": 123
}
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
256,
257.86,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 1,
"k": [
{
"o": {
"x": 0.912,
"y": 0.073
},
"i": {
"x": 0.626,
"y": 0.729
},
"s": [
100
],
"t": 76
},
{
"s": [
0
],
"t": 119
}
]
}
},
"ef": [],
"shapes": [
{
"ty": "gr",
"nm": "Ellipse 1",
"it": [
{
"ty": "el",
"nm": "Ellipse Path 1",
"d": 1,
"p": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
236,
236
]
}
},
{
"ty": "st",
"nm": "Stroke 1",
"lc": 1,
"lj": 1,
"ml": 4,
"o": {
"a": 0,
"k": 100
},
"w": {
"a": 0,
"k": 2
},
"c": {
"a": 0,
"k": [
1,
1,
1
]
}
},
{
"ty": "fl",
"nm": "Fill 1",
"c": {
"a": 0,
"k": [
0.784,
0.945,
0.878
]
},
"r": 1,
"o": {
"a": 0,
"k": 100
}
},
{
"ty": "tr",
"a": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
0,
-3
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
}
]
}
],
"ind": 3
},
{
"ty": 4,
"nm": "BG",
"sr": 1,
"st": 0,
"op": 240,
"ip": 0,
"hasMask": false,
"ao": 0,
"ks": {
"a": {
"a": 0,
"k": [
0,
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
256,
256,
0
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
},
"ef": [],
"shapes": [
{
"ty": "gr",
"nm": "Rectangle 1",
"it": [
{
"ty": "rc",
"nm": "Rectangle Path 1",
"d": 1,
"p": {
"a": 0,
"k": [
0,
0
]
},
"r": {
"a": 0,
"k": 0
},
"s": {
"a": 0,
"k": [
554,
556
]
}
},
{
"ty": "fl",
"nm": "Fill 1",
"c": {
"a": 0,
"k": [
0.972,
0.972,
0.972
]
},
"r": 1,
"o": {
"a": 0,
"k": 100
}
},
{
"ty": "tr",
"a": {
"a": 0,
"k": [
0,
0
]
},
"s": {
"a": 0,
"k": [
100,
100
]
},
"sk": {
"a": 0,
"k": 0
},
"p": {
"a": 0,
"k": [
-1,
6
]
},
"r": {
"a": 0,
"k": 0
},
"sa": {
"a": 0,
"k": 0
},
"o": {
"a": 0,
"k": 100
}
}
]
}
],
"ind": 4
}
],
"v": "4.8.0",
"fr": 60,
"op": 130,
"ip": 0,
"assets": []
}

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.69737 2.72656C3.62187 2.72656 2.75 3.60067 2.75 4.67894V8.09561C2.75 11.268 5.07215 13.8967 8.10526 14.3662V16.6373C8.10526 19.7373 10.6119 22.2504 13.7039 22.2504C16.796 22.2504 19.3026 19.7373 19.3026 16.6373V16.2267C20.4373 15.8248 21.2503 14.7399 21.2503 13.4647C21.2503 11.8473 19.9425 10.5361 18.3293 10.5361C16.716 10.5361 15.4082 11.8473 15.4082 13.4647C15.4082 14.7397 16.2209 15.8244 17.3553 16.2265V16.6373C17.3553 18.659 15.7205 20.298 13.7039 20.298C11.6874 20.298 10.0526 18.659 10.0526 16.6373V14.3662C13.0857 13.8967 15.4079 11.268 15.4079 8.09561V4.67894C15.4079 3.60067 14.536 2.72656 13.4605 2.72656H12.4864C12.4864 2.18743 12.0505 1.75 11.5127 1.75C10.975 1.75 10.5391 2.18706 10.5391 2.72619V4.67857C10.5391 5.21771 10.975 5.65476 11.5127 5.65476C12.0504 5.65476 12.4862 5.21791 12.4864 4.67894H13.4605V8.09561C13.4605 10.5217 11.4988 12.4885 9.07895 12.4885C6.65907 12.4885 4.69737 10.5217 4.69737 8.09561V4.67894H5.6709C5.6711 5.21791 6.10696 5.65476 6.64458 5.65476C7.18233 5.65476 7.61827 5.21771 7.61827 4.67857V3.72029L7.61842 3.70275L7.61827 3.68521V2.72619C7.61827 2.18706 7.18233 1.75 6.64458 1.75C6.10683 1.75 5.6709 2.18706 5.6709 2.72619L4.69737 2.72656Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,12 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_123_1694)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.1707 14.3497C10.5714 14.8032 11.0146 15.2543 11.5 15.7023C17.0382 10.5947 17.0382 5.10758 11.5 0C6.78476 4.34883 5.73545 9.32859 10.1707 14.3497ZM10.1718 15.911C3.92212 15.6171 0.195938 9.24452 2.88528 4.02846L6.43631 6.16151C5.73147 9.74708 7.31949 13.0632 10.1718 15.911ZM12.8282 15.911C15.6808 13.0627 17.268 9.74761 16.5637 6.16151L20.1147 4.02846C22.8041 9.24425 19.0779 15.6171 12.8282 15.911Z" fill="#ED1C2B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.693 17.7573C9.81603 17.3231 10.2356 16.9966 10.813 17H11.9329C12.4952 17.0001 12.9014 17.3397 13.0214 17.7543L13.349 18.1579L13.3494 18.1585C13.8212 18.7346 13.8213 19.5382 13.3497 20.1144L13.3477 20.1169L12.7117 20.8757L11.6381 19.628L12.425 18.6886C12.2703 18.6113 12.0914 18.5653 11.9136 18.5653H10.7927C10.606 18.5653 10.4204 18.6074 10.2652 18.6894L11.422 20.0704L12.3681 21.1759L14 23.1173L12.7678 24.1429L11.2826 22.3926L11.2821 22.3921L9.35486 20.1325L9.35305 20.1302C8.88204 19.5541 8.88234 18.751 9.35395 18.1751L9.693 17.7573ZM10.2311 18.0265C10.2311 17.7724 10.4296 17.5389 10.81 17.5414L10.8124 17.5414H11.9328C12.335 17.5415 12.5358 17.8463 12.4651 18.1152C12.2922 18.0573 12.105 18.0239 11.9136 18.0239H10.7927C10.6084 18.0239 10.4196 18.0515 10.2397 18.1096C10.234 18.0817 10.2311 18.0537 10.2311 18.0265Z" fill="#ED1C2B"/>
<path d="M10.1893 21.2858L11.1429 22.6576L10.1631 24.1429L9 23.0952L10.1893 21.2858Z" fill="#ED1C2B"/>
</g>
<defs>
<clipPath id="clip0_123_1694">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,7 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.7922 11.4353C15.3719 11.4353 15.9381 11.2775 16.4169 10.9824C16.903 11.2769 17.4767 11.4313 18.0621 11.4252L19.9216 10.8143C20.4456 10.4244 20.8053 9.88375 20.9406 9.28305C21.0759 8.6823 20.9784 8.05785 20.6646 7.5142C20.3508 6.97055 19.8397 6.54065 19.2168 6.29655C19.0745 5.7149 18.7163 5.1947 18.2014 4.82222L16.3862 4.24876H16.1819C15.7781 3.71696 15.172 3.33762 14.4787 3.18286L10.587 2.98535C9.94015 3.03388 9.33015 3.27744 8.85525 3.67686C8.63085 3.6291 8.40115 3.60434 8.1706 3.60306C7.61235 3.6041 7.06635 3.75097 6.59855 4.02596C6.13075 4.30094 5.7611 4.69228 5.53425 5.15275L4.05557 6.0983C3.68764 6.5483 3.48956 7.09315 3.49054 7.6525C3.4869 7.88635 3.52133 8.11945 3.59272 8.3443C3.20478 8.79875 2.99618 9.35715 3.00005 9.93085C2.99913 10.5963 3.28071 11.2367 3.78687 11.7204C3.82772 12.1967 4.01212 12.654 4.32011 13.0425C4.6281 13.4311 5.04795 13.7363 5.53425 13.925C6.09455 14.2421 6.569 14.6685 6.92265 15.1729C7.27635 15.6774 7.50025 16.247 7.57795 16.8398H8.93715V12.9682L7.61625 11.7941L6.72255 12.6879C6.52725 12.8831 6.2107 12.8831 6.0154 12.6879C5.82015 12.4926 5.82015 12.176 6.0154 11.9808L7.0574 10.9388L6.73985 9.1924L5.3272 8.48605C5.0802 8.36255 4.98009 8.0622 5.1036 7.8152C5.2271 7.56825 5.5274 7.4681 5.7744 7.5916L7.1578 8.2833L8.88865 7.1819L8.35535 5.75985C8.2584 5.5013 8.3894 5.2131 8.64795 5.1161C8.9065 5.01915 9.19475 5.15015 9.2917 5.4087L9.8605 6.9255H10.5599L10.8845 6.2763L10.4094 5.1676C10.3006 4.91379 10.4182 4.61985 10.672 4.51107C10.9258 4.4023 11.2198 4.51987 11.3285 4.77369L11.7414 5.7371L13.3913 6.03705C13.4005 6.0284 13.4102 6.02005 13.4202 6.01205L14.443 5.19385C14.6586 5.02135 14.9733 5.0563 15.1458 5.27195C15.3183 5.48755 15.2833 5.8022 15.0677 5.9747L14.3318 6.5634L15.1964 7.67495L15.5354 6.99705C15.6201 6.82765 15.7932 6.72065 15.9826 6.72065H17.2099C17.486 6.72065 17.7099 6.9445 17.7099 7.22065C17.7099 7.4968 17.486 7.72065 17.2099 7.72065H16.2916L16.082 8.13995L17.1138 8.3692C17.1537 8.3781 17.1923 8.3918 17.2289 8.4101L18.0471 8.8192C18.2941 8.9427 18.3942 9.243 18.2707 9.49C18.1472 9.737 17.8469 9.8371 17.5999 9.7136L16.8368 9.33205L15.0559 8.9363C14.9424 8.91105 14.8411 8.847 14.7697 8.7552L13.4552 7.06505L11.8235 6.7684C11.7927 6.79715 11.7578 6.8223 11.7192 6.84295L11.3689 7.54355V7.9479H12.0962C12.1739 7.9479 12.2504 7.966 12.3198 8.0007L13.9562 8.8189C14.2032 8.9424 14.3033 9.2427 14.1798 9.4897C14.0563 9.7367 13.756 9.8368 13.509 9.7133L11.9782 8.9479H11.3689V9.88005C11.3689 10.1562 11.1451 10.3801 10.8689 10.3801C10.5928 10.3801 10.3689 10.1562 10.3689 9.88005V7.9255H9.58275L7.7392 9.09865L8.0573 10.8482L9.76935 12.37C9.87605 12.4649 9.93715 12.6009 9.93715 12.7437V16.8398H11.3957V14.0725C11.395 13.5812 11.5469 13.0995 11.8341 12.6821C12.1212 12.2648 12.5322 11.9284 13.0205 11.7111C13.295 11.6163 13.3626 11.4887 13.4453 11.3323C13.5005 11.228 13.5624 11.111 13.6968 10.9824C13.8136 11.0544 13.9041 11.1182 13.9826 11.1735C14.2259 11.3451 14.3538 11.4353 14.7922 11.4353Z" fill="#ED1C2B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 19.0001H7.5V18.0001H11.5V19.0001Z" fill="#ED1C2B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 21.0001H7.5V20.0001H11.5V21.0001Z" fill="#ED1C2B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.4851 16.5301C15.5712 16.2262 15.8649 15.9976 16.2691 16H17.053C17.4466 16 17.731 16.2378 17.815 16.528L18.0443 16.8106L18.0446 16.8109C18.3748 17.2142 18.3749 17.7767 18.0448 18.1801L18.0434 18.1818L17.5982 18.713L16.8466 17.8396L17.3975 17.182C17.2892 17.1279 17.1639 17.0957 17.0395 17.0957H16.2549C16.1242 17.0957 15.9943 17.1252 15.8856 17.1826L16.6954 18.1493L17.3577 18.9231L18.5 20.2821L17.6374 21L16.5978 19.7748L16.5975 19.7744L15.2484 18.1927L15.2471 18.1912C14.9174 17.7878 14.9176 17.2257 15.2478 16.8225L15.4851 16.5301ZM15.8617 16.7185C15.8617 16.5407 16.0007 16.3772 16.267 16.379L16.2687 16.379H17.053C17.3345 16.379 17.475 16.5924 17.4256 16.7807C17.3045 16.7401 17.1735 16.7167 17.0395 16.7167H16.2549C16.1259 16.7167 15.9937 16.736 15.8678 16.7768C15.8638 16.7572 15.8617 16.7376 15.8617 16.7185Z" fill="#ED1C2B"/>
<path d="M15.8325 19L16.5 19.9603L15.8142 21L15 20.2666L15.8325 19Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 13.4143V17.0729C14 18.2086 14.7655 19.2016 15.8638 19.4906L18.9558 20.3043C20.8922 20.8139 22.612 18.9539 21.9526 17.0633L18.816 8.06961C18.514 7.20375 17.7584 6.57556 16.852 6.43678C15.352 6.20712 14 7.36788 14 8.88533V10.5859L13 9.58591V4H11V9.58582L10 10.5858V8.88533C10 7.36788 8.64799 6.20712 7.14802 6.43678C6.24157 6.57556 5.48596 7.20375 5.18399 8.06961L2.04736 17.0633C1.388 18.9539 3.1078 20.8139 5.04415 20.3043L8.13623 19.4906C9.23452 19.2016 10 18.2086 10 17.0729V13.4142L12 11.4143L14 13.4143Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 642 B

@ -0,0 +1,11 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.0277 13.6422C11.6388 13.2533 11.1657 12.9811 10.651 12.8489C10.5188 12.3343 10.2466 11.8612 9.85773 11.4723C9.33381 10.9483 8.6591 10.6359 7.95807 10.5929C7.24837 10.5452 6.59193 10.7867 6.11632 11.262C5.22393 12.1544 5.22362 13.6379 6.08381 14.7266L2.06961 18.7408C1.97672 18.8337 1.97672 18.9842 2.06961 19.0771L4.42289 21.4303C4.46933 21.4768 4.53003 21.5 4.59102 21.5C4.65202 21.5 4.71271 21.4768 4.75916 21.4303L8.77336 17.4161C9.86237 18.276 11.3459 18.2754 12.2379 17.3836C12.7136 16.908 12.951 16.2541 12.9071 15.5419C12.864 14.8409 12.5516 14.1661 12.0277 13.6422Z" fill="#ED1C2B"/>
<path d="M21.4303 4.42295L19.077 2.06967C18.9841 1.97678 18.8337 1.97678 18.7408 2.06967L14.7266 6.08387C13.6372 5.22337 12.1538 5.2243 11.262 6.11638C10.7864 6.59199 10.5489 7.24596 10.5928 7.95813C10.6359 8.65916 10.9483 9.33387 11.4722 9.85779C11.8611 10.2467 12.3343 10.5189 12.8489 10.6511C12.9811 11.1657 13.2533 11.6388 13.6422 12.0278C14.1661 12.5517 14.8408 12.8641 15.5419 12.9071C15.5976 12.9109 15.6533 12.9124 15.7084 12.9124C16.3556 12.9124 16.9455 12.6761 17.3836 12.238C18.276 11.3456 18.2763 9.86212 17.4161 8.77342L21.4303 4.75922C21.5232 4.66633 21.5232 4.51584 21.4303 4.42295Z" fill="#ED1C2B"/>
<path d="M16.8526 16.5163C16.7597 16.4234 16.6092 16.4234 16.5163 16.5163C16.4234 16.6092 16.4234 16.7597 16.5163 16.8526L19.3799 19.7162C19.4263 19.7626 19.487 19.7859 19.548 19.7859C19.609 19.7859 19.6697 19.7626 19.7162 19.7162C19.8091 19.6233 19.8091 19.4728 19.7162 19.3799L16.8526 16.5163Z" fill="#ED1C2B"/>
<path d="M19.4053 16.4445C19.4427 16.4662 19.4836 16.4764 19.5239 16.4764C19.6062 16.4764 19.6861 16.4337 19.7301 16.3575C19.7957 16.2438 19.7567 16.0983 19.6431 16.0327L17.9125 15.0332C17.7985 14.9672 17.653 15.0068 17.5877 15.1202C17.522 15.2338 17.561 15.3793 17.6747 15.445L19.4053 16.4445Z" fill="#ED1C2B"/>
<path d="M15.4449 17.6747C15.3792 17.5614 15.2343 17.5217 15.1201 17.5877C15.0064 17.6533 14.9674 17.7989 15.0331 17.9125L16.0326 19.6431C16.0766 19.7193 16.1564 19.762 16.2388 19.762C16.2791 19.762 16.3199 19.7518 16.3574 19.7301C16.471 19.6645 16.5101 19.5189 16.4444 19.4053L15.4449 17.6747Z" fill="#ED1C2B"/>
<path d="M6.6474 6.9837C6.69384 7.03014 6.75454 7.05337 6.81553 7.05337C6.87653 7.05337 6.93722 7.03014 6.98367 6.9837C7.07656 6.8908 7.07656 6.74032 6.98367 6.64742L4.1201 3.78386C4.02721 3.69096 3.87672 3.69096 3.78383 3.78386C3.69093 3.87675 3.69093 4.02724 3.78383 4.12013L6.6474 6.9837Z" fill="#ED1C2B"/>
<path d="M8.05504 5.82531C8.099 5.90148 8.17889 5.94421 8.26126 5.94421C8.30151 5.94421 8.34238 5.93399 8.37985 5.91232C8.49349 5.84668 8.5325 5.70114 8.46686 5.58751L7.46733 3.85692C7.402 3.74359 7.25647 3.70364 7.14252 3.76991C7.02888 3.83555 6.98987 3.98108 7.05551 4.09472L8.05504 5.82531Z" fill="#ED1C2B"/>
<path d="M4.09471 7.05554C3.98076 6.98927 3.83523 7.02922 3.7699 7.14254C3.70425 7.25618 3.74327 7.40171 3.8569 7.46736L5.58749 8.46688C5.62496 8.48856 5.66583 8.49877 5.70609 8.49877C5.78845 8.49877 5.86834 8.45604 5.91231 8.37987C5.97795 8.26623 5.93894 8.1207 5.8253 8.05506L4.09471 7.05554Z" fill="#ED1C2B"/>
<path d="M15.9419 15.1248C16.438 14.6287 16.6406 13.9358 16.5318 13.2721C16.2687 13.3481 15.9912 13.388 15.7054 13.388C14.8309 13.388 13.9562 13.0149 13.306 12.364C12.9266 11.985 12.6387 11.5268 12.4674 11.0326C11.9733 10.8613 11.515 10.5734 11.136 10.1941C10.53 9.5884 10.1684 8.80469 10.1179 7.98755C10.096 7.63243 10.1367 7.29018 10.2294 6.96861C9.56544 6.85956 8.87159 7.06215 8.37522 7.55808L7.55807 8.37522C7.06196 8.87133 6.85942 9.56423 6.96824 10.2279C7.23132 10.1519 7.50884 10.112 7.79464 10.112C8.66906 10.112 9.5438 10.4851 10.1941 11.136C10.5734 11.515 10.8613 11.9733 11.0326 12.4675C11.5267 12.6387 11.985 12.9266 12.364 13.306C12.97 13.9116 13.3317 14.6953 13.3821 15.5125C13.404 15.8683 13.3632 16.2112 13.2701 16.5333C13.3857 16.5523 13.5018 16.5653 13.6181 16.5653C14.1696 16.5649 14.7148 16.3519 15.1248 15.9419L15.9419 15.1248Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.9 KiB

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.25 10.8866C1.25 5.56426 5.56566 1.25 10.8889 1.25C16.2121 1.25 20.5278 5.56426 20.5278 10.8866C20.5278 11.5059 20.5302 11.7168 20.5438 11.8084C20.5796 12.0492 20.6912 12.2657 20.886 12.6436L22.6666 16.097C22.7585 16.2752 22.7752 16.4829 22.713 16.6735C22.6507 16.8641 22.5147 17.0219 22.3353 17.1116L20.936 17.8111C20.5606 17.9987 20.3663 18.4489 20.3162 18.6505C20.2273 19.1222 20.1252 19.6648 19.9693 20.1765C19.8118 20.6934 19.583 21.2377 19.207 21.685C18.9396 22.0032 18.6083 22.2618 18.2347 22.444C17.8884 22.6129 17.529 22.682 17.1387 22.7142C16.7666 22.7448 16.3152 22.7448 15.7739 22.7448C15.2226 22.7448 14.9469 22.7448 14.7039 22.6829C14.2108 22.5573 13.7841 22.2485 13.5108 21.8193C13.3761 21.6079 13.2899 21.346 13.1177 20.8222L12.75 19.7043C12.6113 19.078 12.4142 18.9543 12 18.9543C11.5858 18.9543 11.25 19.2901 11.25 19.7043V22.1448C11.25 22.4277 11.25 22.5691 11.1621 22.6569C11.0743 22.7448 10.9328 22.7448 10.65 22.7448H7.73159H7.73155C7.03965 22.7448 6.46231 22.7448 5.99567 22.6958C5.50682 22.6445 5.05422 22.5327 4.65004 22.2511C4.38338 22.0653 4.15177 21.8337 3.96595 21.567C3.6843 21.1628 3.57256 20.7101 3.52121 20.2212C3.47219 19.7544 3.4722 19.1769 3.47222 18.4848L3.47222 18.4451C3.47222 17.8825 3.39973 17.4863 3.26761 17.1162C3.12947 16.7293 2.91727 16.3434 2.58951 15.79C1.73836 14.353 1.25 12.6757 1.25 10.8866ZM13.0819 7.24368C13.1157 6.43729 12.5782 5.91314 11.8795 5.77944C11.3317 5.67462 10.7906 5.82955 10.4556 6.26007C10.9509 6.79327 11.2543 7.50956 11.2543 8.29622C11.2543 8.71044 10.9185 9.04622 10.5043 9.04622C10.09 9.04622 9.75426 8.71044 9.75426 8.29622C9.75426 7.78047 9.49471 7.3274 9.09966 7.06077C8.52399 6.67223 7.82699 6.79531 7.32288 7.26537C6.82528 7.72936 6.64477 8.41305 7.01995 9.05188C7.1461 9.26667 7.15738 9.53008 7.05005 9.75487C6.94271 9.97965 6.73078 10.1365 6.48444 10.1734C5.97625 10.2496 5.71683 10.6521 5.753 11.1552C5.78897 11.6554 6.09976 12.0147 6.6205 12.0147C6.92698 12.0147 7.20007 11.8626 7.36777 11.6228C7.60519 11.2834 8.07281 11.2007 8.41222 11.4381C8.75164 11.6756 8.83433 12.1432 8.59691 12.4826C8.16215 13.1041 7.43989 13.5147 6.6205 13.5147C5.13373 13.5147 4.3354 12.3552 4.25686 11.2628C4.19639 10.4215 4.55267 9.47627 5.39157 8.98821C5.13231 7.89747 5.57574 6.84357 6.29992 6.16831C7.02595 5.49132 8.11917 5.1175 9.18486 5.45134C9.8903 4.43645 11.1079 4.10456 12.1614 4.30617C13.2036 4.5056 14.2001 5.24841 14.4955 6.43118C15.1978 6.45853 15.7724 6.7538 16.167 7.21533C16.568 7.68429 16.75 8.28373 16.75 8.85478C16.75 9.42584 16.568 10.0253 16.167 10.4942C15.888 10.8206 15.519 11.0638 15.0785 11.1879C14.9888 11.6748 14.796 12.1455 14.4865 12.5401C14.0237 13.1303 13.3236 13.5147 12.4461 13.5147C12.0456 13.5147 11.7747 13.6744 11.5861 13.9149C11.3825 14.1745 11.2543 14.5609 11.2543 14.9989C11.2543 15.4131 10.9185 15.7489 10.5043 15.7489C10.09 15.7489 9.75426 15.4131 9.75426 14.9989C9.75426 14.291 9.95792 13.5603 10.4058 12.9893C10.8686 12.3991 11.5687 12.0147 12.4461 12.0147C12.8467 12.0147 13.1176 11.855 13.3062 11.6145C13.4096 11.4826 13.4936 11.318 13.5512 11.1306C13.2627 11.0235 13.0003 10.8628 12.7763 10.661C12.4686 10.3837 12.4439 9.90945 12.7212 9.60173C12.9985 9.29401 13.4727 9.26933 13.7804 9.5466C13.943 9.69305 14.1548 9.78046 14.388 9.78046C14.7115 9.78046 14.9043 9.66291 15.027 9.51939C15.1633 9.35997 15.25 9.12156 15.25 8.85478C15.25 8.588 15.1633 8.34959 15.027 8.19017C14.9043 8.04665 14.7115 7.9291 14.388 7.9291C14.28 7.9291 14.1779 7.94774 14.0835 7.98144C13.8486 8.06539 13.5873 8.02701 13.3864 7.87906C13.1855 7.7311 13.0714 7.49295 13.0819 7.24368Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.9177 17.1835C8.93589 17.1253 7.14837 16.8877 5.69633 16.2538L3.25267 17.1194C2.84786 17.2629 2.51312 17.1865 2.29552 17.0038C2.07606 16.8195 1.94409 16.5026 2.02305 16.077L2.02342 16.0763L2.54129 13.319C2.43972 12.9146 2.00526 11.0955 2.00526 9.59937C2.00526 8.10174 2.44046 6.28086 2.54129 5.87939L2.20877 4.06184L2.02379 3.12619C2.02379 3.12471 2.02342 3.12322 2.02305 3.12174C1.94409 2.69618 2.07606 2.37923 2.29552 2.19499C2.51312 2.01223 2.84786 1.93587 3.25267 2.07933L5.69596 2.94492C7.41156 2.1961 9.59499 2 12.0142 2C14.4334 2 16.6172 2.19647 18.3324 2.94492L20.7757 2.07933C21.1805 1.93587 21.5156 2.01223 21.7332 2.19499C21.9523 2.37923 22.0843 2.69618 22.0053 3.12174C22.005 3.12322 22.005 3.12471 22.0046 3.12619L21.8196 4.06184L21.4871 5.87902C21.5883 6.2816 22.0231 8.10508 22.0231 9.59937C22.0231 10.9673 21.6587 12.6102 21.5197 13.1874C20.4339 11.7936 18.7402 10.8968 16.8385 10.8968C13.5648 10.8968 10.9073 13.5544 10.9073 16.828C10.9073 16.9474 10.911 17.066 10.9177 17.1835ZM13.2049 9.65757C14.5079 9.29354 15.4799 8.18589 15.7256 6.82208C15.752 6.67454 15.6871 6.52552 15.5614 6.44471C15.4354 6.36352 15.273 6.36612 15.1496 6.45138C14.7785 6.70865 14.3585 6.904 13.8729 6.904C12.6006 6.904 11.5693 5.87234 11.5693 4.59973C11.5693 4.11411 11.7647 3.6941 12.0216 3.32303C12.1069 3.19996 12.1095 3.03759 12.0286 2.91155C11.9475 2.78552 11.7984 2.72064 11.6513 2.74733C10.1388 3.0198 8.94145 4.18454 8.72385 5.70516C7.82415 5.95353 7.13206 6.68752 6.95486 7.60092C5.78307 7.61909 4.88857 8.4413 4.88857 9.3877C4.88857 10.3452 5.80346 11.1752 6.9949 11.1752H11.123C12.2007 11.1752 13.0522 10.4961 13.2049 9.65757ZM9.39593 6.54146C10.9114 6.54146 10.9143 8.09803 10.9128 8.12324C10.901 8.36234 11.073 8.57142 11.3102 8.60552C11.8337 8.68003 12.3026 8.94583 12.3026 9.3877C12.3026 9.89371 11.7525 10.2485 11.123 10.2485H6.9949C6.36507 10.2485 5.81532 9.89371 5.81532 9.3877C5.81532 8.8817 6.36507 8.5273 6.9949 8.5273H7.37375C7.62991 8.5273 7.83713 8.31971 7.83713 8.06393C7.83713 7.22058 8.53738 6.54146 9.39593 6.54146ZM9.49305 5.61582C9.67432 4.78915 10.2319 4.11707 10.974 3.74526C10.8817 4.01328 10.8279 4.29761 10.8279 4.59973C10.8279 6.28197 12.1914 7.64541 13.8729 7.64541C14.1754 7.64541 14.4597 7.59166 14.7274 7.49935C14.4 8.15401 13.8392 8.66484 13.1441 8.9006C12.9517 8.36902 12.4512 7.95124 11.8029 7.76514C11.6943 7.0571 11.255 5.66512 9.49305 5.61582ZM11.6487 16.828C11.6487 13.9618 13.9722 11.6382 16.8385 11.6382C19.7048 11.6382 22.0283 13.9618 22.0283 16.828C22.0283 19.6943 19.7048 22.0179 16.8385 22.0179C13.9722 22.0179 11.6487 19.6943 11.6487 16.828ZM13.1315 16.828C13.1315 18.8754 14.7911 20.5351 16.8385 20.5351C18.8859 20.5351 20.5455 18.8754 20.5455 16.828C20.5455 14.7807 18.8859 13.121 16.8385 13.121C14.7911 13.121 13.1315 14.7807 13.1315 16.828ZM13.8729 16.828C13.8729 15.1903 15.2007 13.8624 16.8385 13.8624C18.4763 13.8624 19.8041 15.1903 19.8041 16.828C19.8041 18.4658 18.4763 19.7937 16.8385 19.7937C15.2007 19.7937 13.8729 18.4658 13.8729 16.828ZM14.8475 16.4307L16.701 17.1721C16.8151 17.218 16.9445 17.2039 17.0465 17.135C17.148 17.066 17.2092 16.9511 17.2092 16.828L17.204 14.9745C17.204 14.7699 17.0379 14.6038 16.8333 14.6038C16.6287 14.6038 16.4626 14.7699 16.4626 14.9745L16.4678 16.2805L15.1225 15.7426C14.9327 15.6666 14.7166 15.7589 14.641 15.9491C14.565 16.1389 14.6573 16.355 14.8475 16.4307Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save