mirror of
https://github.com/hmalik144/MessengerApp.git
synced 2025-12-10 03:05:28 +00:00
Update README.md
This commit is contained in:
21
README.md
21
README.md
@@ -14,9 +14,6 @@ The task was to create an android messaging application over a WebSocket. The ap
|
|||||||
|
|
||||||
## Approach
|
## Approach
|
||||||
|
|
||||||
### MVVM architecture & Solid coding
|
|
||||||
This application followed the MVVM architecture with the use of live data and observers. SOLID coding principle were followed to ensure clean code.
|
|
||||||
|
|
||||||
### WebSocket with coroutines
|
### WebSocket with coroutines
|
||||||
This uses the android kotlin native components, Coroutines, for concurrency. I used the tinder Scarlet WebSocket library, Retrofit inspired WebSocket client, to simply handle the WebSocket operations.
|
This uses the android kotlin native components, Coroutines, for concurrency. I used the tinder Scarlet WebSocket library, Retrofit inspired WebSocket client, to simply handle the WebSocket operations.
|
||||||
*NB. Nearly all the resources online for tinder scarlet point towards using RxJava - this is quite unique whilst still being "out of the box"*
|
*NB. Nearly all the resources online for tinder scarlet point towards using RxJava - this is quite unique whilst still being "out of the box"*
|
||||||
@@ -36,28 +33,20 @@ When the WebSocket is connected to the last message stored is read for its time
|
|||||||
### Kodein dependency injection
|
### Kodein dependency injection
|
||||||
Simple kotlin dependency injection to seamlessly create module is application class and retrieve them via "KodeinAware" implementation.
|
Simple kotlin dependency injection to seamlessly create module is application class and retrieve them via "KodeinAware" implementation.
|
||||||
|
|
||||||
### *Bonus* Network interception
|
### Network interception
|
||||||
Although this project is local but if the user is offline then messages will not be sent. With the tinder scarlet library, I used a network interceptor.
|
If the user is offline then messages will not be sent. With the tinder scarlet library, I used a network interceptor.
|
||||||
|
|
||||||
## Limitation
|
## Limitation
|
||||||
|
|
||||||
### Sent/Not Sent messages?
|
### Sent/Not Sent messages?
|
||||||
It’s hard to tell if the message has been successfully sent over the WebSocket.
|
It’s hard to tell if the message has been successfully sent over the WebSocket. (Work in progress)
|
||||||
|
|
||||||
## If I had more time
|
### Animation presence minimal
|
||||||
|
Not much consideration was given to animations in this project (Work in progress). Recycler views have an animation class that can be
|
||||||
### Animation presence
|
|
||||||
Not much consideration was given to animations in this project as the requested animation was not easy to come by. If I had more time, I would have implemented animations for chat message entry and population of messages recycler view.
|
|
||||||
|
|
||||||
### Sent/Not Sent messages?
|
|
||||||
Messages to have a Boolean value of "isSent" which changes when the message is received via the WebSocket.
|
|
||||||
|
|
||||||
### Online Status
|
### Online Status
|
||||||
Would have a live data observer working with WebSocket connection to determine connection.
|
Would have a live data observer working with WebSocket connection to determine connection.
|
||||||
|
|
||||||
### Unit tests & UI tests
|
|
||||||
As mentioned above the scarlet/coroutines method was quite original hence it would have taken some time to create mocks/test cases.
|
|
||||||
|
|
||||||
## Architectural Pattern
|
## Architectural Pattern
|
||||||
|
|
||||||
MVVM - Model View ViewModel
|
MVVM - Model View ViewModel
|
||||||
|
|||||||
Reference in New Issue
Block a user