Skip to content

SYNQ v0.2.0 beta

Compare
Choose a tag to compare
@uniteandconquer uniteandconquer released this 09 May 18:36
· 4 commits to main since this release
b62e03b

SYNQ version 0.2.0 beta for Android is live.

This is a major update including some long awaited features, most important of which is the ability to post chat transactions. It will now be possible for anyone with an Android phone to participate in Qchat and become part of the Qortal network. Another notable addition is the Super Chat feature, which was designed with the purpose of incentivizing active and constructive participation within the chat groups.

What's new?

  • Posting chat messages has been implemented, both for group and private chats. Only available for authenticated accounts with a minimum balance of 4 QORT.
  • Super Chats: you can now post a chat with an added donation amount which can be set from within the Editor. Payments are made directly from your account to the recipient's account. No extra fees are charged beyond the standard transaction fee of 0.01 QORT.
  • Replies and message editing.
  • Auto saving of drafts in the message editor and restoring drafts when returning to the editor.
  • Easily clear your entire message with the click of a button.
  • Header in the Editor informs you of the type of message you are sending.
  • Expandable replied to message in Editor which allows you to quickly view the message you're replying to.
  • Updated UI, UX and styling to account for the newly added features.
  • Multiple improvements to UI, UX and styling.
  • Fixed search by group ID bug in Group Management and added search by owner name.
  • Optional prominent styling for Super Chats and replies to the currently selected account.
  • Improved styling for replied to messages and replied to messages that have expired or from users whom you've blocked.
  • Multiple bug fixes.

The above is a partial and condensed list of the added updates. The detailed release notes can be found below.


Installation notes:

Download the file 'synq.apk' to your Android device, find the downloaded file (most likely in your Downloads folder) and tap on it to install.
If your device has Google Play Protect enabled you will get a warning that this application is from an unknown source, this is because you're not installing the app from the Google Play Store. You will be offered the option to install the app anyway, choose that option if you want to use this app.

Watch the video preview at https://rumble.com/v3phfcm-synq-preview.html

Watch the verification tutorial at https://rumble.com/v3qq2q1-synq-account-verification.html


