upsertChatItem/removeChatItem gated their main-list preview update on groupChatScope()==null, so
once a pending invitee's support message was the preview, editing it left stale text and
deleting/moderating it left a phantom. Add the same memberPending exception addChatItem has (both
already match the preview item by id). On iOS, restrict the 'update preview for an item not in the
open scope' clause to main scope so a support item's status updates don't churn the preview.
A pending invitee's member-support no-content group events (SGEUserPendingReview on the
PendingApproval->PendingReview transition, member-connected/E2EE/feature items) are delivered
as new chat items in member-support scope. The pending preview took the newest item, so such
an event re-covered the first message and rendered as the static "reviewed by admins" text.
Prefer a content message: a no-content item no longer displaces an already-shown message.
Mirror the android/desktop fix: a pending invitee's received support message was
dropped from the main chat list preview by the group itemTs comparison (received
broker clock vs locally-stamped group-event clock - not comparable). Bypass the
comparison when memberPending so the received support item surfaces in the preview.
* core: option to show group as sender of chat item (for the initial items, e.g. welcome message)
* add chat item to contact request chats
* return AChat for prepared chats and contact requests
* update iOS api types, show prepared contact as blue, show preview info when content message is not available (previously was showing feature item)
* ios: remove ContactType
* ios: show group as sender, fix avatar not showing when member message sequence starts with merged items
* ios: update compose UI for all connection scenarios
* address settings
* ios: address settings UI
* fix tests
* fix tests 2
* ios: fix minor issues
* ios: fix toolbar in member support chat
* refactor
* refactor nav buttons
* ios: unread reports, members requiring attention
* top bar destop (special case for 1 support chat)
* put Navigation view higher in hierarchy
* use nav title for knocking
* refactor loading secondary chat, overlay fake toolbar for knocking chats
* fix member reports toolbar
* unread counter for member's support chat
* core: pass event and response error without dedicated constructor
* ios: WIP
* android, desktop: update UI for new API
* ios: fix parser
* fix showing invalid chats
* fix mobile api tests
* ios: split ChatResponse to 3 enums, decode API results on the same thread
* tweak types
* remove throws
* rename
* ios: loading progress moved to chat list
* place
* changes
* large spinner, smaller timeout
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: archive multiple reports
* ios
* change
* changes
* fix changing counter
* fix changing counter2
* fix changing counter3
* unused
* fix android
* android notification
* simplify
* ios notification
* orange
* orange
* core: update api
* buttons
* ios api
* android api
* fix 4 buttons
* buttons and check for member active status
* android colors and member active
* show delete group button when not in the group anymore
* title
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* api types
* display for mentions and replys
* picking of mentions
* notifications (wip)
* auto tagging
* show selected mention
* Divider and list bg
* stop keyboard dismiss on scroll from ios 16
* change notification mode in all views
* icon for mentions notification mode
* make unread states work in memory and chat preview
* preview fixes
* fix unread status when mark read manually
* update library
* fixed padding
* fix layout
* use memberName
* remove ChatNtfs, show mentions in context items and in drafts, make mentions a map in ComposeState
* rework mentions (WIP)
* better
* show mention name containing @ in quotes
* editing mentions
* editing
* mentionColor
* opacity
* refactor mention counter
* fix unread layout
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>