Symptoms Checker and User Info Selection (faiz_dev) #113

Merged
FaizHashmiCS22 merged 68 commits from faiz_dev into main 1 month ago

@ -69,4 +69,7 @@
# Penguin classes
-keep class com.peng.pennavmap.models.** { *; }
-keep class com.peng.pennavmap.db.** { *; }
-keep class com.peng.pennavmap.db.** { *; }
-keep class com.hiennv.flutter_callkit_incoming.** { *; }
-keepattributes Signature, Annotation, InnerClasses, EnclosingMethod

@ -30,9 +30,6 @@
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION"
tools:node="remove" />
@ -91,6 +88,12 @@
<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" />
@ -115,6 +118,7 @@
</queries>
<application
android:foregroundServiceType="mediaPlayback|connectedDevice|dataSync"
android:name=".Application"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher_local"

@ -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>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

@ -0,0 +1,22 @@
export const icons = {
chatSend: require('./chat-send.png'),
defaultAvatar: require('./default-avatar.png'),
locked: require('./locked.png'),
more: require('./more.png'),
mute: require('./mute.png'),
muted: require('./muted.png'),
shareOn: require('./share-on.png'),
shareOff: require('./share-off.png'),
speakerOn: require('./speaker-on.png'),
speakerOff: require('./speaker-off.png'),
switchCamera: require('./switch-camera.png'),
hamburger: require('./hamburger.png'),
questionBalloon: require('./question-ballon.png'),
talking: require('./talking.png'),
unmute: require('./unmute.png'),
unlocked: require('./unlocked.png'),
videoOn: require('./video-on.png'),
videoOff: require('./video-off.png'),
};
export type IconTypes = keyof typeof icons;

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

@ -0,0 +1,4 @@
<svg width="18" height="22" viewBox="0 0 18 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.0245 0.677785C10.0169 -0.225928 8.48311 -0.225928 7.47553 0.677785C6.78675 1.29557 5.93331 2.15517 5.24695 3.14951C4.5675 4.13383 4 5.32467 4 6.58902C4 9.04684 6.0323 11.5 9.25 11.5C12.4677 11.5 14.5 9.04684 14.5 6.58902C14.5 5.32467 13.9325 4.13383 13.2531 3.14951C12.5667 2.15517 11.7133 1.29557 11.0245 0.677785Z" fill="white"/>
<path d="M1.5528 12.0433C1.87561 11.9999 2.27244 12 2.70526 12L3.14482 12C3.55136 12 3.95322 12.0915 4.31883 12.2684L6.36081 13.2564C6.52138 13.3341 6.69974 13.3751 6.8815 13.3751L7.92409 13.3752C9.32329 13.3752 10.5 13.7342 10.5 15.1473C10.5 15.5384 10.2337 15.8583 9.88361 15.9551L7.3427 16.6576C6.71218 16.832 6.03692 16.7717 5.44831 16.4869L3.82802 15.7029C3.5173 15.5526 3.14354 15.6826 2.9932 15.9933C2.84286 16.304 2.97288 16.6778 3.28359 16.8281L4.90388 17.6121C5.76687 18.0296 6.75412 18.1173 7.6758 17.8624L10.2167 17.1599C11.081 16.921 11.75 16.1286 11.75 15.1473C11.7621 15.0127 11.7537 14.7736 11.6828 14.5243C11.5898 14.1974 11.5433 14.0339 11.5822 13.9622C11.6212 13.8905 11.7456 13.8523 11.9942 13.7759L14.1197 13.1229L14.1212 13.1224C15.2517 12.7709 16.4623 13.1937 17.1551 14.1532C17.7766 15.0138 17.5365 16.2554 16.6033 16.7938L9.08771 21.1302C8.43272 21.5081 7.65626 21.6016 6.93181 21.3866L1.93291 19.9033C1.6183 19.81 1.32351 19.7225 1.08569 19.6207C0.821024 19.5074 0.554741 19.3479 0.347562 19.0703C0.140382 18.7927 0.0632054 18.4921 0.0298745 18.2061C-7.46753e-05 17.9492 -3.65283e-05 17.6417 3.52604e-06 17.3135V14.7053C-4.79724e-05 14.2724 -9.37469e-05 13.8756 0.0433061 13.5528C0.0910985 13.1973 0.203546 12.8216 0.512569 12.5126C0.821594 12.2035 1.19732 12.0911 1.5528 12.0433Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,10 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_27024)">
<path d="M16.9795 19.2095C16.93 19.7925 17.3257 22.8783 17.5299 24.0883C17.6272 24.6615 17.8937 25.5955 17.7978 26.0914C17.6609 26.7825 17.6213 27.6769 17.6967 28.1976C17.7442 28.5139 17.8939 29.9725 17.6798 30.506C17.5677 30.7858 17.3624 32.2195 17.3624 32.2195C16.8274 33.5702 17.1293 33.5038 17.1293 33.5038C17.2949 33.707 17.5786 33.5197 17.5786 33.5197C17.7947 33.6575 17.9444 33.487 17.9444 33.487C18.1299 33.6405 18.3461 33.4681 18.3461 33.4681C18.5792 33.5891 18.7953 33.366 18.7953 33.366C18.9291 33.4334 18.9619 33.3482 18.9619 33.3482C19.3635 33.3225 18.7378 32.0373 18.7378 32.0373C18.588 30.883 18.8865 30.2406 18.8865 30.2406C19.8642 27.3411 19.9139 26.5716 19.5231 25.4789C19.413 25.1634 19.3851 25.0385 19.4358 24.9016C19.5529 24.5855 19.4675 23.3141 19.6103 22.8093C19.8859 21.8356 20.1577 19.3663 20.2994 18.2142C20.4897 16.6622 19.625 14.5813 19.625 14.5813C19.4356 13.7345 19.7133 10.7174 19.7133 10.7174C20.101 11.3208 20.0862 12.3858 20.0862 12.3858C20.0246 13.5028 20.9885 15.2099 20.9885 15.2099C21.4517 15.9154 21.6271 16.5847 21.6271 16.6344C21.6271 16.8376 21.5826 17.3296 21.5826 17.3296L21.6004 17.758C21.6083 17.8671 21.6697 18.2428 21.6598 18.4244C21.5875 19.5419 21.765 19.3317 21.765 19.3317C21.9148 19.3317 22.0795 18.4324 22.0795 18.4324C22.0795 18.6643 22.0228 19.3585 22.1479 19.6204C22.2975 19.9327 22.4076 19.5668 22.4095 19.4934C22.4491 18.0705 22.5346 18.4433 22.5346 18.4433C22.6178 19.5976 22.7201 19.8583 22.9035 19.7681C23.0424 19.7018 22.9154 18.3829 22.9154 18.3829C23.1533 19.1664 23.3337 19.2911 23.3337 19.2911C23.7263 19.5668 23.4835 18.8053 23.429 18.6545C23.1385 17.8533 23.1295 17.5757 23.1295 17.5757C23.4925 18.2956 23.7661 18.2689 23.7661 18.2689C24.1201 18.1559 23.4567 17.1364 23.0679 16.6481C22.8696 16.3992 22.6138 16.066 22.5395 15.8682C22.4185 15.533 22.3271 14.4556 22.3271 14.4556C22.2905 13.1843 21.9762 12.632 21.9762 12.632C21.4388 11.7719 21.3377 10.1673 21.3377 10.1673L21.3139 7.45832C21.1255 5.61048 19.7639 5.59712 19.7639 5.59712C18.3877 5.39226 18.1962 4.94768 18.1962 4.94768C17.9047 4.52818 18.0712 3.72403 18.0712 3.72403C18.3131 3.52731 18.4064 3.00505 18.4064 3.00505C18.808 2.69711 18.7883 2.2465 18.6028 2.25139C18.4539 2.2553 18.4877 2.13202 18.4877 2.13202C18.7388 0.103572 16.938 0 16.938 0H16.6631C16.6631 0 14.8615 0.103572 15.1123 2.13153C15.1123 2.13153 15.146 2.25497 14.9958 2.2509C14.8108 2.24601 14.7936 2.69662 15.1937 3.00457C15.1937 3.00457 15.2869 3.52666 15.5289 3.72354C15.5289 3.72354 15.6954 4.52769 15.4039 4.94719C15.4039 4.94719 15.2131 5.39177 13.8362 5.59663C13.8362 5.59663 12.4723 5.60999 12.2869 7.45784L12.2611 10.1668C12.2611 10.1668 12.1619 11.7714 11.6224 12.6316C11.6224 12.6316 11.3096 13.1839 11.2734 14.4551C11.2734 14.4551 11.1818 15.5325 11.0612 15.8677C10.9878 16.0646 10.7321 16.3978 10.5322 16.6476C10.14 17.135 9.48096 18.1523 9.83353 18.2684C9.83353 18.2684 10.1086 18.2951 10.4701 17.5752C10.4701 17.5752 10.4626 17.8509 10.1726 18.654C10.1156 18.8029 9.8731 19.5644 10.2659 19.2906C10.2659 19.2906 10.4478 19.1657 10.6843 18.3824C10.6843 18.3824 10.5574 19.7013 10.6986 19.7676C10.8831 19.858 10.9837 19.5971 11.0669 18.4428C11.0669 18.4428 11.1523 18.0701 11.1919 19.4929C11.1938 19.5663 11.3015 19.9322 11.4518 19.6199C11.5786 19.358 11.5216 18.6649 11.5216 18.4319C11.5216 18.4319 11.6843 19.3312 11.8364 19.3312C11.8364 19.3312 12.0154 19.5414 11.9419 18.4239C11.93 18.2414 11.994 17.8667 12.002 17.7576L12.0193 17.3291C12.0193 17.3291 11.9747 16.8383 11.9747 16.6339C11.9747 16.5832 12.1502 15.9149 12.6132 15.2095C12.6132 15.2095 13.5761 13.5015 13.5141 12.3853C13.5141 12.3853 13.5007 11.3203 13.8885 10.7169C13.8885 10.7169 14.1637 13.7339 13.9772 14.5809C13.9772 14.5809 13.111 16.6617 13.3021 18.2137C13.4428 19.3689 13.7141 21.835 13.9903 22.8088C14.1345 23.3127 14.0492 24.5837 14.1648 24.9011C14.2169 25.039 14.1896 25.166 14.0775 25.4784C13.6888 26.5711 13.7383 27.3407 14.7161 30.2401C14.7161 30.2401 15.017 30.8825 14.8649 32.0368C14.8649 32.0368 14.2402 33.322 14.6403 33.3477C14.6403 33.3477 14.6716 33.4329 14.8069 33.3655C14.8069 33.3655 15.023 33.5886 15.2566 33.4676C15.2566 33.4676 15.4728 33.6402 15.6577 33.4865C15.6577 33.4865 15.8059 33.657 16.022 33.5192C16.022 33.5192 16.3056 33.7106 16.4742 33.5033C16.4742 33.5033 16.7737 33.5697 16.2405 32.219C16.2405 32.219 16.0363 30.7871 15.9238 30.5055C15.7091 29.9722 15.8607 28.5105 15.9065 28.1972C15.9803 27.6734 15.9407 26.7812 15.8059 26.0909C15.7072 25.5961 15.9744 24.662 16.0731 24.0878C16.2758 22.879 16.6732 19.793 16.6235 19.209L16.7877 19.2667C16.9053 19.267 16.9795 19.2095 16.9795 19.2095Z" fill="#2E3039"/>
</g>
<defs>
<clipPath id="clip0_1_27024">
<rect width="33.6" height="33.6" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5 10.4189C5 6.60727 8.12437 3.5 12 3.5C15.8756 3.5 19 6.60727 19 10.4189C19 11.7227 18.6361 12.94 18.003 13.98C17.7158 14.4518 17.8654 15.067 18.3372 15.3542C18.8089 15.6414 19.4242 15.4917 19.7113 15.02C20.5292 13.6763 21 12.1008 21 10.4189C21 5.48352 16.9609 1.5 12 1.5C7.03907 1.5 3 5.48352 3 10.4189C3 12.1008 3.47075 13.6763 4.28867 15.02C4.57584 15.4917 5.19107 15.6414 5.66283 15.3542C6.13458 15.067 6.28421 14.4518 5.99704 13.98C5.36394 12.94 5 11.7227 5 10.4189Z" fill="#FFAF15"/>
<path d="M16.2105 15.755C16.1022 15.75 15.9736 15.75 15.8432 15.75L13 15.75L13 12.3377C13.6525 12.122 14.2312 11.7074 14.7242 11.1896C15.1051 10.7896 15.0896 10.1567 14.6896 9.77581C14.2896 9.39495 13.6567 9.41044 13.2758 9.81041C12.783 10.3279 12.3512 10.5 12 10.5C11.6488 10.5 11.217 10.3279 10.7242 9.81041C10.3433 9.41045 9.71037 9.39495 9.31041 9.77581C8.91044 10.1567 8.89495 10.7896 9.27581 11.1896C9.76884 11.7074 10.3475 12.122 11 12.3377L11 15.75H8.15684C8.02643 15.75 7.89781 15.75 7.78945 15.755C7.67503 15.7602 7.52127 15.7728 7.3611 15.8212C6.8626 15.9717 6.5267 16.3363 6.50126 16.7498C6.49309 16.8826 6.52614 16.9996 6.55585 17.0857C6.8873 18.7676 7.57151 19.25 8.1569 19.25L15.8431 19.25C16.4285 19.25 17.1127 18.7676 17.4441 17.0857C17.4739 16.9996 17.5069 16.8826 17.4987 16.7498C17.4733 16.3363 17.1374 15.9717 16.6389 15.8212C16.4787 15.7728 16.325 15.7602 16.2105 15.755Z" fill="#FFAF15"/>
<path d="M10.3321 22.4013C10.6774 22.5018 11.0856 22.5018 11.9019 22.5018C12.7182 22.5018 13.1264 22.5018 13.4717 22.4013C14.0057 22.2458 14.4551 21.9204 14.7324 21.4884C14.8356 21.3276 14.906 21.1423 14.9776 20.8791C15.0674 20.5491 15.1123 20.3841 15.0223 20.2663C14.9322 20.1484 14.7551 20.1484 14.4009 20.1484L9.40295 20.1484C9.04873 20.1484 8.87162 20.1484 8.78156 20.2663C8.69151 20.3841 8.73641 20.5491 8.82623 20.8791C8.89786 21.1423 8.96819 21.3276 9.07142 21.4884C9.34876 21.9204 9.79812 22.2458 10.3321 22.4013Z" fill="#FFAF15"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,8 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8 11.75C7.30964 11.75 6.75 12.3096 6.75 13C6.75 13.6904 7.30964 14.25 8 14.25H8.00897C8.69933 14.25 9.25897 13.6904 9.25897 13C9.25897 12.3096 8.69933 11.75 8.00897 11.75H8Z" fill="#8F9AA3"/>
<path d="M11.9955 11.75C11.3052 11.75 10.7455 12.3096 10.7455 13C10.7455 13.6904 11.3052 14.25 11.9955 14.25H12.0045C12.6948 14.25 13.2545 13.6904 13.2545 13C13.2545 12.3096 12.6948 11.75 12.0045 11.75H11.9955Z" fill="#8F9AA3"/>
<path d="M15.991 11.75C15.3007 11.75 14.741 12.3096 14.741 13C14.741 13.6904 15.3007 14.25 15.991 14.25H16C16.6904 14.25 17.25 13.6904 17.25 13C17.25 12.3096 16.6904 11.75 16 11.75H15.991Z" fill="#8F9AA3"/>
<path d="M8 15.75C7.30964 15.75 6.75 16.3096 6.75 17C6.75 17.6904 7.30964 18.25 8 18.25H8.00897C8.69933 18.25 9.25897 17.6904 9.25897 17C9.25897 16.3096 8.69933 15.75 8.00897 15.75H8Z" fill="#8F9AA3"/>
<path d="M11.9955 15.75C11.3052 15.75 10.7455 16.3096 10.7455 17C10.7455 17.6904 11.3052 18.25 11.9955 18.25H12.0045C12.6948 18.25 13.2545 17.6904 13.2545 17C13.2545 16.3096 12.6948 15.75 12.0045 15.75H11.9955Z" fill="#8F9AA3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7 2C7 1.44772 6.55229 1 6 1C5.44772 1 5 1.44772 5 2V2.44885C4.23882 2.6903 3.57734 3.06994 3.01802 3.6746C2.18949 4.57031 1.83279 5.69272 1.66416 7.04866C1.49997 8.36894 1.49998 10.0541 1.5 12.1739L1.5 12.8261C1.49998 14.9459 1.49997 16.6311 1.66416 17.9513C1.83279 19.3073 2.18949 20.4297 3.01802 21.3254C3.8568 22.2322 4.92535 22.6329 6.21533 22.8204C7.45141 23.0001 9.02291 23 10.9712 23H13.0288C14.977 23 16.5486 23.0001 17.7847 22.8204C19.0747 22.6329 20.1432 22.2322 20.982 21.3254C21.8105 20.4297 22.1672 19.3073 22.3358 17.9513C22.5 16.6311 22.5 14.9459 22.5 12.8261V12.1739C22.5 10.0541 22.5 8.36895 22.3358 7.04866C22.1672 5.69272 21.8105 4.57031 20.982 3.6746C20.4227 3.06993 19.7612 2.6903 19 2.44885V2C19 1.44772 18.5523 1 18 1C17.4477 1 17 1.44772 17 2V2.09173C15.903 1.99995 14.5863 1.99998 13.0288 2L10.9712 2C9.41376 1.99998 8.09704 1.99995 7 2.09173V2ZM4.49783 9C4.03921 9 3.8099 9 3.66385 9.14417C3.51781 9.28833 3.51487 9.51472 3.509 9.96751C3.50027 10.6407 3.5 11.3942 3.5 12.2432V12.7568C3.5 14.9616 3.50182 16.5221 3.64887 17.7045C3.79327 18.8656 4.06263 19.5094 4.48622 19.9673C4.89956 20.4142 5.4647 20.6903 6.503 20.8412C7.57858 20.9975 9.00425 21 11.05 21H12.95C14.9957 21 16.4214 20.9975 17.497 20.8412C18.5353 20.6903 19.1004 20.4142 19.5138 19.9673C19.9374 19.5094 20.2067 18.8656 20.3511 17.7045C20.4982 16.5221 20.5 14.9616 20.5 12.7568V12.2432C20.5 11.3942 20.4997 10.6407 20.491 9.96751C20.4851 9.51472 20.4822 9.28833 20.3362 9.14417C20.1901 9 19.9608 9 19.5022 9L4.49783 9Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1,4 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.14286 7.27526C6.06081 7.19321 5.94953 7.14712 5.8335 7.14712C5.68326 7.14712 5.53722 7.14711 5.396 7.14757V9.54083C6.06931 9.73127 6.56266 10.3503 6.56266 11.0846V11.668C6.56266 11.9096 6.36679 12.1055 6.12516 12.1055C5.88354 12.1055 5.68766 11.9096 5.68766 11.668V11.0846C5.68766 10.6819 5.3612 10.3555 4.9585 10.3555C4.55579 10.3555 4.22933 10.6819 4.22933 11.0846V11.668C4.22933 11.9096 4.03345 12.1055 3.79183 12.1055C3.55021 12.1055 3.35433 11.9096 3.35433 11.668V11.0846C3.35433 10.3503 3.84768 9.73127 4.521 9.54083V7.16254C4.27509 7.17241 4.05216 7.18858 3.85498 7.21509C3.32991 7.28568 2.88782 7.4367 2.5367 7.78782C2.18558 8.13894 2.03456 8.58103 1.96397 9.1061C1.89598 9.61182 1.89598 10.2548 1.896 11.0526V12.8346C1.896 13.0762 2.09187 13.2721 2.3335 13.2721H11.6668C11.9085 13.2721 12.1043 13.0762 12.1043 12.8346V11.0526C12.1043 10.2548 12.1044 9.61183 12.0364 9.1061C11.9658 8.58103 11.8147 8.13894 11.4636 7.78782C11.1125 7.4367 10.6704 7.28568 10.1454 7.21509C10.0293 7.19949 9.90432 7.18746 9.771 7.1782V10.4725C10.0325 10.6238 10.2085 10.9066 10.2085 11.2305C10.2085 11.7137 9.81675 12.1055 9.3335 12.1055C8.85025 12.1055 8.4585 11.7137 8.4585 11.2305C8.4585 10.9066 8.63446 10.6238 8.896 10.4725V7.14936C8.66672 7.14711 8.42324 7.14711 8.16711 7.14712C8.05108 7.14712 7.93952 7.19321 7.85747 7.27526L7.00016 8.13257L6.14286 7.27526Z" fill="#18C273"/>
<path d="M7.00016 0.730469C5.63096 0.730469 4.521 1.84043 4.521 3.20964V3.79297C4.521 5.16217 5.63096 6.27214 7.00016 6.27214C8.36937 6.27214 9.47933 5.16217 9.47933 3.79297V3.20964C9.47933 1.84043 8.36937 0.730469 7.00016 0.730469Z" fill="#18C273"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,4 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.5658 1.95717C9.82689 0.890531 8.26692 1.31563 7.32452 2.02335C7.26938 2.06476 7.22039 2.10153 7.17659 2.13413C7.08676 2.20099 7.04185 2.23442 6.98387 2.23442C6.92589 2.23442 6.88098 2.20099 6.79115 2.13413C6.74735 2.10153 6.69836 2.06476 6.64322 2.02335C5.70082 1.31563 4.14085 0.890531 2.40195 1.95717C1.53619 2.48823 0.943044 3.43564 0.767402 4.5853C0.741775 4.75304 0.728961 4.83691 0.781341 4.89789C0.83372 4.95888 0.923033 4.95887 1.10166 4.95885L3.00095 4.95868C3.24133 4.95767 3.64619 4.95596 4.03964 5.0991C4.19392 5.15522 4.33336 5.22877 4.4573 5.3094C4.63656 5.42602 4.72618 5.48433 4.79864 5.46761C4.87109 5.45089 4.92018 5.36908 5.01835 5.20545L5.44147 4.50026C5.71062 4.05168 6.19943 3.78162 6.72246 3.79256C7.24549 3.80349 7.72259 4.09374 7.97275 4.55319L8.72948 5.94294C8.77795 6.03196 8.80218 6.07647 8.8435 6.10102C8.88482 6.12557 8.9355 6.12557 9.03686 6.12557H9.31698C10.1224 6.12557 10.7753 6.77849 10.7753 7.5839C10.7753 8.38932 10.1224 9.04224 9.31698 9.04224L8.66574 9.04348C8.42373 9.04908 7.69714 9.06588 7.06184 8.57794C7.0432 8.56363 7.02501 8.54906 7.00725 8.5343C6.81047 8.37075 6.71208 8.28898 6.63276 8.30247C6.55344 8.31596 6.49635 8.41111 6.38218 8.6014L6.19249 8.91754C5.93991 9.33851 5.49248 9.60414 5.00197 9.62434C4.51146 9.64453 4.0437 9.41658 3.75738 9.0178L3.04199 8.02146C2.99064 7.94995 2.96497 7.91419 2.92736 7.8949C2.88975 7.8756 2.84573 7.8756 2.75769 7.8756L1.88603 7.87559C1.63453 7.87558 1.50878 7.87558 1.45819 7.96269C1.40759 8.0498 1.46788 8.15548 1.58846 8.36685C2.2106 9.45742 3.18686 10.5632 4.58832 11.6005C5.43495 12.2275 6.05634 12.6877 6.98387 12.6877C7.91141 12.6877 8.53279 12.2275 9.37943 11.6005C11.8175 9.79586 12.9688 7.78416 13.2073 6.00548C13.4447 4.23535 12.7682 2.69472 11.5658 1.95717Z" fill="#ED1C2B"/>
<path d="M7.20469 4.97105C7.10463 4.78727 6.91379 4.67117 6.70458 4.66679C6.49537 4.66242 6.29984 4.77044 6.19218 4.94988L4.8987 7.10568L4.50819 6.5618C4.50002 6.55043 4.49145 6.53935 4.48248 6.52859C4.47338 6.51766 4.4634 6.50547 4.45255 6.49222C4.32787 6.33991 4.08822 6.04716 3.74091 5.92081C3.49697 5.83206 3.23003 5.83265 2.965 5.83324L2.90072 5.83333H1.73405C1.41188 5.83333 1.15072 6.0945 1.15072 6.41667C1.15072 6.73883 1.41188 7 1.73405 7H2.90072C3.27245 7 3.31696 7.00823 3.34111 7.01684C3.34329 7.01792 3.36229 7.02776 3.40145 7.06546C3.45005 7.11226 3.4979 7.16947 3.57276 7.25931L4.46854 8.50689C4.58307 8.6664 4.77018 8.75758 4.96638 8.74951C5.16258 8.74143 5.34156 8.63518 5.44259 8.46679L6.66782 6.42473L7.16648 7.34054C7.17206 7.35078 7.17794 7.36086 7.18412 7.37075L7.20842 7.40983C7.30282 7.56206 7.41744 7.74688 7.59523 7.88343C7.98366 8.18176 8.4448 8.17225 8.67006 8.16761C8.69423 8.16711 8.71569 8.16667 8.73405 8.16667H9.31738C9.63955 8.16667 9.90072 7.9055 9.90072 7.58333C9.90072 7.26117 9.63955 7 9.31738 7H8.73405C8.69863 7 8.66723 7.00017 8.63892 7.00032C8.53614 7.00086 8.47421 7.00119 8.40933 6.99253C8.35288 6.98499 8.32768 6.97346 8.31135 6.96218C8.30864 6.95892 8.30403 6.95313 8.29726 6.94384C8.27206 6.90926 8.24113 6.86063 8.18271 6.76722L7.20469 4.97105Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

