The Google fonts package was causing inconsistent weight of fonts and
would have to be re-declared every time the style needed to be used.
Now the Inter font files are bundled in and don't require an http
request to fetch them.
- Added video overlay with controls for a cleaner look
- Added app bar when video is disabled
- Removed bottom back button in favor of a back button on the overlay
- Removed hamburger/drawer menu
- Moved search to bottom navigation bar
- Moved settings and profile to app bar
- Moved channel list from screen to widget folder
- Created search screen for viewing results
- Switched from Cupertino to Material routes due to rebuild issues
On iOS, certain chat messages would have a trailing invalid/unknown
"emoji" (question mark inside a square). This is caused by certain
Twitch IRC clients appending the INVALID Unicode character (U+E5000) to
circumvent restrictions on sending identical messages in quick
succession.
To resolve this, I added a check on the last word of the message. If
the character exists, the word will be remove. Since the word will only
contain a space and the character, it can be safely removed.
This commit also contains an additional "optimization" through
StringBuffers. By using the buffer there will be less TextSpan widgets
which theoretically should improve performance.
Removed the redundant request for Twitch global and channel emotes in getAssets().
Since these emotes will be processed anyways when generating the span, there's no point in wasting bandwidth to fetch and store them.
- Added enum for IRC tag command for slightly better comparisons
- Moved span portion of renderMessage to its own function in irc_api.dart
- Moved message remove and end scroll to seperate function action
- Fixed emote tags applying to all users
- Moved parse method to factory constructor in IRCMessage for better readability
- Renamed irc_message.dart to irc.dart to include other irc-related models
- Added ROOMSTATE model
- Moved addMessage functionality to chat store
- Added userState and globalUserState fields to keep track of user data while chatting
- Adjusted CAP REQ commands to receive GLOBALUSERSTATE
- Adjusted return and break statements in switch and general cleanup
- Added sendMessage and dispose method
The GLOBALUSERSTATE and USERSTATE are not related to any message list modifications. Instead, they can be handled with one line in the switch statement in chat store.
The USERSTATE method was renamed to addMessage for better readability.
The tiny delay betwen establishing the IRC connection and creating the StreamBuilder resulted in the initial IRC messages not being received (i.e., JOIN, USERSTATE, ROOMSTATE and more).