Skip to content

Commit

Permalink
Feature/media chat UI (#59)
Browse files Browse the repository at this point in the history
* feat(media-chat): add voice message recording ui.

* feat(media-chat): enhance audio quality and some changes to ui.

* feat(media-chat): add audio,image,video chat ui.

* fix(media-chat): recording bug.

* Media-UI (#53)

* Fix crop feature (#47)

* fix crop bug in release version

* BUG(profile-picture): fix rectangle ratio

* fix(profile-picture): resolve comment on navigating between pages

* feat(chat): Add new chat creation (#49)

* style(home): Update the chat tiles to match Telegram

* feat(chat): implement new chat creation

* FEATURE: Messaging infrastructure (#50)

* feat(msg): implement the chat local repository

* feat: update the chat local repository to store the other users

* feat: add a message type enum

* feat: add socket io package

* feat: create a socket service class

* feat: create a socket event handler with a sending loop

* feat: create a chat remote repository

* feat: create a basic class for the events queue

* feat: basic structure of the chats view model

* feat(msg): create the chatting controller (manager)

* config: auto generated files

* feat: add chat id to the chat model

* feat: add emit with achknowledgement to the socket service

* feat: implement Chats view model method

* feat: implement msg sending logic

* feat(messages): add the 'delete' and 'edit' events

* fix: remove the extra chatID

* fix(test): fix formatTimestamp utils test (#51)

* fix(test): fix formatTimestamp utils test

* fix(utils): fix formatTimestamp function

* fix(test): fix typo in utils test

* FEATURE: Messaging infrastructure (#52)

* feat: complete the strucute of messaging

* feat: finish messageing infrastructut

---------

Co-authored-by: -NoName <108888519+Bishoywadea@users.noreply.github.com>
Co-authored-by: Moamen Hefny <111001850+Mo2Hefny@users.noreply.github.com>
Co-authored-by: Ahmed Aladdin Mohamed <118504851+Ahmed-Aladdiin@users.noreply.github.com>

* feat(media-chat): add message content classes.

* feat(media-chat): update mock service.

* feat(chat): fetch chats from server.

* fix(chat): merge errors.

* fix(chat): merge errors.

* fix(chat): integrate chat updates with system

* fix(chat): integrate chat updates with chat creation

---------

Co-authored-by: -NoName <108888519+Bishoywadea@users.noreply.github.com>
Co-authored-by: Moamen Hefny <111001850+Mo2Hefny@users.noreply.github.com>
Co-authored-by: Ahmed Aladdin Mohamed <118504851+Ahmed-Aladdiin@users.noreply.github.com>
Co-authored-by: Mo2Hefny <moamensaied1@gmail.com>
  • Loading branch information
5 people authored Dec 1, 2024
1 parent 1b535db commit 6957c58
Show file tree
Hide file tree
Showing 58 changed files with 2,909 additions and 706 deletions.
23 changes: 12 additions & 11 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>

<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https" />
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="https"/>
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="http"/>
</intent>
</queries>

Expand Down Expand Up @@ -46,9 +47,9 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data
android:name="flutter_deeplinking_enabled"
android:value="true"
/>
android:name="flutter_deeplinking_enabled"
android:value="true"
/>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
Expand All @@ -59,9 +60,9 @@
</intent-filter>
</activity>
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
Expand Down
Binary file added assets/audio/test8.mp3
Binary file not shown.
1 change: 1 addition & 0 deletions assets/json/attach_file.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"v":"5.5.9","fr":60,"ip":0,"op":60,"w":144,"h":144,"nm":"Document","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Color_Corner","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[109,29,0],"ix":2},"a":{"a":0,"k":[16.5,-16.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":20,"s":[130,130,100]},{"t":30,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.09,-0.1],[0,0],[0.19,-0.2],[0.14,0],[0,0],[0,0.56],[0,0],[-0.28,0]],"o":[[0,0],[0.19,0.19],[-0.1,0.09],[0,0],[-0.55,0],[0,0],[0,-0.28],[0.13,0]],"v":[[-1.546,-2.246],[2.254,1.544],[2.254,2.254],[1.894,2.394],[-1.396,2.394],[-2.396,1.394],[-2.396,-1.896],[-1.896,-2.396]],"c":true},"ix":2},"nm":"Сontour","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.203922003508,0.725489974022,0.945097982883,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"Color_Corner","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"rd","nm":"Corners","r":{"a":0,"k":1,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false}],"ip":0,"op":61,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"White_List","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72,72,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-1.66,0],[0,0],[0,0],[0,0],[1.66,0],[0,0],[0,1.66],[0,0]],"o":[[0,0],[0,0],[0,0],[0,1.66],[0,0],[-1.66,0],[0,0],[0,-1.66]],"v":[[-5,-9],[2,-9],[8,-3],[8,6],[5,9],[-5,9],[-8,6],[-8,-6]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[{"i":[[-1.66,0],[0,0],[0,-1.66],[0,0],[1.66,0],[0,0],[0,1.66],[0,0]],"o":[[0,0],[1.66,0],[0,0],[0,1.66],[0,0],[-1.66,0],[0,0],[0,-1.66]],"v":[[-5,-9],[5,-9],[8,-6],[8,6],[5,9],[-5,9],[-8,6],[-8,-6]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":20,"s":[{"i":[[-1.66,0],[0,0],[0,0],[0,0],[1.66,0],[0,0],[0,1.66],[0,0]],"o":[[0,0],[0,0],[0,0],[0,1.66],[0,0],[-1.66,0],[0,0],[0,-1.66]],"v":[[-5,-9],[0,-9],[8,-1],[8,6],[5,9],[-5,9],[-8,6],[-8,-6]],"c":true}]},{"t":30,"s":[{"i":[[-1.66,0],[0,0],[0,0],[0,0],[1.66,0],[0,0],[0,1.66],[0,0]],"o":[[0,0],[0,0],[0,0],[0,1.66],[0,0],[-1.66,0],[0,0],[0,-1.66]],"v":[[-5,-9],[2,-9],[8,-3],[8,6],[5,9],[-5,9],[-8,6],[-8,-6]],"c":true}]}],"ix":2},"nm":"Сontour","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"White_List","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":61,"st":0,"bm":0}],"markers":[]}
1 change: 1 addition & 0 deletions assets/json/attach_gallery.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"v":"5.5.9","fr":60,"ip":0,"op":60,"w":144,"h":144,"nm":"Photo","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Color_Mount","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.134,16.274,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0.27],[-0.06,0.08],[0,0],[-0.23,-0.16],[-0.03,-0.05],[0,0],[-0.14,0.1],[-0.02,0.03],[0,0],[-0.23,-0.15],[-0.04,-0.06],[0,0],[0.24,-0.15],[0.1,0]],"o":[[-0.28,0],[0,-0.11],[0,0],[0.16,-0.23],[0.04,0.03],[0,0],[0.09,0.14],[0.03,-0.02],[0,0],[0.15,-0.23],[0.06,0.04],[0,0],[0.15,0.23],[-0.08,0.05],[0,0]],"v":[[-6.062,3.292],[-6.562,2.792],[-6.472,2.502],[-3.932,-1.128],[-3.232,-1.248],[-3.112,-1.128],[-1.322,1.432],[-0.902,1.502],[-0.822,1.422],[2.058,-3.058],[2.748,-3.208],[2.898,-3.058],[6.478,2.522],[6.328,3.212],[6.058,3.292]],"c":true},"ix":2},"nm":"Сontour","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.27058801055,0.615685999393,0.96078401804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"Color_Mount","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"White_Photo","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":10,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[5]},{"t":30,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[72,72,0],"to":[-3.333,0,0],"ti":[-1,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":1,"y":0},"t":10,"s":[52,72,0],"to":[1,0,0],"ti":[-3.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":20,"s":[78,72,0],"to":[3.333,0,0],"ti":[1,0,0]},{"t":30,"s":[72,72,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":10,"s":[78,78,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":20,"s":[102,102,100]},{"t":30,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.66,0],[0,0],[0,-1.66],[0,0],[1.66,0],[0,0],[0,1.66],[0,0]],"o":[[0,0],[1.66,0],[0,0],[0,1.66],[0,0],[-1.66,0],[0,0],[0,-1.66]],"v":[[-6,-9],[6,-9],[9,-6],[9,6],[6,9],[-6,9],[-9,6],[-9,-6]],"c":true},"ix":2},"nm":"Сontour","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"White_Photo","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Color_PhotoShadow","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":10,"s":[-10]},{"t":20,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[72,72,0],"to":[-3.333,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":1,"y":0},"t":10,"s":[52,72,0],"to":[0,0,0],"ti":[-3.333,0,0]},{"t":20,"s":[72,72,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.66,0],[0,0],[0,-1.66],[0,0],[1.66,0],[0,0],[0,1.66],[0,0]],"o":[[0,0],[1.66,0],[0,0],[0,1.66],[0,0],[-1.66,0],[0,0],[0,-1.66]],"v":[[-6,-9],[6,-9],[9,-6],[9,6],[6,9],[-6,9],[-9,6],[-9,-6]],"c":true},"ix":2},"nm":"Сontour","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.270588248968,0.615686297417,0.960784375668,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"Color_PhotoShadow","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"White_BackPhoto","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":10,"s":[10]},{"t":20,"s":[5]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[72,72,0],"to":[3.333,0,0],"ti":[-1,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":1,"y":0},"t":10,"s":[92,72,0],"to":[1,0,0],"ti":[2.333,0,0]},{"t":20,"s":[78,72,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":10,"s":[78,78,100]},{"t":20,"s":[102,102,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.66,0],[0,0],[0,-1.66],[0,0],[1.66,0],[0,0],[0,1.66],[0,0]],"o":[[0,0],[1.66,0],[0,0],[0,1.66],[0,0],[-1.66,0],[0,0],[0,-1.66]],"v":[[-6,-9],[6,-9],[9,-6],[9,6],[6,9],[-6,9],[-9,6],[-9,-6]],"c":true},"ix":2},"nm":"Сontour","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"White_BackPhoto","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0}],"markers":[]}
Loading

0 comments on commit 6957c58

Please # to comment.