* directory: identify registration owner by member id to fix incorrect de-listing
The leave/removed/role-changed handlers identified the registration owner by
contact id. A non-owner member can be associated with the owner's contact (via
the contact/member merge), so its departure incorrectly de-listed the group.
Compare by group member id (owner_member_id) instead, falling back to contact
id for registrations recorded before owner_member_id existed.
* fix test, always compare contact ID in owner check
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* feat(directory): harden group member admission
Default new registered groups to requiring a captcha and advise owners
of recommended public-group settings at registration submission.
Add CLI flags to override per-group admission policy directory-wide:
- --prohibited-to-observer: delete a member's message and demote them to
observer when they post content prohibited by the group's settings
- --always-captcha: require a captcha from joining members in all groups
- --knocking: require admin review before admitting members in all groups
* fix(directory): reword recommended settings notice
Address review: replace the enumerated settings list with a concise
recommendation and reference the group's filter command by id.
---------
Co-authored-by: shum <github.shum@liber.li>
* directory: support public channels and relay-based groups (plan)
* types
* amend types
* directory types, resolve known link
* implementation, test fails
* fix test
* fix test
* more test
* minimal test
* more test
* debug test
* clean up
* remove debug logs
* refactor
* use group/channel terms correctly
* remove unsupported commands
* manage profile update
* owner left the channel
* more tests, correct response to sent link
* re-registration
* /help and /link commands
* correct listing for channels
* fix test
* fix bot api
* refactor
* do not include link data in GLPKnown
* refactor
* diff
* undo refactor
* simplify
* remove harness test
* remove flip
* add v6.5 app requirement for channels
* add website support
* update bot api types
* correct member count, fix test
* members -> subscribers
* add link to channel description
* fix css
* move version note
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
* directory bot: use short links, command /link to upgrade group link
* test
* enable all tests
* update comparison for scenario when only link changed
* use DB IDs when listing groups registered by admins
* 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
* core: split response to two types, to improve iOS parsing memory usage
* ios: split core events to separate types
* comment
* limit more events to CLI
* fix parser
* simplemq
* allow admins deleting groups from directory and registering groups with same name as deleted one; /help commands
* support profile changes by other owners, with/without connection to directory
* profile check will succeed when group link encoding or versions change, but the link queues remain the same
* core: member acceptance
* migration
* move hook
* core: support sending direct messages to members (#5680)
* fix compilation, todos
* fix test
* predicates
* comment
* extend hook
* wip
* wip
* wip
* wip
* fix test
* mute output
* schema
* better query
* plans
* fix test
* directory
* captcha
* captcha works
* remove column, add UI types and group status icon
* fix test
* query plans
* exclude messages of pending members from history
* commands for filter settings
* core: separately delete pending approval members; other apis validation (#5699)
* accepted status
* send captcha messages as replies
* fix blocked words
* simpler filter info
* info about /filter and /role after group registration
* update query plans
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* update message text when forwarding and quoting to reflect changes in mentioned member names
* fix, test
* forward mentions to the same chat, refactor
* comment
* tests
* test markdown conversion to text
* simplify
* unused
* comments
* core: member mentions, types and rfc
* update
* update rfc
* save/get mentions (WIP)
* markdown
* store received mentions and userMention flag
* sent mentions
* update message with mentions
* db queries
* CLI mentions, test passes
* use maps for mentions
* tests
* comment
* save mentions on sent messages
* postresql schema
* refactor
* M.empty
* include both displayName and localAlias into MentionedMemberInfo
* fix saving sent mentions
* include mentions in previews
* update plans
* directory: new commands
* better search
* search test
* return group links in simplex.chat domain, allow both simplex:/ and simplex.chat links in group description
* directory: list groups with group member counts
* list groups, test
* superuser can list all groups
* rename command
* remove type synonym
* add member count to search results
* fix test
* SimpleX Directory Service
* more events
* update events
* fix
* Apply suggestions from code review
metavar
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* metavar 2
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* process events
* remove command serialization
* update
* update
* process group profile update
* basic group registration flow
* search works
* better messages
* improve messages
* test broadcast bot
* test for directory service
* better processing of group profile change, test
* refactor
* de-list group when owner or service is removed from the group, tests
* fix: removing any member or any member leaving should not delist the group
* refactor
* more tests, fixes
* disable bot tests in CI
* remove comment
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>