@ -0,0 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.3339 15.9992H13.3339V11.1992C13.3339 10.9365 13.3343 10.7929 13.34 10.6886L13.341 10.673L13.3565 10.6721C13.4609 10.6664 13.6045 10.6659 13.8672 10.6659H17.3339C18.8066 10.6659 20.0005 11.8598 20.0005 13.3326C20.0005 14.8053 18.8066 15.9992 17.3339 15.9992Z" fill="#2E3039"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0684 2.33203H15.9316C13.1698 2.33202 11.005 2.33201 9.30102 2.53899C7.55973 2.75051 6.16606 3.19084 5.02088 4.16892C4.71548 4.42976 4.43104 4.71419 4.1702 5.0196C3.19212 6.16478 2.75179 7.55845 2.54027 9.29974C2.33329 11.0037 2.3333 13.1684 2.33331 15.9304V16.067C2.3333 18.829 2.33329 20.9937 2.54027 22.6977C2.75179 24.4389 3.19212 25.8326 4.1702 26.9778C4.43104 27.2832 4.71547 27.5676 5.02088 27.8285C6.16606 28.8066 7.55973 29.2469 9.30102 29.4584C11.005 29.6654 13.1697 29.6654 15.9316 29.6654H16.0683C18.8302 29.6654 20.995 29.6654 22.6989 29.4584C24.4402 29.2469 25.8339 28.8066 26.9791 27.8285C27.2845 27.5676 27.5689 27.2832 27.8298 26.9778C28.8078 25.8326 29.2482 24.4389 29.4597 22.6977C29.6667 20.9937 29.6667 18.829 29.6666 16.067V15.9304C29.6667 13.1684 29.6667 11.0037 29.4597 9.29974C29.2482 7.55845 28.8078 6.16478 27.8298 5.0196C27.5689 4.71419 27.2845 4.42976 26.9791 4.16892C25.8339 3.19084 24.4402 2.75051 22.6989 2.53899C20.995 2.33201 18.8303 2.33202 16.0684 2.33203ZM13.8672 7.99925L13.7592 7.99898C13.3835 7.99761 12.9217 7.99593 12.5098 8.12976C11.698 8.39355 11.0615 9.03003 10.7977 9.84187C10.6639 10.2538 10.6656 10.7156 10.6669 11.0913L10.6672 11.1992V23.9993C10.6672 24.7356 11.2642 25.3326 12.0005 25.3326C12.7369 25.3326 13.3339 24.7356 13.3339 23.9993V18.6659H17.3339C20.2794 18.6659 22.6672 16.2781 22.6672 13.3326C22.6672 10.3871 20.2794 7.99925 17.3339 7.99925H13.8672Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,4 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="10" fill="#FEE9EA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.9293 15.7788C22.9291 15.779 22.9294 15.7785 22.9293 15.7788L21.1713 19.3237C20.9847 19.7062 20.6726 20.0338 20.3511 20.2741C20.029 20.5149 19.6281 20.7199 19.2149 20.7907L19.2123 20.7911L16.023 21.3254C15.1361 21.4744 14.8447 21.8265 14.7764 22.0421C14.7072 22.2607 14.7447 22.7225 15.3814 23.3644L17.8611 25.8646C18.1828 26.189 18.3978 26.6224 18.5163 27.0398C18.6349 27.4576 18.6791 27.9375 18.5806 28.3802L18.5795 28.3851L17.8696 31.4802C17.6047 32.6346 17.8722 33.0603 18.0105 33.162C18.1449 33.2609 18.6222 33.3909 19.6332 32.786L22.6284 30.9983C23.0448 30.754 23.5438 30.6532 24.0016 30.6532C24.4586 30.6532 24.9578 30.7537 25.3721 31.0012C25.372 31.0011 25.3722 31.0012 25.3721 31.0012L28.3612 32.7852C28.361 32.7852 28.3613 32.7853 28.3612 32.7852C29.3805 33.3922 29.8572 33.2626 29.9892 33.1656C30.1243 33.0662 30.3919 32.6431 30.1259 31.4796L29.415 28.3802C29.3166 27.9375 29.3608 27.4576 29.4794 27.0398C29.5979 26.6224 29.8128 26.189 30.1346 25.8646L32.6143 23.3644L32.6161 23.3625C33.2569 22.7208 33.2925 22.2603 33.2234 22.0435C33.1545 21.8272 32.8603 21.4745 31.9726 21.3254L28.7834 20.7911C28.366 20.721 27.9619 20.5167 27.6372 20.2751C27.3136 20.0343 27.0011 19.7064 26.8143 19.3237L25.055 15.776C24.6328 14.92 24.2045 14.75 23.9966 14.75C23.7873 14.75 23.3564 14.9223 22.9293 15.7788ZM26.4 15.1119C25.8724 14.0425 25.0459 13.25 23.9966 13.25C22.9485 13.25 22.1194 14.0411 21.5868 15.1096L21.5861 15.111L19.8263 18.6597L19.8236 18.6652C19.7701 18.7754 19.6431 18.9305 19.453 19.0727C19.2632 19.2146 19.0797 19.2917 18.9628 19.312C18.9625 19.3121 18.9621 19.3121 18.9618 19.3122L15.7748 19.8461C14.6219 20.0398 13.6581 20.6052 13.3464 21.5893C13.0357 22.5704 13.4931 23.5906 14.3163 24.4206L16.7961 26.9209C16.8943 27.0199 17.0043 27.2064 17.0733 27.4494C17.1418 27.6908 17.1479 27.9107 17.1168 28.0527C17.1167 28.0534 17.1165 28.0541 17.1164 28.0547L16.4076 31.1447C16.4076 31.1448 16.4076 31.1447 16.4076 31.1447C16.1126 32.43 16.215 33.7032 17.1216 34.3702C18.032 35.04 19.2745 34.7487 20.4034 34.0732L23.3874 32.2921C23.3881 32.2917 23.3887 32.2914 23.3893 32.291C23.5231 32.2132 23.7432 32.1532 24.0016 32.1532C24.2618 32.1532 24.4775 32.214 24.603 32.289L27.593 34.0736C28.7232 34.7467 29.9672 35.0433 30.8776 34.3742C31.7848 33.7073 31.8822 32.4317 31.5882 31.1454L30.8793 28.0547C30.8791 28.0541 30.879 28.0534 30.8788 28.0527C30.8478 27.9107 30.8539 27.6908 30.9224 27.4494C30.9914 27.2064 31.1014 27.0199 31.1996 26.9209L33.6775 24.4225C33.6778 24.4222 33.6781 24.4219 33.6783 24.4216C34.5068 23.5916 34.9658 22.5705 34.6526 21.5879C34.339 20.6045 33.3734 20.0397 32.2212 19.8461L29.0316 19.3118C28.909 19.2912 28.7228 19.2131 28.5326 19.0716C28.3421 18.93 28.2155 18.7751 28.1621 18.6652L26.4 15.1119C26.4001 15.1121 26.4 15.1118 26.4 15.1119Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -0,0 +1,7 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="10" fill="#FEE9EA"/>
<path d="M17.3238 34.75C16.8934 34.75 16.453 34.71 16.0226 34.6301C15.7623 34.5801 15.5421 34.4002 15.452 34.1503C15.362 33.9004 15.412 33.6205 15.5722 33.4206C16.0426 32.8409 16.3629 32.1512 16.503 31.4016C16.5431 31.1717 16.4229 30.8918 16.1827 30.6419C14.291 28.7228 13.25 26.204 13.25 23.5652C13.25 17.8779 18.0745 13.25 24.01 13.25C24.7307 13.25 25.4514 13.32 26.152 13.4499C26.5624 13.5299 26.8226 13.9197 26.7426 14.3295C26.6625 14.7393 26.2721 14.9992 25.8617 14.9192C25.2512 14.7993 24.6306 14.7393 24 14.7393C18.8952 14.7393 14.7414 18.6975 14.7414 23.5552C14.7414 25.8042 15.6322 27.9432 17.2437 29.5824C17.8443 30.1821 18.1045 30.9518 17.9644 31.6714C17.8643 32.2212 17.6841 32.7409 17.4439 33.2307C18.3347 33.2107 19.2155 32.9808 20.0163 32.561L20.0959 32.5198C20.583 32.2673 20.8312 32.1387 21.0973 32.0912C21.3876 32.0513 21.6678 32.1012 22.1983 32.2012C22.7889 32.3111 23.3994 32.3411 23.99 32.3611C29.0947 32.3611 33.2486 28.413 33.2486 23.5452C33.2486 23.1354 33.5889 22.7956 33.9993 22.7956C34.4097 22.7956 34.75 23.1354 34.75 23.5452C34.75 29.2326 29.9255 33.8604 23.99 33.8604C23.3294 33.8604 22.5987 33.8005 21.9181 33.6705C21.8571 33.6592 21.7957 33.6475 21.7364 33.6361C21.5326 33.597 21.354 33.5628 21.3075 33.5706C21.2667 33.5909 21.0067 33.7208 20.737 33.8704C19.666 34.4401 18.4849 34.73 17.3038 34.73L17.3238 34.75Z" fill="#ED1C2B"/>
<path d="M24.02 25.0052C23.4695 25.0052 23.0191 24.5552 23.0191 24.0052C23.0191 23.4552 23.4595 23.0052 24.02 23.0052C24.5706 23.0052 25.021 23.4552 25.021 24.0052C25.021 24.5552 24.5706 25.0052 24.02 25.0052Z" fill="#ED1C2B"/>
<path d="M20.0263 25.0052C19.4758 25.0052 19.0254 24.5552 19.0254 24.0052C19.0254 23.4552 19.4658 23.0052 20.0263 23.0052C20.5768 23.0052 21.0273 23.4552 21.0273 24.0052C21.0273 24.5552 20.5768 25.0052 20.0263 25.0052Z" fill="#ED1C2B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.6415 22.4355C25.8818 22.6654 26.1921 22.7954 26.5224 22.7954L26.5124 22.7853C26.6024 22.7853 26.6925 22.7754 26.7826 22.7554L29.0147 22.2756C29.5552 22.1756 30.0557 21.9158 30.456 21.5159L34.0794 17.8277C34.5098 17.4079 34.74 16.8381 34.74 16.2384C34.74 15.6387 34.5098 15.069 34.0794 14.6492L33.3888 13.9595C32.538 13.1099 31.0566 13.1099 30.2058 13.9595L26.5324 17.6277C26.142 18.0176 25.8818 18.5173 25.7817 19.0471L25.3012 21.286C25.2111 21.7058 25.3413 22.1356 25.6415 22.4355ZM31.2768 15.019C31.4169 14.879 31.6071 14.7991 31.8073 14.7991V14.809C32.0075 14.809 32.1976 14.889 32.3378 15.0289L33.0284 15.7186C33.1686 15.8586 33.2486 16.0485 33.2486 16.2484C33.2486 16.4483 33.1786 16.6282 33.0284 16.7781L29.405 20.4664C29.2249 20.6463 28.9947 20.7663 28.7244 20.8163L26.8527 21.2261L27.253 19.3469C27.3031 19.0971 27.4232 18.8672 27.6034 18.6872L31.2768 15.019Z" fill="#ED1C2B"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -1,7 +1,7 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.0493 1.25C14.7141 1.24997 15.287 1.24994 15.7457 1.31161C16.2373 1.37771 16.7086 1.52677 17.0908 1.90902C17.4731 2.29126 17.6222 2.76253 17.6883 3.25416C17.7499 3.7129 17.7499 4.28574 17.7499 4.95059V6.04937C17.7499 6.71423 17.7499 7.28712 17.6883 7.74585C17.6222 8.23749 17.4731 8.70875 17.0908 9.091C16.7086 9.47324 16.2373 9.6223 15.7457 9.6884C15.287 9.75008 14.7141 9.75004 14.0492 9.75001L13.2269 9.75001L10.4159 11.624C10.1857 11.7775 9.88983 11.7918 9.64597 11.6613C9.4021 11.5307 9.24986 11.2766 9.24986 11V9.7469C8.87641 9.74158 8.54263 9.7272 8.25402 9.6884C7.76238 9.6223 7.29112 9.47324 6.90887 9.091C6.52662 8.70875 6.37756 8.23749 6.31147 7.74585C6.24979 7.28712 6.24982 6.71427 6.24986 6.04943V4.95063C6.24982 4.28579 6.24979 3.7129 6.31147 3.25416C6.37756 2.76253 6.52662 2.29126 6.90887 1.90902C7.29112 1.52677 7.76238 1.37771 8.25402 1.31161C8.71274 1.24994 9.28556 1.24997 9.95039 1.25L14.0493 1.25Z" fill="white"/>
<path d="M3.17258 18.1177C4.89963 16.9608 7.10028 16.9608 8.82733 18.1177C9.13739 18.3137 9.84338 18.7614 10.2141 19.1697C10.4495 19.4288 10.6975 19.7967 10.7428 20.2626C10.7914 20.7627 10.5934 21.2221 10.2316 21.6099C9.68447 22.1963 8.95287 22.75 7.95957 22.75H4.04034C3.04704 22.75 2.31543 22.1963 1.76831 21.6099C1.40651 21.2221 1.20853 20.7627 1.25712 20.2626C1.30239 19.7967 1.55044 19.4288 1.78577 19.1697C2.15652 18.7614 2.86252 18.3137 3.17258 18.1177Z" fill="white"/>
<path d="M20.8273 18.1177C19.1003 16.9608 16.8996 16.9608 15.1726 18.1177C14.8625 18.3137 14.1565 18.7614 13.7858 19.1697C13.5504 19.4288 13.3024 19.7967 13.2571 20.2626C13.2085 20.7627 13.4065 21.2221 13.7683 21.6099C14.3154 22.1963 15.047 22.75 16.0403 22.75H19.9596C20.9529 22.75 21.6845 22.1963 22.2316 21.6099C22.5934 21.2221 22.7914 20.7627 22.7428 20.2626C22.6975 19.7967 22.4495 19.4288 22.2141 19.1697C21.8434 18.7614 21.1374 18.3137 20.8273 18.1177Z" fill="white"/>
<path d="M3.24986 13.5C3.24986 11.9812 4.48107 10.75 5.99986 10.75C7.51864 10.75 8.74986 11.9812 8.74986 13.5C8.74986 15.0188 7.51864 16.25 5.99986 16.25C4.48107 16.25 3.24986 15.0188 3.24986 13.5Z" fill="white"/>
<path d="M17.9999 10.75C16.4811 10.75 15.2499 11.9812 15.2499 13.5C15.2499 15.0188 16.4811 16.25 17.9999 16.25C19.5186 16.25 20.7499 15.0188 20.7499 13.5C20.7499 11.9812 19.5186 10.75 17.9999 10.75Z" fill="white"/>
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.7994 1.57429e-06C13.4643 -3.22217e-05 14.0371 -6.13406e-05 14.4958 0.0616123C14.9875 0.127711 15.4587 0.27677 15.841 0.659017C16.2232 1.04126 16.3723 1.51253 16.4384 2.00416C16.5001 2.4629 16.5 3.03574 16.5 3.70059V4.79937C16.5 5.46423 16.5001 6.03712 16.4384 6.49585C16.3723 6.98749 16.2232 7.45875 15.841 7.841C15.4587 8.22324 14.9875 8.3723 14.4958 8.4384C14.0371 8.50008 13.4642 8.50004 12.7994 8.50001L11.9771 8.50001L9.16603 10.374C8.93589 10.5275 8.63998 10.5418 8.39611 10.4113C8.15224 10.2807 8 10.0266 8 9.75001V8.4969C7.62656 8.49158 7.29278 8.4772 7.00416 8.4384C6.51252 8.3723 6.04126 8.22324 5.65902 7.841C5.27677 7.45875 5.12771 6.98749 5.06161 6.49585C4.99994 6.03712 4.99997 5.46427 5 4.79943V3.70063C4.99997 3.03579 4.99994 2.4629 5.06161 2.00416C5.12771 1.51253 5.27677 1.04126 5.65901 0.659016C6.04126 0.27677 6.51252 0.127711 7.00416 0.0616123C7.46288 -6.13369e-05 8.03571 -3.22217e-05 8.70053 1.57429e-06L12.7994 1.57429e-06Z" fill="white"/>
<path d="M1.92273 16.8677C3.64978 15.7108 5.85042 15.7108 7.57747 16.8677C7.88753 17.0637 8.59353 17.5114 8.96428 17.9197C9.19961 18.1788 9.44766 18.5467 9.49293 19.0126C9.54153 19.5127 9.34354 19.9721 8.98174 20.3599C8.43462 20.9463 7.70301 21.5 6.70971 21.5H2.79048C1.79719 21.5 1.06558 20.9463 0.518458 20.3599C0.156653 19.9721 -0.0413295 19.5127 0.00726341 19.0126C0.0525343 18.5467 0.300586 18.1788 0.535918 17.9197C0.906669 17.5114 1.61266 17.0637 1.92273 16.8677Z" fill="white"/>
<path d="M19.5775 16.8677C17.8504 15.7108 15.6498 15.7108 13.9227 16.8677C13.6127 17.0637 12.9067 17.5114 12.5359 17.9197C12.3006 18.1788 12.0525 18.5467 12.0073 19.0126C11.9587 19.5127 12.1567 19.9721 12.5185 20.3599C13.0656 20.9463 13.7972 21.5 14.7905 21.5H18.7097C19.703 21.5 20.4346 20.9463 20.9817 20.3599C21.3435 19.9721 21.5415 19.5127 21.4929 19.0126C21.4477 18.5467 21.1996 18.1788 20.9643 17.9197C20.5935 17.5114 19.8875 17.0637 19.5775 16.8677Z" fill="white"/>
<path d="M2 12.25C2 10.7312 3.23122 9.5 4.75 9.5C6.26878 9.5 7.5 10.7312 7.5 12.25C7.5 13.7688 6.26878 15 4.75 15C3.23122 15 2 13.7688 2 12.25Z" fill="white"/>
<path d="M16.75 9.5C15.2312 9.5 14 10.7312 14 12.25C14 13.7688 15.2312 15 16.75 15C18.2688 15 19.5 13.7688 19.5 12.25C19.5 10.7312 18.2688 9.5 16.75 9.5Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.9998 1.25C9.92869 1.25 8.24976 2.92893 8.24976 5C8.24976 6.07361 8.80491 7.11878 9.47398 7.87011C9.81596 8.25412 10.2117 8.58958 10.6283 8.8334C11.0379 9.07316 11.5124 9.25 11.9998 9.25C12.4871 9.25 12.9616 9.07316 13.3712 8.8334C13.7878 8.58958 14.1836 8.25412 14.5255 7.87011C15.1946 7.11878 15.7498 6.07361 15.7498 5C15.7498 2.92893 14.0708 1.25 11.9998 1.25Z" fill="#8F9AA3"/>
<path d="M7.91515 8.34597C7.94794 8.37041 7.98252 8.41503 8.05168 8.50427C8.15094 8.63235 8.25213 8.75374 8.35378 8.86789C8.7849 9.35201 9.29974 9.79407 9.87058 10.1282C10.4203 10.4499 11.1584 10.7502 11.9998 10.7502C12.8411 10.7502 13.5792 10.4499 14.1289 10.1282C14.6998 9.79407 15.2146 9.35201 15.6457 8.86789C15.7474 8.75376 15.8485 8.63238 15.9478 8.50432C16.0171 8.41483 16.0518 8.37008 16.0847 8.34559C16.1822 8.27306 16.3055 8.26531 16.4114 8.32507C16.4471 8.34525 16.483 8.38124 16.5549 8.45323C18.2219 9.92647 19.404 12.5039 18.3564 14.9962C18.0511 15.7227 17.3445 16.2043 16.5513 16.2043L16.2745 16.2021C16.0468 16.2002 15.933 16.1993 15.8506 16.2633C15.7683 16.3274 15.7412 16.438 15.6869 16.6592L14.7228 20.5913C14.4139 21.851 13.2977 22.7504 11.9999 22.7504C10.7021 22.7504 9.58598 21.851 9.2771 20.5913L8.31293 16.6592C8.25869 16.438 8.23157 16.3274 8.14925 16.2633C8.06692 16.1993 7.95305 16.2002 7.72532 16.2021L7.44856 16.2043C6.6554 16.2043 5.94881 15.7227 5.64342 14.9962C4.59582 12.5039 5.77798 9.92648 7.44498 8.45325C7.51667 8.38147 7.55251 8.34558 7.58811 8.32543C7.69403 8.26548 7.81756 8.27324 7.91515 8.34597Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,6 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.82036 3.05573C8.44569 2.37573 7.84432 1.86907 7.08832 1.7224C6.32566 1.5624 5.55766 1.78899 4.927 2.30899C2.639 4.17565 1.18165 7.16237 1.81365 10.2957C2.20298 12.229 2.84964 14.1224 4.16964 16.429C6.81631 21.0424 10.959 25.189 15.579 27.829C17.879 29.149 19.7803 29.8024 21.707 30.1891C24.8417 30.8157 27.831 29.3623 29.695 27.069C30.2097 26.4423 30.443 25.6823 30.2844 24.909C30.1284 24.1623 29.6203 23.5624 28.9497 23.1891L26.8137 21.9891C26.027 21.5491 25.3643 21.189 24.7883 20.949C24.1777 20.6823 23.5763 20.5357 22.9097 20.6023C22.2443 20.669 21.6856 20.9491 21.1416 21.3224C20.6283 21.6824 20.0563 22.1757 19.3763 22.7624L17.3657 24.5224L17.3344 24.549C16.995 24.8383 16.8177 24.9894 16.6003 25.0023C16.3826 25.0152 16.1949 24.8913 15.8362 24.6544L15.7977 24.629C12.5164 22.4424 9.56301 19.4823 7.37101 16.2023L7.35404 16.1769C7.10805 15.8074 6.98596 15.624 6.999 15.4023C7.01318 15.1833 7.1606 15.014 7.45328 14.678L9.235 12.629C9.827 11.949 10.3243 11.3757 10.679 10.8557C11.055 10.3224 11.3284 9.76237 11.3977 9.09571C11.467 8.42904 11.315 7.82896 11.0603 7.21563C10.819 6.64229 10.4496 5.97573 10.011 5.18907L8.82036 3.05573Z" fill="#2E3039"/>
<path d="M15.9992 10.3356H17.2846V10.4423C17.2846 11.0023 17.2832 11.3089 17.2526 11.5356C17.2503 11.5468 17.2481 11.5602 17.246 11.5731C17.243 11.591 17.2402 11.6078 17.2379 11.6156H17.2353C17.1366 11.6422 16.9712 11.6556 16.6632 11.6689H16.6326C16.4979 11.6689 16.3166 11.669 16.1579 11.6956C15.9659 11.7223 15.6566 11.8023 15.3912 12.0689C15.1259 12.3223 15.0486 12.6423 15.0206 12.8423C14.9993 13.0023 14.9992 13.1756 14.9992 13.3089V14.9356C14.9992 15.1623 14.9992 15.4156 15.0299 15.6423C15.0672 15.9089 15.1646 16.2556 15.4699 16.5623C15.7712 16.8556 16.1246 16.9356 16.3859 16.9756C16.6072 17.0023 16.8685 17.0023 17.1005 17.0023H18.2846C18.8379 17.0023 19.2846 16.5489 19.2846 16.0023C19.2846 15.4556 18.8379 15.0023 18.2846 15.0023H16.9992V13.6557C17.5419 13.629 18.1659 13.5223 18.6472 13.0557C19.0366 12.6823 19.1752 12.2156 19.2339 11.8023C19.2846 11.4289 19.2846 10.9756 19.2846 10.5089L19.2846 10.3756C19.2847 10.1559 19.2847 9.91346 19.2552 9.69564C19.2179 9.42897 19.1206 9.08225 18.8153 8.77559C18.5139 8.48225 18.1606 8.40231 17.8992 8.3623C17.6766 8.33564 17.4153 8.33561 17.1846 8.33561H15.9992C15.4472 8.33561 14.9992 8.78895 14.9992 9.33561C14.9992 9.88228 15.4472 10.3356 15.9992 10.3356Z" fill="#2E3039"/>
<path d="M21.1418 8.33561C21.6938 8.33561 22.1418 8.78895 22.1418 9.33561V11.6689H22.9992V9.33561C22.9992 8.78895 23.4472 8.33561 23.9992 8.33561C24.5512 8.33561 24.9992 8.78895 24.9992 9.33561V16.0023C24.9992 16.5489 24.5512 17.0023 23.9992 17.0023C23.4472 17.0023 22.9992 16.5489 22.9992 16.0023V13.6689H22.0192C21.8378 13.6689 21.6165 13.6689 21.4245 13.6423C21.1952 13.6156 20.8632 13.5357 20.5792 13.2557C20.2899 12.9757 20.2005 12.6423 20.1685 12.4023C20.1419 12.2156 20.1418 11.9889 20.1418 11.8156V9.33561C20.1418 8.78895 20.5898 8.33561 21.1418 8.33561Z" fill="#2E3039"/>
<path d="M14.4095 6.05561C17.5948 2.86895 22.7588 2.86895 25.9428 6.05561C29.1282 9.24228 29.1282 14.4023 25.9428 17.5889C25.8295 17.7089 25.7121 17.8156 25.5935 17.9223C25.1815 18.2956 25.1442 18.9222 25.5122 19.3356C25.8788 19.7489 26.5108 19.7888 26.9241 19.4155C27.0708 19.2822 27.2161 19.1489 27.3575 19.0022C31.3241 15.0422 31.3241 8.61553 27.3575 4.6422C23.3908 0.6822 16.9615 0.6822 12.9948 4.6422C12.8535 4.78887 12.7175 4.93551 12.5855 5.08217C12.2175 5.49551 12.2548 6.12225 12.6668 6.49559C13.0801 6.85559 13.7122 6.81556 14.0788 6.40223C14.1503 6.32179 14.223 6.24736 14.2977 6.17088C14.3345 6.13328 14.3717 6.09517 14.4095 6.05561Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.75 15C12.75 14.5858 12.4142 14.25 12 14.25C11.5858 14.25 11.25 14.5858 11.25 15V18C11.25 18.4142 11.5858 18.75 12 18.75C12.4142 18.75 12.75 18.4142 12.75 18V15Z" fill="#2E3039"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.25C11.1339 1.25 10.3597 1.52688 9.52381 1.99594C8.7139 2.45043 7.78586 3.12145 6.61887 3.96524L5.10984 5.05632C4.1733 5.73346 3.42528 6.27429 2.86109 6.77487C2.27855 7.29173 1.84274 7.807 1.5663 8.45513C1.28925 9.10469 1.22225 9.77045 1.25941 10.5381C1.29528 11.2789 1.43264 12.1727 1.60393 13.2872L1.91918 15.3387C2.16256 16.9225 2.35635 18.1836 2.64105 19.1662C2.93544 20.1821 3.35016 20.9887 4.0914 21.6052C4.82957 22.2192 5.7089 22.4926 6.78306 22.6231C7.828 22.75 9.14615 22.75 10.8111 22.75H13.1889C14.8539 22.75 16.172 22.75 17.2169 22.6231C18.2911 22.4926 19.1704 22.2192 19.9086 21.6052C20.6499 20.9887 21.0646 20.1821 21.359 19.1662C21.6437 18.1837 21.8374 16.9225 22.0808 15.3387L22.3961 13.2871C22.5674 12.1726 22.7047 11.2789 22.7406 10.5381C22.7778 9.77045 22.7108 9.10469 22.4337 8.45513C22.1573 7.807 21.7215 7.29173 21.1389 6.77487C20.5747 6.2743 19.8267 5.73347 18.8902 5.05633L17.3811 3.96525C16.2142 3.12146 15.2861 2.45043 14.4762 1.99594C13.6403 1.52688 12.8661 1.25 12 1.25ZM7.46043 5.20777C8.67318 4.33092 9.53198 3.7114 10.2579 3.30406C10.9664 2.90645 11.483 2.75 12 2.75C12.517 2.75 13.0336 2.90645 13.7421 3.30406C14.468 3.7114 15.3268 4.33092 16.5396 5.20777L17.9794 6.24884C18.9551 6.95427 19.6418 7.45189 20.1434 7.8969C20.633 8.33129 20.8961 8.6735 21.054 9.04362C21.2112 9.41232 21.2731 9.83 21.2423 10.4655C21.2107 11.119 21.0862 11.9356 20.9073 13.0995L20.6063 15.0585C20.353 16.7066 20.1726 17.8709 19.9182 18.7487C19.6704 19.6038 19.3761 20.0971 18.9494 20.452C18.5197 20.8094 17.9613 21.0217 17.0361 21.134C16.0921 21.2487 14.865 21.25 13.1388 21.25H10.8612C9.13497 21.25 7.90793 21.2487 6.96392 21.134C6.03868 21.0217 5.48034 20.8094 5.0506 20.452C4.62394 20.0971 4.32959 19.6038 4.08178 18.7487C3.82742 17.8709 3.647 16.7066 3.39373 15.0585L3.09269 13.0995C2.91382 11.9356 2.7893 11.119 2.75766 10.4655C2.72689 9.83 2.78878 9.41232 2.94604 9.04362C3.1039 8.6735 3.36702 8.33129 3.85661 7.8969C4.35817 7.45189 5.04492 6.95427 6.02058 6.24884L7.46043 5.20777Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0921 3C17.8565 2.99996 19.3114 2.99992 20.463 3.15438C21.672 3.31655 22.7397 3.67011 23.5946 4.52305C24.4496 5.37599 24.8039 6.44124 24.9665 7.64742C25.0404 8.19577 25.079 8.81308 25.0992 9.50001C25.0992 9.50001 26.8197 9.49985 27.4395 9.58299C28.1163 9.67376 28.8105 9.88454 29.3792 10.4519C29.9479 11.0193 30.1592 11.7119 30.2502 12.3871C30.3335 13.0055 30.3334 13.7695 30.3334 14.6199L30.3333 25.1C30.3333 27.2539 28.5832 29 26.4243 29L10.696 29C8.9315 29.0001 7.47651 29.0001 6.32494 28.8456C5.11595 28.6835 4.04822 28.3299 3.19329 27.477C2.33836 26.624 1.98398 25.5588 1.82143 24.3526C1.66661 23.2037 1.66665 21.7521 1.66669 19.9918L1.66669 12.0082C1.66665 10.2479 1.66661 8.79629 1.82143 7.64742C1.98398 6.44124 2.33836 5.37599 3.19329 4.52305C4.04822 3.67011 5.11595 3.31655 6.32494 3.15438C7.47649 2.99992 8.93149 2.99996 10.6959 3L16.0921 3ZM26.4255 26.3999C27.1451 26.3999 27.7285 25.8179 27.7285 25.0999L27.7285 14.6999C27.7285 13.7439 27.7257 13.1577 27.6685 12.7335C27.6183 12.3606 27.5468 12.2983 27.5383 12.2909L27.537 12.2896C27.5297 12.2812 27.4673 12.2099 27.0935 12.1597C26.6682 12.1027 26.0806 12.0999 25.1224 12.0999L25.1224 25.0999C25.1224 25.8179 25.7058 26.3999 26.4255 26.3999ZM8.00002 9.66667C7.44774 9.66667 7.00002 10.1144 7.00002 10.6667C7.00002 11.219 7.44774 11.6667 8.00002 11.6667L18.6667 11.6667C19.219 11.6667 19.6667 11.219 19.6667 10.6667C19.6667 10.1144 19.219 9.66667 18.6667 9.66667L8.00002 9.66667ZM8.00002 15C7.44774 15 7.00002 15.4477 7.00002 16C7.00002 16.5523 7.44774 17 8.00002 17L18.6667 17C19.219 17 19.6667 16.5523 19.6667 16C19.6667 15.4477 19.219 15 18.6667 15L8.00002 15ZM8.00002 20.3333C7.44774 20.3333 7.00002 20.781 7.00002 21.3333C7.00002 21.8856 7.44774 22.3333 8.00002 22.3333L13.3334 22.3333C13.8856 22.3333 14.3334 21.8856 14.3334 21.3333C14.3334 20.781 13.8856 20.3333 13.3334 20.3333L8.00002 20.3333Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.1661 3.95442C10.7553 3.82074 11.369 3.75 12.0002 3.75C16.5565 3.75 20.2502 7.44365 20.2502 12C20.2502 14.3316 19.2833 16.4376 17.7269 17.9387V16C17.7269 15.5858 17.3911 15.25 16.9769 15.25C16.5626 15.25 16.2269 15.5858 16.2269 16V19.5C16.2269 19.9142 16.5626 20.25 16.9769 20.25H20.5002C20.9144 20.25 21.2502 19.9142 21.2502 19.5C21.2502 19.0858 20.9144 18.75 20.5002 18.75H19.0357C20.7162 16.9987 21.7502 14.6202 21.7502 12C21.7502 6.61522 17.3849 2.25 12.0002 2.25C11.2566 2.25 10.5315 2.33338 9.8342 2.49161C9.43025 2.58327 9.1771 2.98504 9.26876 3.38898C9.36042 3.79293 9.76218 4.04608 10.1661 3.95442Z" fill="#2B353E"/>
<path d="M3.5 3.76562C3.08579 3.76562 2.75 4.10141 2.75 4.51562C2.75 4.92984 3.08579 5.26562 3.5 5.26562H4.94958C3.27784 7.01543 2.25 9.38763 2.25 12.0001C2.25 17.3849 6.61522 21.7501 12 21.7501C12.7436 21.7501 13.4687 21.6667 14.166 21.5085C14.5699 21.4168 14.8231 21.015 14.7314 20.6111C14.6397 20.2071 14.238 19.954 13.834 20.0457C13.2449 20.1793 12.6312 20.2501 12 20.2501C7.44365 20.2501 3.75 16.5564 3.75 12.0001C3.75 9.68013 4.70717 7.58354 6.25 6.0839L6.25 8.00008C6.25 8.41429 6.58579 8.75008 7 8.75008C7.41421 8.75008 7.75 8.41429 7.75 8.00008L7.75 4.51562C7.75 4.10141 7.41421 3.76562 7 3.76562L3.5 3.76562Z" fill="#2B353E"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,3 @@
<svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.3286 2.69938C20.35 2.69897 20.3714 2.69933 20.3928 2.70045C23.661 2.87123 26.0252 4.18642 26.9215 6.63726C27.7812 8.98782 27.1501 12.0533 25.3157 15.4357C25.0787 15.8726 24.5324 16.0347 24.0955 15.7977C23.6585 15.5608 23.4964 15.0145 23.7334 14.5775C25.4808 11.3556 25.8242 8.87752 25.231 7.25551C24.6766 5.73949 23.1698 4.65557 20.3309 4.49971C16.1883 4.58993 11.818 6.83789 8.27071 10.4289C6.7718 11.9463 5.31466 13.7628 4.36882 15.6822C3.42279 17.602 3.02302 19.55 3.50569 21.3927C3.69277 22.1069 4.04066 22.589 4.67608 23.0939C5.57342 23.807 6.41967 24.1687 7.46019 24.2696C8.53543 24.3738 9.86963 24.2049 11.75 23.7446C15.4014 22.631 17.6813 20.9756 19.6272 19.2448C19.7876 19.0443 20.034 18.9097 20.331 18.9097C20.8232 18.9097 21.1638 19.272 21.2279 19.6827C21.7111 21.2628 21.3119 22.6974 20.5801 24.8969C20.4232 25.3685 19.9137 25.6237 19.442 25.4668C18.9704 25.3098 18.7153 24.8003 18.8722 24.3287C19.28 23.1028 19.5184 22.2748 19.6042 21.6215C17.7553 23.0989 15.4915 24.489 12.25 25.4739C12.2344 25.4786 12.2187 25.483 12.2029 25.4868C10.2524 25.9657 8.67373 26.1956 7.28654 26.0612C5.86012 25.9229 4.69201 25.4057 3.55624 24.5032C2.67855 23.8057 2.06862 23.0101 1.76444 21.8488C1.13472 19.4447 1.69385 17.0384 2.75421 14.8865C3.81477 12.7343 5.4115 10.7621 6.99014 9.16393C10.7681 5.33933 15.5731 2.79018 20.3286 2.69938ZM19.4866 20.1101C19.4865 20.11 19.4865 20.11 19.4865 20.1099L20.3284 19.8253L19.4866 20.1101ZM20.3284 19.8253L20.3223 19.8184L20.2584 19.7472M20.3284 19.8253L20.3223 19.8184Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 1.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="M16.8011 1.62239C15.6024 1.12587 14.2555 1.12587 13.0568 1.62239C12.5696 1.8242 12.1382 2.13201 11.673 2.53776C11.2173 2.93519 10.6906 3.46195 10.0247 4.12781L10.0247 4.12784L10.0246 4.12791L4.12791 10.0246L4.1279 10.0246L4.1278 10.0247C3.46194 10.6906 2.93519 11.2174 2.53776 11.673C2.13201 12.1382 1.8242 12.5696 1.62239 13.0568C1.12587 14.2555 1.12587 15.6024 1.62239 16.8011C1.8242 17.2883 2.13201 17.7197 2.53776 18.1849C2.9352 18.6405 3.46199 19.1673 4.12788 19.8332L4.16671 19.872C4.83264 20.538 5.35945 21.0648 5.81512 21.4622C6.28029 21.868 6.71171 22.1758 7.19893 22.3776C8.39764 22.8741 9.7445 22.8741 10.9432 22.3776C11.4304 22.1758 11.8618 21.868 12.327 21.4622C12.4628 21.3438 12.5307 21.2846 12.5566 21.2077C12.575 21.1533 12.5771 21.091 12.5625 21.0355C12.5419 20.9571 12.4759 20.8911 12.3441 20.7593L10.913 19.3282C10.5225 18.9377 10.5225 18.3045 10.913 17.914C11.3035 17.5235 11.9367 17.5235 12.3272 17.914L13.7061 19.2928C13.9061 19.4928 14.0061 19.5928 14.1304 19.5928C14.2546 19.5928 14.3546 19.4928 14.5546 19.2928L15.7919 18.0556C15.9919 17.8556 16.0919 17.7556 16.0919 17.6313C16.0919 17.5071 15.9919 17.4071 15.7919 17.2071L14.413 15.8282C14.0225 15.4377 14.0225 14.8045 14.413 14.414C14.8035 14.0235 15.4367 14.0235 15.8272 14.414L17.2061 15.7928C17.4061 15.9928 17.5061 16.0928 17.6304 16.0928C17.7546 16.0928 17.8546 15.9928 18.0546 15.7928L19.2919 14.5556C19.4919 14.3556 19.5919 14.2556 19.5919 14.1313C19.5919 14.0071 19.4919 13.9071 19.2919 13.7071L17.913 12.3282C17.5225 11.9377 17.5225 11.3045 17.913 10.914C18.3035 10.5235 18.9367 10.5235 19.3272 10.914L20.7574 12.3441C20.8902 12.4769 20.9566 12.5433 21.0357 12.5638C21.0905 12.578 21.152 12.5759 21.2057 12.558C21.2833 12.5322 21.3429 12.4638 21.4622 12.327C21.868 11.8618 22.1758 11.4304 22.3776 10.9432C22.8741 9.7445 22.8741 8.39764 22.3776 7.19893C22.1758 6.71171 21.868 6.28029 21.4622 5.81512C21.0648 5.35945 20.538 4.83264 19.872 4.16671L19.8332 4.12788L19.8331 4.12777C19.1673 3.46193 18.6405 2.93518 18.1849 2.53776C17.7197 2.13201 17.2883 1.8242 16.8011 1.62239Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@ -0,0 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.25 20C9.25 25.928 14.072 30.75 20 30.75C25.928 30.75 30.75 25.928 30.75 20C30.75 14.0721 25.9282 9.25021 20.0004 9.25C14.0724 9.25 9.25 14.072 9.25 20ZM28.9732 17.75C29.154 18.4705 29.25 19.2243 29.25 20C29.25 20.7757 29.154 21.5295 28.9732 22.25H24.5746C24.687 21.5359 24.751 20.7846 24.751 19.9997C24.751 19.2151 24.687 18.464 24.5747 17.75H28.9732ZM28.4553 16.25H24.2585C23.6395 13.9132 22.5564 12.0788 21.7158 10.9096C24.7331 11.4779 27.2382 13.5166 28.4553 16.25ZM23.049 17.75C23.1761 18.4613 23.25 19.213 23.25 19.9997C23.25 20.7866 23.1761 21.5386 23.049 22.25H16.9511C16.8239 21.5386 16.75 20.7866 16.75 19.9997C16.75 19.2131 16.8239 18.4613 16.9509 17.75H23.049ZM17.309 16.25H22.6909C21.966 13.828 20.7108 12.0282 20 11.1427C19.2892 12.0276 18.0339 13.8277 17.309 16.25ZM15.4263 17.75C15.314 18.464 15.25 19.2151 15.25 19.9997C15.25 20.7846 15.3141 21.5359 15.4264 22.25H11.0268C10.846 21.5295 10.75 20.7757 10.75 20C10.75 19.2243 10.846 18.4705 11.0268 17.75H15.4263ZM11.5447 16.25H15.7424C16.3613 13.9131 17.4442 12.0786 18.2848 10.9094C15.2672 11.4776 12.7619 13.5164 11.5447 16.25ZM21.7159 29.0904C24.7331 28.522 27.2382 26.4834 28.4553 23.75H24.2584C23.6395 26.0869 22.5565 27.9213 21.7159 29.0904ZM20 28.8568C20.7107 27.9719 21.9659 26.1721 22.6908 23.75H17.3093C18.0342 26.1717 19.2893 27.9713 20 28.8568ZM18.2858 29.0907C17.4451 27.9217 16.3618 26.0871 15.7427 23.75H11.5447C12.7621 26.4839 15.2678 28.5228 18.2858 29.0907Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,8 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path d="M28.0364 20.3057C27.2038 20.0739 26.0073 20.0061 25.1332 19.9906C25.7837 20.5597 26.2471 21.3366 26.4231 22.2212C26.501 22.6129 26.5004 23.0277 26.5 23.3707L26.4999 29.0016C26.4999 29.2673 26.4481 29.5209 26.3541 29.7528H29.4999C29.9141 29.7528 30.2499 29.417 30.2499 29.0028L30.2499 23.4295C30.2501 23.0368 30.2503 22.7338 30.1971 22.4663C29.9801 21.3754 29.1273 20.5227 28.0364 20.3057Z" fill="#8F9AA3"/>
<path d="M12.9999 20.2517C13.3852 20.2517 13.7079 20.5437 13.7462 20.9271C13.9745 23.2102 14.9885 24.5354 15.9142 25.2978C16.384 25.6847 16.8396 25.9329 17.1743 26.0831C17.3042 26.1414 17.4149 26.1846 17.4999 26.2151C17.5849 26.1846 17.6956 26.1414 17.8255 26.0831C18.1602 25.9328 18.6158 25.6845 19.0856 25.2975C20.0113 24.5351 21.0253 23.2098 21.2536 20.9271C21.292 20.5437 21.6146 20.2517 21.9999 20.2517C21.9999 20.2517 22.8619 20.2698 23.0364 20.3045C24.1273 20.5215 24.9801 21.3743 25.1971 22.4652C25.2503 22.7327 25.2501 23.0357 25.25 23.4284L25.2499 29.0017C25.2499 29.4159 24.9141 29.7517 24.4999 29.7517H10.4999C10.0857 29.7517 9.74993 29.4159 9.74993 29.0017L9.7499 23.4284C9.74971 23.0357 9.74956 22.7327 9.80277 22.4652C10.0198 21.3743 10.8725 20.5215 11.9634 20.3045C12.138 20.2698 12.9999 20.2517 12.9999 20.2517Z" fill="#8F9AA3"/>
<path d="M17.4999 10.2517C15.4143 10.2517 13.7499 11.9733 13.7499 14.0642V14.9392C13.7499 17.0301 15.4143 18.7517 17.4999 18.7517C19.5854 18.7517 21.2499 17.0301 21.2499 14.9392V14.0642C21.2499 11.9733 19.5854 10.2517 17.4999 10.2517Z" fill="#8F9AA3"/>
<path d="M19.8942 19.8635C20.1153 20.0002 20.2499 20.2416 20.2499 20.5015V22.5015C20.2499 22.7615 20.1153 23.0029 19.8942 23.1395C19.6731 23.2762 19.397 23.2886 19.1645 23.1723L17.4999 22.3401L15.8353 23.1725C15.6029 23.2888 15.3267 23.2764 15.1056 23.1397C14.8845 23.0031 14.7499 22.7617 14.7499 22.5017V20.5017C14.7499 20.2418 14.8845 20.0004 15.1056 19.8638C15.3266 19.7271 15.6027 19.7147 15.8352 19.8309L17.4998 20.663L19.1645 19.8307C19.397 19.7145 19.6731 19.7269 19.8942 19.8635Z" fill="#8F9AA3"/>
<path d="M22.4997 14.0625C22.4997 13.1095 22.2367 12.2101 21.7767 11.4412C22.4579 10.7092 23.4227 10.25 24.4997 10.25C26.5853 10.25 28.2497 11.9716 28.2497 14.0625V14.9375C28.2497 17.0284 26.5853 18.75 24.4997 18.75C23.4227 18.75 22.4579 18.2908 21.7767 17.5588C22.2367 16.7899 22.4997 15.8905 22.4997 14.9375V14.0625Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 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="M19.6905 5.77665C20.09 6.15799 20.1047 6.79098 19.7234 7.19048L9.22336 18.1905C9.03745 18.3852 8.78086 18.4968 8.51163 18.4999C8.2424 18.5031 7.98328 18.3975 7.79289 18.2071L4.29289 14.7071C3.90237 14.3166 3.90237 13.6834 4.29289 13.2929C4.68342 12.9024 5.31658 12.9024 5.70711 13.2929L8.48336 16.0692L18.2766 5.80953C18.658 5.41003 19.291 5.39531 19.6905 5.77665Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 533 B

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.3865 4.00002C17.4622 4.00209 14.5379 4.00209 11.6135 4.00002C9.35786 3.99842 7.23864 4.10199 5.5256 5.7098C4.54176 6.63321 3.88939 7.96334 2.90817 9.96396C2.83281 10.1176 2.75608 10.2711 2.67924 10.4248C2.30703 11.1693 1.93223 11.919 1.69854 12.7176C1.59525 13.0706 1.51357 13.4313 1.45389 13.7969C1.33317 14.5363 1.33324 15.2911 1.33336 16.4884C1.33336 16.5262 1.33337 16.5645 1.33337 16.6032L1.33337 17.7467C1.32961 18.1191 1.33069 18.4917 1.33177 18.8638C1.33228 19.0395 1.33279 19.2152 1.33279 19.3906C1.33278 20.7127 1.33277 21.7867 1.40428 22.6547C1.47799 23.5492 1.63474 24.3496 2.02143 25.0863C2.47537 25.9512 3.13668 26.6853 3.95132 27.2027C4.66111 27.6535 5.43641 27.8356 6.28065 27.9197C7.83511 28.0747 9.60573 28.1722 11.1601 27.92C12.4778 27.7061 13.692 27.0741 14.6581 26.1239C14.9713 25.8159 15.2489 25.4736 15.5158 25.1228C15.7846 24.7695 15.9191 24.5929 16.1082 24.586C16.2973 24.5791 16.4423 24.7433 16.7325 25.0717C17.0905 25.4769 17.4535 25.8793 17.846 26.246C18.9038 27.2342 20.2349 27.8478 21.6562 27.9753C22.9851 28.0944 24.3957 28.0516 25.7183 27.9197C26.5625 27.8356 27.3378 27.6535 28.0476 27.2027C28.8622 26.6854 29.5235 25.9512 29.9775 25.0863C30.3642 24.3496 30.5209 23.5492 30.5946 22.6547C30.6539 21.9359 30.664 21.0758 30.6658 20.0506C30.6664 20.0339 30.6667 20.0171 30.6667 20.0002L30.6667 19.0211C30.6668 18.9688 30.667 18.9164 30.6671 18.8641C30.6681 18.5368 30.669 18.2087 30.6667 17.8811L30.6667 16.4884C30.6668 15.2911 30.6669 14.5363 30.5462 13.7969C30.4865 13.4313 30.4048 13.0706 30.3015 12.7176C30.0676 11.9183 29.6939 11.1708 29.3219 10.4268C29.2447 10.2725 29.1676 10.1184 29.0919 9.96398C28.1107 7.96335 27.4583 6.63322 26.4745 5.70981C24.7614 4.10199 22.6422 3.99842 20.3865 4.00002ZM26.5777 10.8951C25.6038 8.92041 25.1889 8.16046 24.6495 7.65421C23.5518 6.62393 22.1081 6.64298 20.6826 6.6618C20.492 6.66432 20.3018 6.66683 20.1127 6.66683L11.8873 6.66683C11.6983 6.66683 11.5081 6.66432 11.3175 6.6618C9.89193 6.64298 8.44826 6.62393 7.35055 7.65421C6.81121 8.16043 6.39633 8.92032 5.42248 10.8947C5.69939 10.8257 5.98587 10.7763 6.28065 10.7469C7.08623 10.6666 8.07676 10.6666 9.26632 10.6667L22.7326 10.6667C23.9222 10.6666 24.9127 10.6666 25.7183 10.7469C26.0135 10.7764 26.3004 10.8259 26.5777 10.8951ZM20.0001 17.3336C20.0001 16.5972 20.5971 16.0003 21.3335 16.0003H24.0001C24.7365 16.0003 25.3335 16.5972 25.3335 17.3336C25.3335 18.07 24.7365 18.6669 24.0001 18.6669H21.3335C20.5971 18.6669 20.0001 18.07 20.0001 17.3336Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="31" height="31" viewBox="0 0 31 31">
<g id="Group_8325" data-name="Group 8325" transform="translate(-75 -236)">
<circle id="Ellipse_223" data-name="Ellipse 223" cx="15.5" cy="15.5" r="15.5" transform="translate(75 236)" fill="#359846"/>
<path id="hour-glass" d="M8.73,10.811a1.46,1.46,0,0,0,0-2.122L8.647,8.61C7.085,7.119,5.878,5.968,5.515,3.556A1.413,1.413,0,0,1,6.992,2h7.091A1.413,1.413,0,0,1,15.56,3.556C15.2,5.968,13.99,7.119,12.429,8.61l-.083.079a1.46,1.46,0,0,0,0,2.122l.083.079c1.562,1.491,2.768,2.642,3.132,5.054A1.413,1.413,0,0,1,14.083,17.5H6.992a1.413,1.413,0,0,1-1.477-1.556c.364-2.412,1.57-3.563,3.132-5.054Zm.529,1.316-.006,0c-1.19,1.064-2.076,1.856-2.191,3.816a.363.363,0,0,0,.13.3.382.382,0,0,0,.247.09h6.194a.382.382,0,0,0,.282-.122.361.361,0,0,0,.1-.268c-.115-1.959-1-2.752-2.191-3.816-.315-.281-.651-.582-1-.928a.4.4,0,0,0-.569,0c-.347.344-.681.643-.993.923Z" transform="translate(80.35 241.75)" fill="#fff" fill-rule="evenodd"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1021 B