SYNQ 0.2.0 beta release notes

  • Posting chat messages:

  • The Chat Messages Tab now has a 'Post message' button at the bottom. Tapping this button will open the Editor Screen where the user will be able to write a message and post it to the currently selected node when they're done. The Editor Screen can also be opened by replying to a message, by making a 'Super Chat reply' to a message or by editing one of the user's own messages.

  • Posting messages is only available for authenticated accounts with a balance of 4 QORT or higher. Posting messages with a lower balance requires a difficult memPoW calculation which is not feasible on mobile devices (see the 'Computing memPoW' section). The user will be informed of the fact that their account is not eligible when attempting to open the editor. Future releases of SYNQ might implement a proxy service for newcomers that wish to introduce themselves to the community and request a small donation in order to get started.

  • If the user taps the 'Post message' button when using an un-authenticated account the app will display the Authentication modal where the user can enter their password if their wallet backup file is available or offered the option to load a wallet backup file for the currently selected account after which they can authenticate that account.

  • After tapping the 'Send' button from inside the Editor, the app will check the account's balance and the unit fee one final time in order to ensure that the message can be sent. With these validations passed, the button will display the text 'Computing memPoW nonce...' for the duration of the computation. Once the computation is complete (which usually takes between 0.5 and 3 seconds) the Editor Screen will be closed and the Chat Messages Tab will be displayed again. A snack-bar will show a 'success message' along with the compute duration.

  • While the user is typing in the Editor Screen, the app calculates the size of the message (in bytes) and displays this size in the header. If the message is too long the text will be displayed in red. If the user tries to send a message that is too long they will be prompted to shorten their message or split it into multiple messages.

  • The user can easily clear their entire message by simply tapping the 'Clear message' icon in the middle of the toolbar. When tapped the user is prompted to confirm the action first before clearing the message.

  • The user can exit the Editor Screen by using the 'Back' icon in the toolbar, by using their device's back button or by sending a message.

  • The Editor Screen will always inform the user what type of message they are sending and who they are sending it to and whether it's a reply, a Super Chat a private message or which group they are sending it to.

  • The Editor Screen will save a draft of the user's message locally on the device once every 5 seconds (if the user is typing). If the user leaves the Editor Screen without sending the message and later returns to the Editor Screen they will be informed that a draft was saved and asked if they want to load that draft into the editor.

  • Super Chats:

  • The Super Chat feature has been implemented in order to incentivize active and constructive participation within the chat groups . Super Chats can be initiated by tapping on the 'Super Chat reply' icon when replying to another user's message or by toggling the Super Chat icon from within the Editor Screen when replying to another user's message. If the user is not replying to another message and toggles the Super Chat option the super chat will go to the group owner. When the Editor Screen detects that a Super Chat has been activated, it will check the user's balance and unit fee and present the user with a modal where the user can set the Super Chat amount, cancel the Super Chat or exit the editor. The user can also choose to disable the detailed Super Chat prefix in this modal. When Super Chat is activated the Super Chat icon is highlighted as an extra indication that their message will be a Super Chat. When the user taps the send button, they will be prompted twice to confirm the payment of the Super Chat amount, the prompt includes the recipient's name (or address) and the total cost of the Super Chat (amount + fee).

  • When editing a previously sent Super Chat message, the app will detect that the message was a Super Chat and mark the newly edited message as a Super Chat. This is needed in order to ensure that SYNQ can display Super Chats more prominently than regular chats (if the user has enabled that option).

  • Super Chats always get a 'SYNQ Super Chat:' prefix. Optionally the user can also enable/disable a more detailed prefix, showing which user gifted what amount of QORT to another user.

  • If the user tries to send a non-reply Super Chat to the Qortal General Chat group, they will get informed that this is not possible since that group has no owner.

  • Replying to messages:

  • Users can now reply to messages. This can be done by tapping on the 'Reply' icon which is displayed at the bottom of each message. After tapping the 'Reply' icon the editor will open and display a condensed version of the replied to message at the top of the screen. Tapping on this condensed version will show the full version of the replied to message in full screen. Tapping anywhere on the screen again will lead the user back to the Editor input.

  • When replying to a message, the user will be able to toggle Super Chat on or off by tapping on the 'Super Chat' icon in the toolbar. The Super Chat will be paid out to the user who posted the replied to message.

  • Editing messages:

  • If a message was posted by the user, the user can tap on the 'edit message' icon which will be displayed at the bottom of that message. After tapping on that icon, the Editor Screen will be opened and the message text will be displayed in the Editor input field. The keyboard will not automatically pop up in this case in order to give the user a better overview of the message that they are editing. After tapping the 'Send' button, balance and fee validations will be made and the message will be posted as an edit after the memPoW computation is completed.

  • When editing a message, the toggle Super Chat icon is disabled. Users cannot send an edited message as a Super Chat or toggle the Super Chat option on or off in previously sent Super Chat messages.

Computing memPoW:

  • Created React Native module called 'MemoryPowModule'. This module takes care of the memPoW computation on the Java side of the application. It gets a compute request from the JavaScript side, does the computation then returns the result back to JavaScript where it gets handled depending on the result. If the compute operation was successful, the app will display the memPoW duration and attempt to use the returned data to post a chat transaction to the currently selected node. If the compute fails the user will be informed of such.

  • Experimented with memPoW computation using a difficulty of 18 (for accounts with a balance lower than 4 QORT). The conclusion is that it is not feasible to perform this difficult compute operation on mobile devices seeing as the compute always failed to return a value and was interrupted after a couple of minutes.

