core: allow to manually accept member contact requests (#6129)

* core: allow to manually accept member contact requests

* response

* comment

* comment

* add fields

* fix

* field in request

* compiles

* fix tests

* test

* plans

* fix mobile tests

* fix doc tests

* renames

* group name in event

* fix renames

* tests

* plans

* rename selector

* ios wip

* fix

* ios wip

* move

* fix backend bug, ui

* reject dialogue

* update plans

* kotlin

* delete swipe

* should accept text

* rename

* postgres migration

* ios: pass chat as binding

* rename module

* fix queries

* schema

* update plans, api docs

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
This commit is contained in:
spaced4ndy
2025-08-01 09:18:29 +00:00
committed by GitHub
parent 81b61f2473
commit f42a6751b1
48 changed files with 1088 additions and 152 deletions
@@ -13,6 +13,7 @@ import Simplex.Chat.Store.Postgres.Migrations.M20250702_contact_requests_remove_
import Simplex.Chat.Store.Postgres.Migrations.M20250704_groups_conn_link_prepared_connection
import Simplex.Chat.Store.Postgres.Migrations.M20250709_profile_short_descr
import Simplex.Chat.Store.Postgres.Migrations.M20250721_indexes
import Simplex.Chat.Store.Postgres.Migrations.M20250729_member_contact_requests
import Simplex.Messaging.Agent.Store.Shared (Migration (..))
schemaMigrations :: [(String, Text, Maybe Text)]
@@ -25,7 +26,8 @@ schemaMigrations =
("20250702_contact_requests_remove_cascade_delete", m20250702_contact_requests_remove_cascade_delete, Just down_m20250702_contact_requests_remove_cascade_delete),
("20250704_groups_conn_link_prepared_connection", m20250704_groups_conn_link_prepared_connection, Just down_m20250704_groups_conn_link_prepared_connection),
("20250709_profile_short_descr", m20250709_profile_short_descr, Just down_m20250709_profile_short_descr),
("20250721_indexes", m20250721_indexes, Just down_m20250721_indexes)
("20250721_indexes", m20250721_indexes, Just down_m20250721_indexes),
("20250729_member_contact_requests", m20250729_member_contact_requests, Just down_m20250729_member_contact_requests)
]
-- | The list of migrations in ascending order by date
@@ -0,0 +1,41 @@
{-# LANGUAGE QuasiQuotes #-}
module Simplex.Chat.Store.Postgres.Migrations.M20250729_member_contact_requests where
import Data.Text (Text)
import qualified Data.Text as T
import Text.RawString.QQ (r)
m20250729_member_contact_requests :: Text
m20250729_member_contact_requests =
T.pack
[r|
ALTER TABLE contacts ADD COLUMN grp_direct_inv_link BYTEA;
ALTER TABLE contacts ADD COLUMN grp_direct_inv_from_group_id BIGINT REFERENCES groups(group_id) ON DELETE SET NULL;
ALTER TABLE contacts ADD COLUMN grp_direct_inv_from_group_member_id BIGINT REFERENCES group_members(group_member_id) ON DELETE SET NULL;
ALTER TABLE contacts ADD COLUMN grp_direct_inv_from_member_conn_id BIGINT REFERENCES connections(connection_id) ON DELETE SET NULL;
ALTER TABLE contacts ADD COLUMN grp_direct_inv_started_connection SMALLINT NOT NULL DEFAULT 0;
CREATE INDEX idx_contacts_grp_direct_inv_from_group_id ON contacts(grp_direct_inv_from_group_id);
CREATE INDEX idx_contacts_grp_direct_inv_from_group_member_id ON contacts(grp_direct_inv_from_group_member_id);
CREATE INDEX idx_contacts_grp_direct_inv_from_member_conn_id ON contacts(grp_direct_inv_from_member_conn_id);
ALTER TABLE users ADD COLUMN auto_accept_member_contacts SMALLINT NOT NULL DEFAULT 0;
|]
down_m20250729_member_contact_requests :: Text
down_m20250729_member_contact_requests =
T.pack
[r|
ALTER TABLE users DROP COLUMN auto_accept_member_contacts;
DROP INDEX idx_contacts_grp_direct_inv_from_group_id;
DROP INDEX idx_contacts_grp_direct_inv_from_group_member_id;
DROP INDEX idx_contacts_grp_direct_inv_from_member_conn_id;
ALTER TABLE contacts DROP COLUMN grp_direct_inv_link;
ALTER TABLE contacts DROP COLUMN grp_direct_inv_from_group_id;
ALTER TABLE contacts DROP COLUMN grp_direct_inv_from_group_member_id;
ALTER TABLE contacts DROP COLUMN grp_direct_inv_from_member_conn_id;
ALTER TABLE contacts DROP COLUMN grp_direct_inv_started_connection;
|]
@@ -409,7 +409,12 @@ CREATE TABLE test_chat_schema.contacts (
conn_short_link_to_connect bytea,
welcome_shared_msg_id bytea,
request_shared_msg_id bytea,
contact_request_id bigint
contact_request_id bigint,
grp_direct_inv_link bytea,
grp_direct_inv_from_group_id bigint,
grp_direct_inv_from_group_member_id bigint,
grp_direct_inv_from_member_conn_id bigint,
grp_direct_inv_started_connection smallint DEFAULT 0 NOT NULL
);
@@ -1126,7 +1131,8 @@ CREATE TABLE test_chat_schema.users (
send_rcpts_small_groups smallint DEFAULT 0 NOT NULL,
user_member_profile_updated_at timestamp with time zone,
ui_themes text,
active_order bigint DEFAULT 0 NOT NULL
active_order bigint DEFAULT 0 NOT NULL,
auto_accept_member_contacts smallint DEFAULT 0 NOT NULL
);
@@ -1808,6 +1814,18 @@ CREATE INDEX idx_contacts_contact_request_id ON test_chat_schema.contacts USING
CREATE INDEX idx_contacts_grp_direct_inv_from_group_id ON test_chat_schema.contacts USING btree (grp_direct_inv_from_group_id);
CREATE INDEX idx_contacts_grp_direct_inv_from_group_member_id ON test_chat_schema.contacts USING btree (grp_direct_inv_from_group_member_id);
CREATE INDEX idx_contacts_grp_direct_inv_from_member_conn_id ON test_chat_schema.contacts USING btree (grp_direct_inv_from_member_conn_id);
CREATE INDEX idx_contacts_via_group ON test_chat_schema.contacts USING btree (via_group);
@@ -2344,6 +2362,21 @@ ALTER TABLE ONLY test_chat_schema.contacts
ALTER TABLE ONLY test_chat_schema.contacts
ADD CONSTRAINT contacts_grp_direct_inv_from_group_id_fkey FOREIGN KEY (grp_direct_inv_from_group_id) REFERENCES test_chat_schema.groups(group_id) ON DELETE SET NULL;
ALTER TABLE ONLY test_chat_schema.contacts
ADD CONSTRAINT contacts_grp_direct_inv_from_group_member_id_fkey FOREIGN KEY (grp_direct_inv_from_group_member_id) REFERENCES test_chat_schema.group_members(group_member_id) ON DELETE SET NULL;
ALTER TABLE ONLY test_chat_schema.contacts
ADD CONSTRAINT contacts_grp_direct_inv_from_member_conn_id_fkey FOREIGN KEY (grp_direct_inv_from_member_conn_id) REFERENCES test_chat_schema.connections(connection_id) ON DELETE SET NULL;
ALTER TABLE ONLY test_chat_schema.contacts
ADD CONSTRAINT contacts_user_id_fkey FOREIGN KEY (user_id) REFERENCES test_chat_schema.users(user_id) ON DELETE CASCADE;