@ -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.6439 1.25L13.3561 1.25C14.259 1.24997 15.0211 1.24994 15.6249 1.32042C16.255 1.39396 16.8707 1.55847 17.3706 2.00915C17.5958 2.21222 17.7873 2.44899 17.9376 2.71113C18.2326 3.22573 18.2812 3.77334 18.2347 4.31609C19.2103 4.4287 20.0196 4.68604 20.6521 5.31966C21.2538 5.92238 21.5125 6.68113 21.6335 7.58241C21.75 8.4507 21.75 9.55477 21.75 10.9249V16.043C21.75 17.4131 21.75 18.5172 21.6335 19.3855C21.5125 20.2867 21.2538 21.0455 20.6521 21.6482C20.0502 22.2511 19.2923 22.5105 18.3919 22.6318C17.5249 22.7486 16.4225 22.7486 15.055 22.7485L8.94504 22.7485C7.57752 22.7486 6.47513 22.7486 5.60808 22.6318C4.70774 22.5105 3.94976 22.2511 3.3479 21.6482C2.74621 21.0455 2.48747 20.2867 2.3665 19.3855C2.24997 18.5172 2.24998 17.4131 2.25 16.0431L2.25 10.9248C2.24998 9.55478 2.24997 8.45069 2.3665 7.58241C2.48747 6.68113 2.74621 5.92238 3.3479 5.31966C3.98043 4.68604 4.78975 4.4287 5.76534 4.31608C5.71879 3.77334 5.76736 3.22573 6.06239 2.71113C6.21268 2.44899 6.40422 2.21222 6.62944 2.00915C7.1293 1.55847 7.74503 1.39396 8.37506 1.32042C8.97893 1.24994 9.74097 1.24997 10.6439 1.25ZM8.60067 3.2073C8.13641 3.26149 7.99252 3.35241 7.92575 3.4126C7.8493 3.48154 7.78534 3.56095 7.73568 3.64756C7.69637 3.71613 7.64027 3.8608 7.69746 4.30137C7.75673 4.75797 7.91092 5.36081 8.14823 6.27796C8.33725 7.00848 8.46246 7.48783 8.59555 7.84684C8.72171 8.18716 8.82647 8.33584 8.9287 8.43308C9.00978 8.51021 9.10016 8.57847 9.1982 8.63631C9.32461 8.71091 9.5056 8.77465 9.88389 8.81094C10.1378 8.83531 10.4406 8.84448 10.8301 8.84793L11.5514 6.68404C11.726 6.1601 12.2924 5.87694 12.8163 6.05159C13.3402 6.22624 13.6234 6.79256 13.4488 7.3165L12.9378 8.84935C13.4424 8.84743 13.8138 8.83994 14.1161 8.81094C14.4944 8.77465 14.6754 8.71091 14.8018 8.63631C14.8998 8.57847 14.9902 8.51021 15.0713 8.43308C15.1735 8.33584 15.2783 8.18716 15.4045 7.84684C15.5375 7.48783 15.6628 7.00848 15.8518 6.27796C16.0891 5.36081 16.2433 4.75797 16.3025 4.30137C16.3597 3.8608 16.3036 3.71613 16.2643 3.64756C16.2147 3.56095 16.1507 3.48153 16.0742 3.4126C16.0075 3.35241 15.8636 3.26149 15.3993 3.2073C14.9218 3.15157 14.2747 3.15 13.2979 3.15L10.7021 3.15C9.72532 3.15 9.07816 3.15157 8.60067 3.2073ZM10 17C9.44772 17 9 17.4477 9 18C9 18.5523 9.44772 19 10 19H14C14.5523 19 15 18.5523 15 18C15 17.4477 14.5523 17 14 17L10 17Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