Updates to the chat interface:

  • Chat Messages Tab:

  • Each message will now display a row of 'message action' icons at the bottom of the message. Message actions include reply, Super Chat reply and edit (if the message was sent by the currently selected account).

  • Applied an experimental fix for the bug that was causing the chat messages to jump up and down after checking for new messages. This issue is difficult to debug since it only occurs when a sufficient amount of new messages are loaded into the list. I'm relatively confident that the code which causes this has been identified but cannot say with certainty that this bug has been fixed yet.

  • Fixed a bug where some replied to messages were displaying as empty (...) when the replied to message hasn't expired and is still visible in the messages list. These messages will now be displayed.

  • Updated message styling:

    • Added more prominent styling for replies to the currently selected account and Super Chats. Replies to the user will have a white border and a grayish background color, Super Chats will have a golden border, Super Chat replies to the user will have a golden border with a grayish background color. This styling is optional and can be disabled from the General Settings Screen by enabling the 'Uniform chat colors' option.

    • When the app detects multiple chats in succession within a short period of time it will chain those messages into a single message bubble, this was already implemented in a previous release. In order to make Super Chat messages and replies to the user more prominent they will always be displayed as separate messages and will never be part of a message chain.

    • Replied to messages will display a trimmed down text with line breaks removed. This will make them uniformly compact regardless of how many line breaks are in that message. The user can expand the message by tapping on the replied to message after which the entire original message will be displayed.

    • Modified the way line breaks and paragraphs are handled when parsing the message text through the TipTap renderer in order to make the text appear more similar to the way it is displayed in the Qortal UI.

    • Modified some margin and padding settings in the ChatBubble component in order to make the content more compact.

    • Replied to messages that have expired or from accounts that the user has blocked will now be display that information within the replied to message component. Previous versions would just omit the replied to message component.

  • Chat Groups Tab:

  • Modified the 'Private Chat' text for Private chat items. Made the text larger, bolder and in a different color in order to make private chats better distinguishable from group chats.

  • A floating 'New Private Message' button was added to the bottom right of the Chat Groups Tab. When the user taps this button the Find User Screen will be opened and the user can select an account from a list of previously viewed accounts from a drop-down component, search for a registered name or paste an address into the input field. After tapping the 'Go to Private Chat' button the user will be redirected to the Chat Messages Tab. If the user already has an open chat with the selected account that chat will be opened, if that is not the case a new Private Chat will be created and the user will be able to send a message to that account.

  • The Chat Groups Tab will now detect changes to the groups that are displayed in the list when it checks for new messages. Updates to group name, group description and member count will now be reflected without having to leave the screen and return to it once again.

  • When the user opens the Chat Groups Tab with an account that is not a member of the SYNQ chat group they will be offered the option to join that group. The user will be offered three options: join the group, ask again later or don't ask again. This feature is globally implemented and not account specific, meaning it will only be offered once after this release has been installed (unless the user indicates that they want to be reminded later). If the user confirms but doesn't have enough balance to join the group (0.01 QORT) they will be informed of such and asked again later.

  • Fixed a bug where edits made in a private message were being counted as new messages in the unread messages badge.

  • Temporarily modified the way group avatars are loaded. Previous versions were using an avatar pooling mechanism which on rare occasions would cause the avatar of a different group to be displayed for some chat group items. The avatars will now be loaded directly from the selected node. It's difficult to debug this issue since it's hard to reproduce, some changes were made to the development release which will hopefully offer more clarity on what is causing this issue. In the meantime, the production release will be pulling the images directly from the selected node.

Miscellaneous:

  • Replaced viewed accounts drop-down in all screens that use that component with a component from a different third party package. The added benefits are that the new component allows for scrolling the items list when the drop-down is displayed from within a modal, as well as the benefit of hiding the items list when tapping anywhere outside of the drop-down component, both of which were not supported by the old drop-down component.

  • Group Management:

    • Fixed the 'search by id' bug which was caused by incorrect variable typing when filtering the groups list. Users can now search for a group by (partial) ID.
    • Modified the Group Item to also show group ID when the item is not expanded, this was done in order to help the user search for a group by ID.
    • Added 'search by owner name'. If the owner has not registered a name the user can 'search by owner address'.
  • Created a separate Fetch Names Screen and added 'leave screen detection' which informs the user that they have to wait for the name caching process to finish before leaving the screen. This ensures that the names list will be available and up to date after that one time caching operation has finished.

  • Fixed the issue where it was possible to create an account and never get prompted to pull all registered names from the blockchain and store them in a local cache. Skipping this part drastically reduces the UX since all accounts will be displayed as an address string instead of as a name. The three screens where the user is prompted to cache the names list are the Add Account Screen, Create Account Screen and Find User Screen, this ensures that the user will always be prompted to cache the names list.