feat(relations): spouse 40/41 и новый UX вкладки Связи (проверено)

This commit is contained in:
AidarKC
2026-04-26 18:24:30 +03:00
parent 3e10407afd
commit 1fec6c7b54
12 changed files with 292 additions and 131 deletions
@@ -54,6 +54,9 @@ public final class DatabaseInitializer {
public static final short CONNECTION_FOLLOW = 30;
public static final short CONNECTION_UNFOLLOW = 31;
public static final short CONNECTION_SPOUSE = 40;
public static final short CONNECTION_UNSPOUSE = 41;
public static final short CONNECTION_PARENT = 50;
public static final short CONNECTION_UNPARENT = 51;
@@ -194,6 +194,7 @@ public final class DatabaseTriggersInstaller {
int FRIEND = (int) DatabaseInitializer.CONNECTION_FRIEND;
int CONTACT = (int) DatabaseInitializer.CONNECTION_CONTACT;
int FOLLOW = (int) DatabaseInitializer.CONNECTION_FOLLOW;
int SPOUSE = (int) DatabaseInitializer.CONNECTION_SPOUSE;
int PARENT = (int) DatabaseInitializer.CONNECTION_PARENT;
int CHILD = (int) DatabaseInitializer.CONNECTION_CHILD;
int SIBLING = (int) DatabaseInitializer.CONNECTION_SIBLING;
@@ -201,6 +202,7 @@ public final class DatabaseTriggersInstaller {
int UNFRIEND = (int) DatabaseInitializer.CONNECTION_UNFRIEND;
int UNCONTACT = (int) DatabaseInitializer.CONNECTION_UNCONTACT;
int UNFOLLOW = (int) DatabaseInitializer.CONNECTION_UNFOLLOW;
int UNSPOUSE = (int) DatabaseInitializer.CONNECTION_UNSPOUSE;
int UNPARENT = (int) DatabaseInitializer.CONNECTION_UNPARENT;
int UNCHILD = (int) DatabaseInitializer.CONNECTION_UNCHILD;
int UNSIBLING = (int) DatabaseInitializer.CONNECTION_UNSIBLING;
@@ -210,7 +212,7 @@ public final class DatabaseTriggersInstaller {
AFTER INSERT ON blocks
WHEN NEW.msg_type = 3
BEGIN
-- FRIEND/CONTACT/FOLLOW/PARENT/CHILD/SIBLING:
-- FRIEND/CONTACT/FOLLOW/SPOUSE/PARENT/CHILD/SIBLING:
-- 1) если записи нет — создаём
INSERT OR IGNORE INTO connections_state (
login, rel_type, to_login, to_bch_name, to_block_number, to_block_hash
@@ -231,7 +233,7 @@ public final class DatabaseTriggersInstaller {
NEW.to_bch_name,
NEW.to_block_number,
NEW.to_block_hash
WHERE NEW.msg_sub_type IN (%d, %d, %d, %d, %d, %d)
WHERE NEW.msg_sub_type IN (%d, %d, %d, %d, %d, %d, %d)
AND COALESCE(
NEW.to_login,
CASE
@@ -262,7 +264,7 @@ public final class DatabaseTriggersInstaller {
ELSE NULL
END
)
AND NEW.msg_sub_type IN (%d, %d, %d, %d, %d)
AND NEW.msg_sub_type IN (%d, %d, %d, %d, %d, %d, %d)
AND COALESCE(
NEW.to_login,
CASE
@@ -275,7 +277,7 @@ public final class DatabaseTriggersInstaller {
) IS NOT NULL
AND NEW.to_bch_name IS NOT NULL;
-- UNFRIEND/UNCONTACT/UNFOLLOW/UNPARENT/UNCHILD/UNSIBLING:
-- UNFRIEND/UNCONTACT/UNFOLLOW/UNSPOUSE/UNPARENT/UNCHILD/UNSIBLING:
-- удаляем соответствующее "позитивное" состояние
DELETE FROM connections_state
WHERE login = NEW.login
@@ -296,6 +298,7 @@ public final class DatabaseTriggersInstaller {
WHEN %d THEN %d
WHEN %d THEN %d
WHEN %d THEN %d
WHEN %d THEN %d
ELSE rel_type
END
AND COALESCE(
@@ -308,20 +311,21 @@ public final class DatabaseTriggersInstaller {
ELSE NULL
END
) IS NOT NULL
AND NEW.msg_sub_type IN (%d, %d, %d, %d, %d, %d);
AND NEW.msg_sub_type IN (%d, %d, %d, %d, %d, %d, %d);
END;
""".formatted(
FRIEND, CONTACT, FOLLOW, PARENT, CHILD, SIBLING,
FRIEND, CONTACT, PARENT, CHILD, SIBLING,
FRIEND, CONTACT, FOLLOW, SPOUSE, PARENT, CHILD, SIBLING,
FRIEND, CONTACT, FOLLOW, SPOUSE, PARENT, CHILD, SIBLING,
UNFRIEND, FRIEND,
UNCONTACT, CONTACT,
UNFOLLOW, FOLLOW,
UNSPOUSE, SPOUSE,
UNPARENT, PARENT,
UNCHILD, CHILD,
UNSIBLING, SIBLING,
UNFRIEND, UNCONTACT, UNFOLLOW, UNPARENT, UNCHILD, UNSIBLING
UNFRIEND, UNCONTACT, UNFOLLOW, UNSPOUSE, UNPARENT, UNCHILD, UNSIBLING
));
}
@@ -39,9 +39,9 @@ public final class MsgSubType {
/* ===================== CONNECTION (msg_type=3) ===================== */
/**
* Совпадает с ConnectionBody:
* SET: CLOSE_FRIEND(=FRIEND)=10, CONTACT=20, FOLLOW=30, PARENT=50, CHILD=52, SIBLING=54
* UNSET: UNCLOSE_FRIEND(=UNFRIEND)=11, UNCONTACT=21, UNFOLLOW=31, UNPARENT=51, UNCHILD=53, UNSIBLING=55
* Совпадает с ConnectionBody:
* SET: CLOSE_FRIEND(=FRIEND)=10, CONTACT=20, FOLLOW=30, SPOUSE=40, PARENT=50, CHILD=52, SIBLING=54
* UNSET: UNCLOSE_FRIEND(=UNFRIEND)=11, UNCONTACT=21, UNFOLLOW=31, UNSPOUSE=41, UNPARENT=51, UNCHILD=53, UNSIBLING=55
*/
/** Добавить в близкие друзья (close friend). */
@@ -68,6 +68,12 @@ public final class MsgSubType {
/** Отписаться (unfollow). */
public static final short CONNECTION_UNFOLLOW = 31;
/** Добавить связь "жена/муж". */
public static final short CONNECTION_SPOUSE = 40;
/** Удалить связь "жена/муж". */
public static final short CONNECTION_UNSPOUSE = 41;
/** Добавить связь "родитель". */
public static final short CONNECTION_PARENT = 50;
@@ -92,8 +98,6 @@ public final class MsgSubType {
public static final short USER_PARAM_TEXT_TEXT = 1;
/* ===================== РЕЗЕРВ НА БУДУЩЕЕ ===================== */
// Если позже захочешь BLOCK/UNBLOCK — лучше добавить НОВЫЕ значения,
// не трогая 10/20/30 и 11/21/31 (например, 40/41).
// public static final short CONNECTION_BLOCK = 40;
// public static final short CONNECTION_UNBLOCK = 41;
// Если позже захочешь BLOCK/UNBLOCK — лучше добавить новые значения,
// не трогая уже занятые коды.
}