File diff suppressed because it is too large Load Diff

@ -0,0 +1,73 @@
import 'dart:convert';
import 'dart:io';
void main() async {
final file = File('assets/json/body_symptoms_data.json');
final content = await file.readAsString();
print('File size: ${content.length} characters');
// Split into two parts
final parts = content.split('export const SymptomsData = [');
if (parts.length != 2) {
print('ERROR: Could not split file properly');
exit(1);
}
print('Split into ${parts.length} parts');
// Process BodySymptomsData
var bodyPart = parts[0]
.replaceAll('export const BodySymptomsData = ', '')
.trim()
.replaceAll(RegExp(r';$'), '');
print('Parsing body symptoms...');
Map<String, dynamic> bodySymptomsData;
try {
bodySymptomsData = json.decode(bodyPart);
print('✅ Body symptoms parsed: ${bodySymptomsData.length} body parts');
} catch (e) {
print('❌ Error parsing body symptoms: $e');
exit(1);
}
// Process SymptomsData
print('Processing symptoms data...');
var symptomsPart = parts[1]
.trim()
.replaceAll(RegExp(r'\];$'), '')
.replaceAllMapped(RegExp(r'\n(\s*)id:'), (m) => '\n${m.group(1)}"id":')
.replaceAllMapped(RegExp(r'\n(\s*)type:'), (m) => '\n${m.group(1)}"type":')
.replaceAllMapped(RegExp(r'\n(\s*)name:'), (m) => '\n${m.group(1)}"name":')
.replaceAllMapped(RegExp(r'\n(\s*)common_name:'), (m) => '\n${m.group(1)}"common_name":');
print('Parsing symptoms...');
List<dynamic> symptomsData;
try {
symptomsData = json.decode('[$symptomsPart]');
print('✅ Symptoms parsed: ${symptomsData.length} symptoms');
} catch (e) {
print('❌ Error parsing symptoms: $e');
print('First 1000 chars:');
print('[$symptomsPart]'.substring(0, 1000));
exit(1);
}
// Create final JSON
print('Creating final JSON structure...');
final jsonStructure = {
'bodySymptoms': bodySymptomsData,
'symptoms': symptomsData,
};
// Write to file
print('Writing to file...');
final encoder = JsonEncoder.withIndent(' ');
await file.writeAsString(encoder.convert(jsonStructure));
print('\n✅ SUCCESS! File converted to proper JSON');
print('✅ Body parts: ${bodySymptomsData.length}');
print('✅ Symptoms: ${symptomsData.length}');
}

@ -1,122 +1,128 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
"idiom" : "iphone",
"scale" : "1x",
"size" : "29x29"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"size" : "1024x1024",
"filename" : "icon 1.jpg",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
"scale" : "1x",
"size" : "1024x1024"
},
{
"filename" : "Icon-App-76x76@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "76x76"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 815 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 704 B

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 16 KiB

@ -175,8 +175,7 @@ class ApiClientImp implements ApiClient {
}
// body['TokenID'] = "@dm!n";
// body['PatientID'] = 4772429;
// body['PatientID'] = 1231755;
// body['PatientID'] = 1018977;
// body['PatientTypeID'] = 1;
//
// body['PatientOutSA'] = 0;
@ -184,9 +183,6 @@ class ApiClientImp implements ApiClient {
}
body.removeWhere((key, value) => value == null);
log("uri: ${Uri.parse(url.trim())}");
log("body: ${json.encode(body)}");
final bool networkStatus = await Utils.checkConnection(bypassConnectionCheck: bypassConnectionCheck);
@ -204,7 +200,7 @@ class ApiClientImp implements ApiClient {
final int statusCode = response.statusCode;
log("uri: ${Uri.parse(url.trim())}");
log("body: ${json.encode(body)}");
log("response.body: ${response.body}");
// log("response.body: ${response.body}");
// log("response.body: ${response.body}");
if (statusCode < 200 || statusCode >= 400) {
onFailure('Error While Fetching data', statusCode, failureType: StatusCodeFailure("Error While Fetching data"));

@ -14,8 +14,8 @@ var PACKAGES_ORDERS = '/api/orders';
var PACKAGES_ORDER_HISTORY = '/api/orders/items';
var PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara';
// var BASE_URL = 'http://10.50.100.198:2018/';
// var BASE_URL = 'https://uat.hmgwebservices.com/';
var BASE_URL = 'https://hmgwebservices.com/';
var BASE_URL = 'https://uat.hmgwebservices.com/';
// var BASE_URL = 'https://hmgwebservices.com/';
// var BASE_URL = 'http://10.201.204.103/';
// var BASE_URL = 'https://orash.cloudsolutions.com.sa/';
// var BASE_URL = 'https://vidauat.cloudsolutions.com.sa/';
@ -178,8 +178,13 @@ var DELETE_CHILD_REQUEST = 'Services/Community.svc/REST/DeleteBaby';
var GET_TABLE_REQUEST = 'Services/Community.svc/REST/CreateVaccinationTable';
///BloodDenote
///
/// use get all cities from the e-referral, already calling this api there don't use multiple same api calls
var GET_CITIES_REQUEST = 'Services/Lists.svc/REST/GetAllCities';
///
///
///
///BloodDetails
var GET_BLOOD_REQUEST = 'services/PatientVarification.svc/REST/BloodDonation_GetBloodGroupDetails';
@ -440,13 +445,6 @@ var H2O_UPDATE_USER_DETAIL = "Services/H2ORemainder.svc/REST/H2O_UpdateUserDetai
var H2O_UNDO_USER_ACTIVITY = "Services/H2ORemainder.svc/REST/H2o_UndoUserActivity";
//E_Referral Services
var GET_ALL_RELATIONSHIP_TYPES = "Services/Patients.svc/REST/GetAllRelationshipTypes";
var SEND_ACTIVATION_CODE_FOR_E_REFERRAL = 'Services/Authentication.svc/REST/SendActivationCodeForEReferral';
var CHECK_ACTIVATION_CODE_FOR_E_REFERRAL = 'Services/Authentication.svc/REST/CheckActivationCodeForEReferral';
var GET_ALL_CITIES = 'services/Lists.svc/rest/GetAllCities';
var CREATE_E_REFERRAL = "Services/Patients.svc/REST/CreateEReferral";
var GET_E_REFERRALS = "Services/Patients.svc/REST/GetEReferrals";
// Encillary Orders
var GET_ANCILLARY_ORDERS = 'Services/Doctors.svc/REST/GetOnlineAncillaryOrderList';
@ -513,12 +511,6 @@ var PATIENT_ER_INSERT_PRES_ORDER = 'Services/Patients.svc/REST/PatientER_InsertP
var BLOOD_DONATION_REGISTER_BLOOD_TYPE = 'Services/PatientVarification.svc/REST/BloodDonation_RegisterBloodType';
var ADD_USER_AGREEMENT_FOR_BLOOD_DONATION = 'Services/PatientVarification.svc/REST/AddUserAgreementForBloodDonation';
// HHC RC SERVICES
var HHC_GET_ALL_SERVICES_RC = "api/HHC/getallhhc";
var ADD_HHC_ORDER_RC = "api/HHC/add";
var GET_ALL_HHC_ORDERS_RC = 'api/hhc/list';
var UPDATE_HHC_ORDER_RC = 'api/hhc/update';
// RRT RC SERVICES
var ADD_RRT_ORDER_RC = "api/rrt/add";
var GET_ALL_RRT_ORDERS_RC = "api/rrt/list";
@ -717,7 +709,9 @@ class ApiConsts {
static String baseUrl = 'https://hmgwebservices.com/'; // HIS API URL PROD
static String rcBaseUrl = 'https://rc.hmg.com/'; // RC API URL PROD
static String rcBaseUrl = 'https://rc.hmg.com/'; // dRC API URL PROD
static String hmgPharmacyApiBaseUrl = 'https://hmgpharmacyapi.hmg.com/'; // dRC API URL PROD
static String symptomsCheckerApi = '${hmgPharmacyApiBaseUrl}symptomsapi/api/SymptomChecker'; // dRC API URL PROD
static var payFortEnvironment = FortEnvironment.production;
static var applePayMerchantId = "merchant.com.hmgwebservices";
@ -750,7 +744,7 @@ class ApiConsts {
baseUrl = "https://uat.hmgwebservices.com/";
payFortEnvironment = FortEnvironment.test;
applePayMerchantId = "merchant.com.hmgwebservices.uat";
SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx';
SERVICE_URL = 'https://uat.hmgwebservices.com/HMGPayment/pages/SendPayFortRequest.aspx';
TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout";
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
@ -760,7 +754,7 @@ class ApiConsts {
baseUrl = "https://uat.hmgwebservices.com/";
payFortEnvironment = FortEnvironment.test;
applePayMerchantId = "merchant.com.hmgwebservices.uat";
SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx';
SERVICE_URL = 'https://uat.hmgwebservices.com/HMGPayment/pages/SendPayFortRequest.aspx';
TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout";
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
@ -780,7 +774,7 @@ class ApiConsts {
baseUrl = "https://uat.hmgwebservices.com/";
payFortEnvironment = FortEnvironment.test;
applePayMerchantId = "merchant.com.hmgwebservices.uat";
SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx';
SERVICE_URL = 'https://uat.hmgwebservices.com/HMGPayment/pages/SendPayFortRequest.aspx';
TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout";
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
@ -790,7 +784,7 @@ class ApiConsts {
baseUrl = "https://uat.hmgwebservices.com/";
payFortEnvironment = FortEnvironment.test;
applePayMerchantId = "merchant.com.hmgwebservices.uat";
SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx';
SERVICE_URL = 'https://uat.hmgwebservices.com/HMGPayment/pages/SendPayFortRequest.aspx';
TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout";
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
@ -851,10 +845,30 @@ class ApiConsts {
static final String updateHHCOrder = 'api/hhc/update';
static final String addHHCOrder = 'api/HHC/add';
// SYMPTOMS CHECKER
static final String getBodySymptomsByName = '$symptomsCheckerApi/GetBodySymptomsByName';
static final String getRiskFactors = '$symptomsCheckerApi/GetRiskFactors';
static final String getGeneralSuggestion = '$symptomsCheckerApi/GetGeneralSggestion';
static final String diagnosis = '$symptomsCheckerApi/diagnosis';
static final String explain = '$symptomsCheckerApi/explain';
//E-REFERRAL SERVICES
static final getAllRelationshipTypes = "Services/Patients.svc/REST/GetAllRelationshipTypes";
static final sendActivationCodeForEReferral = 'Services/Authentication.svc/REST/SendActivationCodeForEReferral';
static final checkActivationCodeForEReferral = 'Services/Authentication.svc/REST/CheckActivationCodeForEReferral';
static final getAllCities = 'services/Lists.svc/rest/GetAllCities';
static final createEReferral = "Services/Patients.svc/REST/CreateEReferral";
static final getEReferrals = "Services/Patients.svc/REST/GetEReferrals";
// ************ static values for Api ****************
static final double appVersionID = 19.3;
static final double appVersionID = 50.3;
static final int appChannelId = 3;
static final String appIpAddress = "10.20.10.20";
static final String appGeneralId = "Cs2020@2016\$2958";
static final String sessionID = 'TMRhVmkGhOsvamErw';
}
class ApiKeyConstants {
static final String googleMapsApiKey = 'AIzaSyB6TERnxIr0yJ3qG4ULBZbu0sAD4tGqtng';
}

@ -175,7 +175,19 @@ class AppAssets {
static const String comprehensiveCheckup = '$svgBasePath/comprehensive_checkup.svg';
static const String all_payment_method = '$svgBasePath/all_payment_method.svg';
static const String ic_rrt_vehicle = '$svgBasePath/ic_rrt_vehicle.svg';
static const String doctor_profile_rating_icon = '$svgBasePath/doctor_profile_rating_icon.svg';
static const String doctor_profile_reviews_icon = '$svgBasePath/doctor_profile_reviews_icon.svg';
static const String waiting_appointment_icon = '$svgBasePath/waitingAppo.svg';
static const String call_for_vitals = '$svgBasePath/call_for_vitals.svg';
static const String call_for_doctor = '$svgBasePath/call_for_doctor.svg';
static const String bulb_icon = '$svgBasePath/bulb_icon.svg';
static const String select_city_icon = '$svgBasePath/select_city_icon.svg';
static const String blood_donation_icon = '$svgBasePath/blood_donation_icon.svg';
static const String virtual_tour_icon = '$svgBasePath/virtual_tour_icon.svg';
static const String car_parking_icon = '$svgBasePath/car_parking_icon.svg';
static const String latest_news_icon = '$svgBasePath/latest_news_icon.svg';
static const String hmg_contact_icon = '$svgBasePath/hmg_contact_icon.svg';
static const String services_medical_file_icon = '$svgBasePath/services_medical_file_icon.svg';
//bottom navigation//
static const String homeBottom = '$svgBasePath/home_bottom.svg';
@ -189,23 +201,39 @@ class AppAssets {
static const String heart = '$svgBasePath/heart.svg';
static const String alertSquare = '$svgBasePath/alert-square.svg';
static const String arrowRight = '$svgBasePath/arrow-right.svg';
static const String tickIcon = '$svgBasePath/tick.svg';
// Symptoms Checker
static const String calendarGrey = '$svgBasePath/calendar-grey.svg';
static const String weightScale = '$svgBasePath/weight-scale.svg';
static const String rulerIcon = '$svgBasePath/ruler.svg';
static const String genderIcon = '$svgBasePath/gender.svg';
static const String bodyIcon = '$svgBasePath/body_icon.svg';
static const String rotateIcon = '$svgBasePath/rotate_icon.svg';
static const String refreshIcon = '$svgBasePath/refresh.svg';
static const String homeBorderedIcon = '$svgBasePath/home_bordered.svg';
// PNGS //
static const String hmg_logo = '$pngBasePath/hmg_logo.png';
static const String livecare_service = '$pngBasePath/livecare_service.png';
static const String male_img = '$pngBasePath/male_img.png';
static const String hmgLogo = '$pngBasePath/hmg_logo.png';
static const String liveCareService = '$pngBasePath/livecare_service.png';
static const String maleImg = '$pngBasePath/male_img.png';
static const String femaleImg = '$pngBasePath/female_img.png';
static const String babyGirlImg = '$pngBasePath/baby_girl_img.png';
static const String babyBoyImg = '$pngBasePath/baby_img.png';
static const String apple_pay = '$pngBasePath/Apple_Pay.png';
static const String applePay = '$pngBasePath/Apple_Pay.png';
static const String mada = '$pngBasePath/Mada.png';
static const String Mastercard = '$pngBasePath/Mastercard.png';
static const String tamara_en = '$pngBasePath/tamara_en.png';
static const String mastercard = '$pngBasePath/Mastercard.png';
static const String tamaraEng = '$pngBasePath/tamara_en.png';
static const String visa = '$pngBasePath/visa.png';
static const String lockIcon = '$pngBasePath/lock-icon.png';
static const String dummy_user = '$pngBasePath/dummy_user.png';
static const String dummyUser = '$pngBasePath/dummy_user.png';
static const String comprehensiveCheckupEn = '$pngBasePath/cc_en.png';
static const String comprehensiveCheckupAr = '$pngBasePath/cc_er.png';
static const String maleIcon = '$pngBasePath/male_icon.png';
static const String femaleIcon = '$pngBasePath/female_icon.png';
static const String fullBodyFront = '$pngBasePath/full_body_front.png';
static const String fullBodyBack = '$pngBasePath/full_body_back.png';
}
class AppAnimations {
@ -221,9 +249,9 @@ class AppAnimations {
static const String splashLaunching = '$lottieBasePath/splash_launching.json';
static const String noData = '$lottieBasePath/Nodata.json';
static const String ripple = '$lottieBasePath/Ripple.json';
static const String pending_loading_animation = '$lottieBasePath/pending_loading_animation.json';
static const String pendingLoadingAnimation = '$lottieBasePath/pending_loading_animation.json';
static const String ambulance = '$lottieBasePath/ambulance.json';
static const String ambulance_alert = '$lottieBasePath/ambulance_alert.json';
static const String rrt_ambulance = '$lottieBasePath/rrt_ambulance.json';
static const String ambulanceAlert = '$lottieBasePath/ambulance_alert.json';
static const String rrtAmbulance = '$lottieBasePath/rrt_ambulance.json';
}

@ -74,4 +74,7 @@ class CacheConst {
static const String patientOccupationList = 'patient-occupation-list';
static const String hasEnabledQuickLogin = 'has-enabled-quick-login';
static const String quickLoginEnabled = 'quick-login-enabled';
static const String zoomRoomID = 'zoom-room-id';
static String isAppOpenedFromCall = "is_app_opened_from_call";
}

@ -5,6 +5,8 @@ import 'package:hmg_patient_app_new/core/app_state.dart';
import 'package:hmg_patient_app_new/core/location_util.dart';
import 'package:hmg_patient_app_new/features/authentication/authentication_repo.dart';
import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart';
import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_repo.dart';
import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_view_model.dart';
import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_repo.dart';
import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart';
import 'package:hmg_patient_app_new/features/common/common_repo.dart';
@ -37,6 +39,8 @@ import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_mo
import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart';
import 'package:hmg_patient_app_new/features/radiology/radiology_repo.dart';
import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart';
import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_repo.dart';
import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart';
import 'package:hmg_patient_app_new/features/todo_section/todo_section_repo.dart';
import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart';
import 'package:hmg_patient_app_new/services/analytics/analytics_service.dart';
@ -94,6 +98,9 @@ class AppDependencies {
final sharedPreferences = await SharedPreferences.getInstance();
getIt.registerLazySingleton<CacheService>(() => CacheServiceImp(sharedPreferences: sharedPreferences, loggerService: getIt()));
getIt.registerLazySingleton<ApiClient>(() => ApiClientImp(appState: getIt()));
getIt.registerLazySingleton<LocalAuthService>(
() => LocalAuthService(loggerService: getIt<LoggerService>(), localAuth: getIt<LocalAuthentication>()),
);
// Repositories
getIt.registerLazySingleton<CommonRepo>(() => CommonRepoImp(loggerService: getIt()));
@ -105,9 +112,6 @@ class AppDependencies {
getIt.registerLazySingleton<PrescriptionsRepo>(() => PrescriptionsRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
getIt.registerLazySingleton<InsuranceRepo>(() => InsuranceRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
getIt.registerLazySingleton<PayfortRepo>(() => PayfortRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
getIt.registerLazySingleton<LocalAuthService>(
() => LocalAuthService(loggerService: getIt<LoggerService>(), localAuth: getIt<LocalAuthentication>()),
);
getIt.registerLazySingleton<HabibWalletRepo>(() => HabibWalletRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
getIt.registerLazySingleton<MedicalFileRepo>(() => MedicalFileRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
getIt.registerLazySingleton<ImmediateLiveCareRepo>(() => ImmediateLiveCareRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
@ -116,6 +120,8 @@ class AppDependencies {
getIt.registerLazySingleton<LocationRepo>(() => LocationRepoImpl(apiClient: getIt()));
getIt.registerLazySingleton<ContactUsRepo>(() => ContactUsRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
getIt.registerLazySingleton<HmgServicesRepo>(() => HmgServicesRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
getIt.registerLazySingleton<SymptomsCheckerRepo>(() => SymptomsCheckerRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
getIt.registerLazySingleton<BloodDonationRepo>(() => BloodDonationRepoImp(loggerService: getIt<LoggerService>(), apiClient: getIt()));
// ViewModels
// Global/shared VMs LazySingleton
@ -123,14 +129,11 @@ class AppDependencies {
getIt.registerLazySingleton<LabViewModel>(() => LabViewModel(labRepo: getIt(), errorHandlerService: getIt(), navigationService: getIt()));
getIt.registerLazySingleton<RadiologyViewModel>(
() => RadiologyViewModel(
radiologyRepo: getIt(),
errorHandlerService: getIt(),
navigationService: getIt()
),
() => RadiologyViewModel(radiologyRepo: getIt(), errorHandlerService: getIt(), navigationService: getIt()),
);
getIt.registerLazySingleton<PrescriptionsViewModel>(() => PrescriptionsViewModel(prescriptionsRepo: getIt(), errorHandlerService: getIt(), navServices: getIt()));
getIt.registerLazySingleton<PrescriptionsViewModel>(
() => PrescriptionsViewModel(prescriptionsRepo: getIt(), errorHandlerService: getIt(), navServices: getIt()));
getIt.registerLazySingleton<InsuranceViewModel>(() => InsuranceViewModel(insuranceRepo: getIt(), errorHandlerService: getIt()));
@ -220,8 +223,13 @@ class AppDependencies {
() => TodoSectionViewModel(todoSectionRepo: getIt(), errorHandlerService: getIt()),
);
getIt.registerLazySingleton<SymptomsCheckerViewModel>(() => SymptomsCheckerViewModel(errorHandlerService: getIt(), symptomsCheckerRepo: getIt()));
getIt.registerLazySingleton<HmgServicesViewModel>(
() => HmgServicesViewModel(bookAppointmentsRepo: getIt(), hmgServicesRepo: getIt(), errorHandlerService: getIt()),
() => HmgServicesViewModel(bookAppointmentsRepo: getIt(), hmgServicesRepo: getIt(), errorHandlerService: getIt(), navigationService: getIt()),
);
getIt.registerLazySingleton<BloodDonationViewModel>(
() => BloodDonationViewModel(bloodDonationRepo: getIt(), errorHandlerService: getIt(), navigationService: getIt(), dialogService: getIt(), appState: getIt()),
);
// Screen-specific VMs Factory

@ -32,6 +32,8 @@ enum AppEnvironmentTypeEnum { dev, uat, preProd, qa, staging, prod }
enum FamilyFileEnum { active, inactive, blocked, deleted, pending, rejected }
enum BodyView { front, back }
extension CalenderExtension on CalenderEnum {
int get toInt {
switch (this) {
@ -172,7 +174,7 @@ extension FamilyFileEnumExtenshion on FamilyFileEnum {
return isArabic ? 'محذوف' : 'Deleted';
case FamilyFileEnum.pending:
return isArabic ? 'قيد الانتظار' : 'Pending';
case FamilyFileEnum.rejected:
case FamilyFileEnum.rejected:
return isArabic ? 'مرفوض' : 'Rejected';
}
}
@ -239,3 +241,7 @@ extension ServiceTypeEnumExt on ServiceTypeEnum {
}
}
}
// SymptomsChecker
enum PossibleConditionsSeverityEnum { seekMedicalAdvice, monitorOnly, emergency }

@ -1,316 +0,0 @@
import 'dart:async';
import 'dart:collection';
import 'dart:convert';
import 'dart:io';
import 'dart:ui';
import 'package:device_calendar/device_calendar.dart';
import 'package:flutter/widgets.dart';
import 'package:hmg_patient_app_new/core/dependencies.dart';
import 'package:hmg_patient_app_new/core/utils/date_util.dart';
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_reminder_view.dart';
import 'package:hmg_patient_app_new/services/dialog_service.dart';
import 'package:hmg_patient_app_new/services/permission_service.dart';
import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
import 'package:jiffy/jiffy.dart';
import 'package:manage_calendar_events/manage_calendar_events.dart' as ios;
import 'package:permission_handler/permission_handler.dart';
import 'package:timezone/data/latest.dart' as tzl;
final DeviceCalendarPlugin deviceCalendarPlugin = DeviceCalendarPlugin();
final ios.CalendarPlugin _myPlugin = ios.CalendarPlugin();
class CalendarUtils {
static Completer<CalendarUtils>? _completer;
dynamic get writableCalendars => calendars.firstWhere((c) => !c.isReadOnly!);
dynamic calendars;
CalendarUtils._(this.calendars);
// static Future<CalendarUtils> getInstance() async {
// if (_completer == null) {
// _completer = Completer<CalendarUtils>();
// print(_completer!.isCompleted);
// try {
// final dynamic calendarsResult;
// if (Platform.isIOS) {
// calendarsResult = await _myPlugin.getCalendars();
// if (!_completer!.isCompleted) {
// _completer?.complete(CalendarUtils._(await calendarsResult!));
// }
// } else {
// calendarsResult = await deviceCalendarPlugin.retrieveCalendars();
// if (!_completer!.isCompleted) {
// _completer?.complete(CalendarUtils._(await calendarsResult.data!));
// }
// }
// } on Exception catch (e) {
// if (!_completer!.isCompleted) {
// _completer!.completeError(e);
// }
// }
// }
// return _completer!.future;
// }
static Future<CalendarUtils> getInstance() async {
tzl.initializeTimeZones();
if (_completer != null) {
return _completer!.future;
}
_completer = Completer<CalendarUtils>();
try {
final dynamic calendarsResult;
if (Platform.isIOS) {
calendarsResult = await _myPlugin.getCalendars();
_completer!.complete(CalendarUtils._(calendarsResult));
} else {
calendarsResult = await deviceCalendarPlugin.retrieveCalendars();
_completer!.complete(CalendarUtils._(calendarsResult.data));
}
} catch (e) {
_completer!.completeError(e);
}
return _completer!.future;
}
Future createOrUpdateEvents({List<DateTime>? scheduleList, String? title, String? description, List<DateTime>? scheduleDateTime, List<DayOfWeek>? daysOfWeek}) async {
tzl.initializeTimeZones();
List<Event> events = [];
Location _currentLocation;
if (DateTime.now().timeZoneName == "+04")
_currentLocation = getLocation('Asia/Dubai');
else
_currentLocation = getLocation('Asia/Riyadh');
scheduleDateTime!.forEach((element) {
RecurrenceRule recurrenceRule = RecurrenceRule(
// RecurrenceFrequency.Daily,
// daysOfWeek: daysOfWeek,
// endDate: element,
until: element, frequency: Frequency.daily,
);
//added byAamir Tz Time
Event event = Event(writableCalendars!.id,
recurrenceRule: recurrenceRule,
start: TZDateTime.from(element, _currentLocation),
end: TZDateTime.from(element.add(Duration(minutes: 30)), _currentLocation),
title: title,
description: description);
events.add(event);
});
events.forEach((element) {
deviceCalendarPlugin.createOrUpdateEvent(element);
});
}
Future createOrUpdateEvent({required String title, required String description, required String location, DateTime? scheduleDateTime, String? eventId}) async {
RecurrenceRule recurrenceRule = RecurrenceRule(
// RecurrenceFrequency.Daily,
// daysOfWeek: daysOfWeek,
// endDate: scheduleDateTime,
until: scheduleDateTime, frequency: Frequency.daily,
);
Location _currentLocation;
// if (DateTime.now().timeZoneName == "+04")
// _currentLocation = getLocation('Asia/Dubai');
// else
_currentLocation = getLocation('Asia/Riyadh');
TZDateTime scheduleDateTimeUTZ = TZDateTime.from(scheduleDateTime!, _currentLocation);
print("writableCalendars-name: " + writableCalendars.name);
print("writableCalendars-Id: " + writableCalendars.id);
print("writableCalendarsToString: " + writableCalendars.toString());
print("writableCalendarsToString: " + writableCalendars!.id!);
Event event = Event(
writableCalendars!.id,
start: scheduleDateTimeUTZ,
end: scheduleDateTimeUTZ.add(Duration(minutes: 30)),
title: title,
description: description,
);
ios.CalendarEvent iosCalEvent =
ios.CalendarEvent(location: location, startDate: scheduleDateTimeUTZ, endDate: scheduleDateTimeUTZ.add(Duration(minutes: 30)), title: title, description: description, isAllDay: false);
if (Platform.isAndroid) {
Result<bool> result = await deviceCalendarPlugin.hasPermissions();
print(result);
await deviceCalendarPlugin.createOrUpdateEvent(event).catchError((e) {
print("catchError " + e.toString());
}).whenComplete(() {
print("whenComplete Calender ID " + eventId!);
});
} else {
await _myPlugin.createEvent(calendarId: writableCalendars.id!, event: iosCalEvent).catchError((e) {
print("catchError " + e.toString());
}).whenComplete(() {
print("whenComplete Calender ID iOS " + eventId!);
});
}
}
deleteEvent(String _calendarId, String _eventId) async {
if (Platform.isIOS) {
await _myPlugin.deleteEvent(calendarId: _calendarId, eventId: _eventId);
} else {
await deviceCalendarPlugin.deleteEvent(_calendarId, _eventId);
}
}
Future retrieveEvents(
String calendarId,
RetrieveEventsParams retrieveEventsParams,
) async {
if (Platform.isIOS) {
return await _myPlugin.getEvents(calendarId: calendarId);
} else {
return await deviceCalendarPlugin.retrieveEvents(calendarId, retrieveEventsParams);
}
}
Future createCalendar(
String calendarName, {
Color? calendarColor,
String? localAccountName,
}) async {
return await deviceCalendarPlugin.createCalendar(calendarName, calendarColor: calendarColor, localAccountName: localAccountName);
}
}
Future<Map<Permission, PermissionStatus>> requestPermissions() async {
var permissionResults = [Permission.calendarFullAccess].request();
return permissionResults;
}
showReminderBottomSheet(BuildContext context, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted,
{required Function() onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool isMultiAllowed = false}) async {
if (Platform.isAndroid) {
if (await PermissionService.isCalendarPermissionEnabled()) {
_showReminderBottomSheet(context, dateTime, doctorName, eventId, appoDateFormatted, appoTimeFormatted,
onSuccess: onSuccess, title: title, description: description, onMultiDateSuccess: onMultiDateSuccess, isMultiAllowed: isMultiAllowed);
} else {
// Utils.showPermissionConsentDialog(context, TranslationBase.of(context).calendarPermission, () async {
// if (await Permission.calendarFullAccess.request().isGranted) {
// _showReminderDialog(context, dateTime, doctorName, eventId, appoDateFormatted, appoTimeFormatted,
// onSuccess: onSuccess, title: title, description: description, onMultiDateSuccess: onMultiDateSuccess, isMultiAllowed: isMultiAllowed);
// }
// });
}
} else {
if (await Permission.calendarWriteOnly.request().isGranted) {
if (await Permission.calendarFullAccess.request().isGranted) {
_showReminderBottomSheet(context, dateTime, doctorName, eventId, appoDateFormatted, appoTimeFormatted,
onSuccess: onSuccess, title: title, description: description, onMultiDateSuccess: onMultiDateSuccess, isMultiAllowed: isMultiAllowed);
}
}
}
}
Future<void> _showReminderBottomSheet(BuildContext providedContext, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted,
{required Function onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool? isMultiAllowed}) async {
showCommonBottomSheetWithoutHeight(providedContext, title: "Set the timer of reminder".needTranslation, child: PrescriptionReminderView(
setReminder: (int value) async {
if (!isMultiAllowed!) {
if (onMultiDateSuccess == null) {
CalendarUtils calendarUtils = await CalendarUtils.getInstance();
await calendarUtils.createOrUpdateEvent(
title: title ?? "You have appointment with Dr. ".needTranslation + doctorName,
description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted,
scheduleDateTime: dateTime,
eventId: eventId,
location: '');
onSuccess();
}
} else {
onMultiDateSuccess!(value);
}
},
), callBackFunc: () {}, isFullScreen: false);
}
setCalender(BuildContext context,
{required String eventId, required int selectedMinutes, int? frequencyNumber, required int days, required String orderDate, required String itemDescriptionN, required String route}) async {
DateTime actualDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day, 8, 0);
frequencyNumber ??= 2; //Some time frequency number is null so by default will be 2
int remainingDays = days - (Jiffy.parseFromDateTime(DateTime.now()).diff(Jiffy.parseFromDateTime(DateUtil.convertStringToDate(orderDate)), unit: Unit.day) as int);
if (remainingDays.isNegative) {
getIt.get<DialogService>().showErrorBottomSheet(message: "Prescription date has been already passed you can not add a reminder for this prescription.");
return;
}
CalendarUtils calendarUtils = await CalendarUtils.getInstance();
try {
for (int i = 0; i < remainingDays; i++) {
//event for number of days.
for (int j = 0; j < frequencyNumber; j++) {
// event for number of times per day.
if (j != 0) {
actualDate.add(new Duration(hours: 8)); // 8 hours addition for daily dose.
}
//Time subtraction from actual reminder time. like before 30, or 1 hour.
actualDate = Jiffy.parseFromDateTime(actualDate).subtract(minutes: selectedMinutes).dateTime;
calendarUtils.createOrUpdateEvent(
title: "$itemDescriptionN} Prescription Reminder",
description: "$itemDescriptionN $frequencyNumber $route ",
scheduleDateTime: actualDate,
eventId: eventId + (i.toString() + j.toString()),
location: '', //event id with varitions
);
actualDate = DateTime(actualDate.year, actualDate.month, actualDate.day, 8, 0);
}
actualDate = Jiffy.parseFromDateTime(actualDate).add(days: 1).dateTime;
}
} catch (ex) {
getIt.get<DialogService>().showErrorBottomSheet(message: "catch:$ex");
}
}
Future<void> checkAndRemove(hasReminder, {bool delete = false, String itemDescriptionN = ""}) async {
final ios.CalendarPlugin _myPlugin = ios.CalendarPlugin();
CalendarUtils calendarUtils = await CalendarUtils.getInstance();
DateTime startEventsDate = Jiffy.parseFromDateTime(DateTime.now()).subtract(days: 30).dateTime;
DateTime endEventsDate = Jiffy.parseFromDateTime(DateTime.now()).add(days: 120).dateTime;
RetrieveEventsParams params = RetrieveEventsParams(startDate: startEventsDate, endDate: endEventsDate);
if (calendarUtils.calendars != null) {
if (Platform.isAndroid) {
await processEvents(calendarUtils.calendars, calendarUtils, params, delete, itemDescriptionN, hasReminder);
} else {
List<ios.Calendar>? iosCalendars = await _myPlugin.getCalendars();
if (iosCalendars != null) {
await processEvents(iosCalendars.map((cal) => Calendar(id: cal.id, name: cal.name, accountName: cal.accountName)).toList(), calendarUtils, params, delete, itemDescriptionN, hasReminder);
}
}
}
}
Future<void> processEvents(List<Calendar> calendars, calendarUtils, params, delete, String itemDescriptionN, hasReminder) async {
for (var calendar in calendars) {
Result<UnmodifiableListView<Event>> events = await calendarUtils.retrieveEvents(calendar.id!, params);
for (var event in events.data!) {
if (event.title!.contains(itemDescriptionN)) {
if (delete) {
await calendarUtils.deleteEvent(calendar, event);
// AppToast.showSuccessToast(message: TranslationBase.of(context).reminderCancelSuccess);
hasReminder = false;
} else {
hasReminder = false;
// setState(() {
// hasReminder = true;
// });
}
}
}
}
}

@ -0,0 +1,186 @@
import 'dart:async';
import 'package:device_calendar_plus/device_calendar_plus.dart';
import 'package:hmg_patient_app_new/core/utils/date_util.dart';
import 'package:jiffy/jiffy.dart' show Jiffy;
class CalenderUtilsNew {
final DeviceCalendar calender = DeviceCalendar.instance;
List<Calendar> writableCalender = [];
CalenderUtilsNew._instance() {
getCalenders();
}
static final CalenderUtilsNew instance = CalenderUtilsNew._instance();
Future<void> getCalenders() async {
CalendarPermissionStatus result = await DeviceCalendar.instance.hasPermissions();
if (result != CalendarPermissionStatus.granted) await DeviceCalendar.instance.requestPermissions();
var calenders = await calender.listCalendars();
calenders.forEach((calender) {
if (!calender.readOnly) {
writableCalender.add(calender);
}
});
}
FutureOr<bool> createOrUpdateEvent(
{required String title,
required String description,
required String location,
DateTime? scheduleDateTime,
String? eventId,
int? reminderMinutes}) async {
if (writableCalender.isEmpty) {
await getCalenders();
}
var writableCalendars = writableCalender.first;
String eventResult = "";
CalendarPermissionStatus result = await DeviceCalendar.instance.hasPermissions();
if (result != CalendarPermissionStatus.granted) await DeviceCalendar.instance.requestPermissions();
print(result);
// String eventId = await getEventIdIfEventExist(title!.split("#").last);
// if (eventId.isEmpty) {
eventResult = await DeviceCalendar.instance.createEvent(
calendarId: writableCalendars!.id,
title: title,
description: description,
startDate: scheduleDateTime!,
endDate: scheduleDateTime!.add(Duration(minutes: 30)),
// reminderMinutes: reminderMinutes, // TODO : NEED TO CONFIRM THIS FROM TAHA
);
return eventResult.isNotEmpty;
// }
// await DeviceCalendar.instance.updateEvent(
// eventId: eventId,
// title: title,
// description: description,
// startDate: scheduleDateTime!,
// endDate: scheduleDateTime!.add(Duration(minutes: 30)),
// );
// return eventId.isNotEmpty;
}
FutureOr<bool> createMultipleEvents(
{required int reminderMinutes,
int? frequencyNumber,
required int days,
required String orderDate,
required String itemDescriptionN,
required String route,
Function(String)? onFailure,
String? prescriptionNumber}) async {
DateTime currentDay = DateTime.now();
DateTime actualDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day, 8, 0);
print("the frequency is $frequencyNumber");
frequencyNumber ??= 2; //Some time frequency number is null so by default will be 2
int interval = calculateIntervalAsPerFrequency(frequencyNumber);
// int remainingDays = days - (Jiffy.parseFromDateTime(DateTime.now()).diff(Jiffy.parseFromDateTime(DateUtil.convertStringToDate(orderDate)), unit: Unit.day) as int);
Duration difference = (actualDate.difference(DateUtil.convertStringToDate(orderDate)));
int remainingDays = 5;
// if (remainingDays.isNegative) {
// onFailure?.call("Prescription date has been already passed you can not add a reminder for this prescription.");
// return false;
// }
bool statusOfOperation = false;
for (int i = 0; i < remainingDays; i++) {
//event for number of days.
for (int j = 0; j < frequencyNumber; j++) {
statusOfOperation = await createOrUpdateEvent(
title: "$itemDescriptionN} Medication about to due for prescription , #$prescriptionNumber",
description: "$itemDescriptionN $frequencyNumber $route ",
scheduleDateTime: actualDate,
location: '',
//event id with varitions
reminderMinutes: reminderMinutes);
if (!statusOfOperation) return false;
actualDate = actualDate.add(Duration(hours: interval));
// if (actualDate.difference(currentDay).inDays == 1) break;
}
// actualDate = actualDate.add(Duration(days: 1));
}
return statusOfOperation;
}
int calculateIntervalAsPerFrequency(int frequencyNumber) {
return 24 ~/ frequencyNumber;
}
FutureOr<List<Event>> getEvents() async {
var availableCalender = writableCalender.first;
DateTime startEventsDate = Jiffy.parseFromDateTime(DateTime.now()).subtract(days: 30).dateTime;
DateTime endEventsDate = Jiffy.parseFromDateTime(DateTime.now()).add(days: 120).dateTime;
return await calender.listEvents(startEventsDate, endEventsDate, calendarIds: [availableCalender.id]);
}
FutureOr<bool> checkIfEventExist(String admissionId) async {
if (writableCalender.isEmpty) {
await getCalenders();
}
List<Event> events = await getEvents();
if (events.isEmpty) return false;
for (var event in events) {
List<String> title = event.title!.split("#");
if (title.contains(admissionId)) return true;
}
return false;
}
FutureOr<String> getEventIdIfEventExist(String admissionId) async {
if (writableCalender.isEmpty) {
await getCalenders();
}
List<Event> events = await getEvents();
if (events.isEmpty) return "";
for (var event in events) {
List<String> title = event.title!.split("#");
if (title.contains(admissionId)) return event.eventId;
}
return "";
}
FutureOr<bool> checkAndRemove({required String id}) async {
if (writableCalender.isEmpty) {
await getCalenders();
}
List<Event> events = await getEvents();
if (events.isEmpty) return false;
for (var event in events) {
List<String> title = event.title!.split("#");
if (title.contains(id)) {
calender.deleteEvent(eventId: event.eventId);
return true;
}
}
return false;
}
FutureOr<bool> checkAndRemoveMultipleItems({required String id}) async {
if (writableCalender.isEmpty) {
await getCalenders();
}
List<Event> events = await getEvents();
if (events.isEmpty) return false;
bool statusOfOperation = false;
for (var event in events) {
List<String> title = event.title.split("#");
if (title.contains(id)) {
calender.deleteEvent(eventId: event.eventId);
statusOfOperation = true;
}
}
return statusOfOperation;
}
}

@ -17,8 +17,7 @@ class DateUtil {
final endIndex = date.indexOf(end, startIndex + start.length);
return DateTime.fromMillisecondsSinceEpoch(int.parse(
date.substring(startIndex + start.length, endIndex),
))
;
));
}
static DateTime convertStringToDateSaudiTimezone(String date, int projectId) {

@ -0,0 +1,38 @@
import 'dart:math';
import 'package:dart_jsonwebtoken/dart_jsonwebtoken.dart';
import 'package:hmg_patient_app_new/core/utils/zoom_config.dart';
String makeId(int length) {
String result = "";
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
int charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters[Random().nextInt(charactersLength)];
}
return result;
}
String generateJwt(String sessionName, String roleType) {
try {
var iat = DateTime.now();
var exp = DateTime.now().add(Duration(days: 2));
final jwt = JWT(
{
'app_key': configs["ZOOM_SDK_KEY"],
'version': 1,
'user_identity': makeId(10),
'iat': (iat.millisecondsSinceEpoch / 1000).round(),
'exp': (exp.millisecondsSinceEpoch / 1000).round(),
'tpc': sessionName,
'role_type': int.parse(roleType),
'cloud_recording_option': 1,
},
);
var token = jwt.sign(SecretKey(configs["ZOOM_SDK_SECRET"]));
return token;
} catch (e) {
print(e);
return '';
}
}

@ -8,14 +8,22 @@ import 'package:firebase_messaging/firebase_messaging.dart' as fir;
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_callkit_incoming/entities/android_params.dart';
import 'package:flutter_callkit_incoming/entities/call_kit_params.dart';
import 'package:flutter_callkit_incoming/entities/ios_params.dart';
import 'package:flutter_callkit_incoming/entities/notification_params.dart';
import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart';
import 'package:flutter_ios_voip_kit_karmm/call_state_type.dart';
import 'package:flutter_ios_voip_kit_karmm/flutter_ios_voip_kit.dart';
// import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:get_it/get_it.dart';
import 'package:hmg_patient_app_new/core/utils/local_notifications.dart';
import 'package:hmg_patient_app_new/core/utils/utils.dart';
import 'package:hmg_patient_app_new/services/cache_service.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:uuid/uuid.dart';
import '../cache_consts.dart';
@ -36,16 +44,83 @@ Future<dynamic> backgroundMessageHandler(dynamic message) async {
callPage(String sessionID, String token) async {}
_incomingCall(Map<String, dynamic> data) async {
print('the value of the _incomingCall remote message is $data');
// LandingPage.incomingCallData = IncomingCallData.fromJson(data);
// var dataItem = await AppSharedPreferences().getObject('call_data');
// if(dataItem != null ) return; // to stop repeated attempt to invoke the call
// if (LandingPage.isOpenCallPage == false) {
// LandingPage.isOpenCallPage = true;
String roomID = data['session_id'] ?? '';
// GetIt.instance<CacheService>().saveString(key: CacheConst.zoomRoomID, value: roomID);
// GetIt.instance<CacheService>().saveBool(key: CacheConst.isAppOpenedFromCall, value: true);
Utils.saveStringFromPrefs(CacheConst.zoomRoomID, roomID);
Utils.saveBoolFromPrefs(CacheConst.isAppOpenedFromCall, true);
WidgetsFlutterBinding.ensureInitialized();
// var _currentUuid = Uuid().v4();
// await FlutterCallkitIncoming.showCallkitIncoming(callKitParams);
// }
// LandingPage.isOpenCallPage = false;
var _currentUuid = Uuid().v4();
CallKitParams callKitParams = CallKitParams(
id: _currentUuid,
nameCaller: "Dr Al Habib",
appName: 'Dr Al Habib',
avatar: 'https://play-lh.googleusercontent.com/FBNNpxb7m6eM6wtW7MV1Ffp6OXOGLI38q47zcvP29OCYA1yhYH5mZzl5itZi0TgOyZpG',
// handle: LandingPage.incomingCallData.name,
type: 1,
textAccept: 'Accept',
textDecline: 'Decline',
missedCallNotification: NotificationParams(
showNotification: true,
isShowCallback: false,
subtitle: 'Missed call',
callbackText: '',
),
callingNotification: const NotificationParams(
showNotification: false,
isShowCallback: true,
subtitle: 'Calling...',
callbackText: 'Hang Up',
),
duration: 30000,
extra: <String, dynamic>{'userId': '1a2b3c4d'},
headers: <String, dynamic>{'apiKey': 'Abc@123!', 'platform': 'flutter'},
android: const AndroidParams(
isImportant: true,
isShowFullLockedScreen: true,
isCustomNotification: true,
isShowLogo: false,
logoUrl: "https://play-lh.googleusercontent.com/FBNNpxb7m6eM6wtW7MV1Ffp6OXOGLI38q47zcvP29OCYA1yhYH5mZzl5itZi0TgOyZpG",
ringtonePath: 'system_ringtone_default',
backgroundColor: '#ED1C2B',
backgroundUrl: 'https://saudipedia.com/en/saudipediaen/uploads/images/2024/08/02/97358.jpg',
actionColor: '#4CAF50',
textColor: '#000000',
incomingCallNotificationChannelName: "Incoming Call",
missedCallNotificationChannelName: "Missed Call",
isShowCallID: false),
ios: IOSParams(
iconName: 'Meena Health',
handleType: 'generic',
supportsVideo: true,
maximumCallGroups: 2,
maximumCallsPerCallGroup: 1,
audioSessionMode: 'default',
audioSessionActive: true,
audioSessionPreferredSampleRate: 44100.0,
audioSessionPreferredIOBufferDuration: 0.005,
supportsDTMF: true,
supportsHolding: true,
supportsGrouping: false,
supportsUngrouping: false,
ringtonePath: 'system_ringtone_default',
),
);
FlutterCallkitIncoming.unsilenceEvents();
await FlutterCallkitIncoming.showCallkitIncoming(callKitParams);
await Future.delayed(Duration(milliseconds: 500));
}
@ -224,7 +299,9 @@ class PushNotificationHandler {
print('🎈 example: onDidAcceptIncomingCall $uuid - $callerId');
await voIPKit.acceptIncomingCall(callerState: CallStateType.calling);
await voIPKit.callConnected();
await Future.delayed(Duration(seconds: 1));
await Future.delayed(Duration(seconds: 2)).then((val) async {
await voIPKit.endCall();
});
// Navigator.pushNamed(
// locator<NavigationService>().navigatorKey.currentContext!,
@ -232,8 +309,6 @@ class PushNotificationHandler {
// arguments: CallArguments("hoover-dam", "123", "Patient", "40", "1", false),
// );
await voIPKit.endCall();
// Navigator.pushNamed(navigatorKey.currentContext!, VIDEO_CALL_SCREEN,
// arguments: VideoArgus(
// reservationId: int.parse(callerId), token: null, isVideo: true));

@ -29,6 +29,7 @@ import 'package:hmg_patient_app_new/widgets/loading_dialog.dart';
import 'package:lottie/lottie.dart';
import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:url_launcher/url_launcher.dart';
class Utils {
static AppState appState = getIt.get<AppState>();
@ -328,7 +329,7 @@ class Utils {
repeat: false, reverse: false, frameRate: FrameRate(60), width: width.h, height: height.h, fit: BoxFit.fill),
SizedBox(height: 16.h),
(noDataText ?? LocaleKeys.noDataAvailable.tr())
.toText16(weight: FontWeight.w500, color: AppColors.greyTextColor, isCenter: true)
.toText14(weight: FontWeight.w500, color: AppColors.greyTextColor, isCenter: true)
.paddingSymmetrical(64.w, 0.h),
SizedBox(height: 16.h),
callToActionButton
@ -721,10 +722,10 @@ class Utils {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Image.asset(AppAssets.mada, width: 25.h, height: 25.h),
Image.asset(AppAssets.tamara_en, width: 25.h, height: 25.h),
Image.asset(AppAssets.tamaraEng, width: 25.h, height: 25.h),
Image.asset(AppAssets.visa, width: 25.h, height: 25.h),
Image.asset(AppAssets.Mastercard, width: 25.h, height: 25.h),
Image.asset(AppAssets.apple_pay, width: 25.h, height: 25.h),
Image.asset(AppAssets.mastercard, width: 25.h, height: 25.h),
Image.asset(AppAssets.applePay, width: 25.h, height: 25.h),
],
);
}
@ -805,7 +806,11 @@ class Utils {
static Future<bool> checkConnection({bool bypassConnectionCheck = false}) async {
if (bypassConnectionCheck) return true;
List<ConnectivityResult> connectivityResult = await (Connectivity().checkConnectivity());
if (connectivityResult.contains(ConnectivityResult.mobile) || connectivityResult.contains(ConnectivityResult.wifi)) {
if (connectivityResult.contains(ConnectivityResult.mobile) ||
connectivityResult.contains(ConnectivityResult.wifi) ||
connectivityResult.contains(ConnectivityResult.ethernet) ||
connectivityResult.contains(ConnectivityResult.bluetooth) ||
connectivityResult.contains(ConnectivityResult.vpn)) {
return true;
} else {
return false;
@ -865,4 +870,59 @@ class Utils {
}
return isHavePrivilege;
}
static void openWebView({required String url}) {
Uri uri = Uri.parse(url);
launchUrl(uri, mode: LaunchMode.inAppBrowserView);
}
static Color getCardBorderColor(int currentQueueStatus) {
switch (currentQueueStatus) {
case 0:
return AppColors.ratingColorYellow;
case 1:
return AppColors.primaryRedColor;
case 2:
return AppColors.successColor;
}
return AppColors.textColor;
}
static Color getCardButtonColor(int currentQueueStatus) {
switch (currentQueueStatus) {
case 0:
return AppColors.textColor.withValues(alpha: 0.08);
case 1:
return AppColors.primaryRedColor;
case 2:
return AppColors.successColor;
}
return AppColors.primaryRedColor;
}
static Color getCardButtonTextColor(int currentQueueStatus) {
switch (currentQueueStatus) {
case 0:
return Color(0xFFA2A2A2);
case 1:
return AppColors.whiteColor;
case 2:
return AppColors.whiteColor;
}
return AppColors.primaryRedColor;
}
static String getCardButtonText(int currentQueueStatus) {
switch (currentQueueStatus) {
case 0:
return "Please wait! you will be called for vital signs".needTranslation;
case 1:
return "Please visit Room S5 for vital signs".needTranslation;
case 2:
return "Please visit Room S5 to the Doctor".needTranslation;
}
return "";
}
}

@ -101,8 +101,7 @@ class ValidationUtils {
return regex.hasMatch(id);
}
static bool validateUaeRegistration(
{String? name, GenderTypeEnum? gender, NationalityCountries? country, MaritalStatusTypeEnum? maritalStatus, required Function() onOkPress}) {
static bool validateUaeRegistration({String? name, GenderTypeEnum? gender, NationalityCountries? country, MaritalStatusTypeEnum? maritalStatus, required Function() onOkPress}) {
if (name == null || name.isEmpty) {
_dialogService.showExceptionBottomSheet(message: LocaleKeys.pleaseEnterAValidName.tr(), onOkPressed: onOkPress);
return false;
@ -141,8 +140,7 @@ class ValidationUtils {
return true;
}
static bool isValidatedIdAndPhoneWithCountryValidation(
{String? nationalId, String? phoneNumber, required Function() onOkPress, CountryEnum? selectedCountry}) {
static bool isValidatedIdAndPhoneWithCountryValidation({String? nationalId, String? phoneNumber, required Function() onOkPress, CountryEnum? selectedCountry}) {
bool isCorrectID = true;
if (nationalId == null || nationalId.isEmpty) {
_dialogService.showExceptionBottomSheet(message: LocaleKeys.pleaseEnterAnationalID.tr(), onOkPressed: onOkPress);
@ -171,4 +169,10 @@ class ValidationUtils {
}
return isCorrectID;
}
}
static bool isNullOrEmpty(String? value) {
return value == null || value
.trim()
.isEmpty;
}
}

@ -0,0 +1,4 @@
const Map configs = {
'ZOOM_SDK_KEY': 'b9T74nhfTg-ioP9urm970A',
'ZOOM_SDK_SECRET': 'KOzmjBNXQ1f4IPHpnngfL29uZvJMufSy2Fk8',
};

@ -17,7 +17,7 @@ extension NavigationExtensions on BuildContext {
Navigator.of(this).pop();
}
void navigateTo(Widget page) {
void pushNavigateTo(Widget page) {
Navigator.push(this, MaterialPageRoute(builder: (context) => page));
}

@ -263,7 +263,7 @@ extension EmailValidator on String {
style: TextStyle(fontSize: 19.f, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? AppColors.blackColor, letterSpacing: -0.4),
);
Widget toText20({Color? color, FontWeight? weight, bool isBold = false}) => Text(
Widget toText20({Color? color, FontWeight? weight, bool isBold = false, }) => Text(
this,
style: TextStyle(
fontSize: 20.f, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), color: color ?? AppColors.blackColor, letterSpacing: -0.4),
@ -301,14 +301,14 @@ extension EmailValidator on String {
fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)),
);
Widget toText28({Color? color, bool isBold = false, double? height, bool isCenter = false}) => Text(
Widget toText28({Color? color, bool isBold = false, double? height, bool isCenter = false, double? letterSpacing}) => Text(
this,
textAlign: isCenter ? TextAlign.center : null,
style: TextStyle(
height: height ?? 23 / 28,
color: color ?? AppColors.blackColor,
fontSize: 28.f,
letterSpacing: -1,
letterSpacing: letterSpacing ?? -1,
fontWeight: isBold ? FontWeight.bold : FontWeight.normal),
);

@ -101,10 +101,7 @@ class AuthenticationRepoImp implements AuthenticationRepo {
}
@override
Future<Either<Failure, GenericApiModel<dynamic>>> checkPatientAuthentication({
required dynamic checkPatientAuthenticationReq,
String? languageID,
}) async {
Future<Either<Failure, GenericApiModel<dynamic>>> checkPatientAuthentication({required dynamic checkPatientAuthenticationReq, String? languageID}) async {
int isOutKsa = (checkPatientAuthenticationReq.zipCode == '966' || checkPatientAuthenticationReq.zipCode == '+966') ? 0 : 1;
checkPatientAuthenticationReq.patientOutSA = isOutKsa;
try {
@ -149,7 +146,6 @@ class AuthenticationRepoImp implements AuthenticationRepo {
sendActivationCodeReq.isDentalAllowedBackend = false;
final payload = sendActivationCodeReq.toJson();
if (isFormFamilyFile) {
payload.remove("MobileNo");
payload.remove("NationalID");
payload.remove("SMSSignature");
@ -265,6 +261,12 @@ class AuthenticationRepoImp implements AuthenticationRepo {
newRequest.isDentalAllowedBackend = false;
newRequest.forRegisteration = newRequest.isRegister ?? false;
newRequest.isRegister = false;
//silent login case removed token and login token
// if(newRequest.logInTokenID.isEmpty && newRequest.isSilentLogin == true) {
// newRequest.logInTokenID = null;
// newRequest.deviceToken = null;
// }
}
Map<String, dynamic> familyRequest = {};

@ -852,16 +852,13 @@ class AuthenticationViewModel extends ChangeNotifier {
request['isRegister'] = true;
_appState.setAppAuthToken = response['LogInTokenID'];
if (isPatientOutsideSA(request: response)) {
print("=======OUT SA=======");
sendActivationCode(
otpTypeEnum: OTPTypeEnumExtension.fromInt(request["OTP_SendType"]),
nationalIdOrFileNumber: request["PatientIdentificationID"].toString(),
phoneNumber: request["PatientMobileNumber"].toString(),
payload: request,
isForRegister: true,
);
otpTypeEnum: OTPTypeEnumExtension.fromInt(request["OTP_SendType"]),
nationalIdOrFileNumber: request["PatientIdentificationID"].toString(),
phoneNumber: request["PatientMobileNumber"].toString(),
payload: request,
isForRegister: true);
} else {
print("=======IN SA=======");
chekUserNHICData(request: request);
}
}

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

Loading…
Cancel
Save