Add draft reactions + gifs; region resolution

This commit is contained in:
Jack Kingsman
2026-06-20 21:12:47 -07:00
parent cb4d4ca584
commit 06556a853d
35 changed files with 1111 additions and 44 deletions
+14 -2
View File
@@ -64,6 +64,8 @@ class MessageRepository:
outgoing: bool = False,
sender_name: str | None = None,
sender_key: str | None = None,
transport_code: int | None = None,
region: str | None = None,
) -> int | None:
"""Create a message, returning the ID or None if duplicate.
@@ -94,8 +96,8 @@ class MessageRepository:
"""
INSERT OR IGNORE INTO messages (type, conversation_key, text, sender_timestamp,
received_at, paths, txt_type, signature, outgoing,
sender_name, sender_key)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
sender_name, sender_key, transport_code, region)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""",
(
msg_type,
@@ -109,6 +111,8 @@ class MessageRepository:
outgoing,
sender_name,
normalized_sender_key,
transport_code,
region,
),
) as cursor:
rowcount = cursor.rowcount
@@ -357,10 +361,16 @@ class MessageRepository:
def _row_to_message(row: Any) -> Message:
"""Convert a database row to a Message model."""
packet_id = None
transport_code = None
region = None
if hasattr(row, "keys"):
row_keys = row.keys()
if "packet_id" in row_keys:
packet_id = row["packet_id"]
if "transport_code" in row_keys:
transport_code = row["transport_code"]
if "region" in row_keys:
region = row["region"]
return Message(
id=row["id"],
@@ -377,6 +387,8 @@ class MessageRepository:
acked=row["acked"],
sender_name=row["sender_name"],
packet_id=packet_id,
transport_code=transport_code,
region=region,
)
@staticmethod
+18 -1
View File
@@ -39,7 +39,7 @@ class AppSettingsRepository:
"""
SELECT max_radio_contacts, auto_decrypt_dm_on_advert,
last_message_times,
advert_interval, last_advert_time, flood_scope,
advert_interval, last_advert_time, flood_scope, known_regions,
blocked_keys, blocked_names, discovery_blocked_types,
tracked_telemetry_repeaters, tracked_telemetry_contacts,
auto_resend_channel,
@@ -81,6 +81,15 @@ class AppSettingsRepository:
except (json.JSONDecodeError, TypeError):
blocked_names = []
# Parse known_regions JSON
known_regions: list[str] = []
try:
raw_regions = row["known_regions"]
if raw_regions:
known_regions = json.loads(raw_regions)
except (json.JSONDecodeError, TypeError, KeyError):
known_regions = []
# Parse discovery_blocked_types JSON
discovery_blocked_types: list[int] = []
if row["discovery_blocked_types"]:
@@ -136,6 +145,7 @@ class AppSettingsRepository:
advert_interval=row["advert_interval"] or 0,
last_advert_time=row["last_advert_time"] or 0,
flood_scope=row["flood_scope"] or "",
known_regions=known_regions,
blocked_keys=blocked_keys,
blocked_names=blocked_names,
discovery_blocked_types=discovery_blocked_types,
@@ -156,6 +166,7 @@ class AppSettingsRepository:
advert_interval: int | None = None,
last_advert_time: int | None = None,
flood_scope: str | None = None,
known_regions: list[str] | None = None,
blocked_keys: list[str] | None = None,
blocked_names: list[str] | None = None,
discovery_blocked_types: list[int] | None = None,
@@ -197,6 +208,10 @@ class AppSettingsRepository:
updates.append("flood_scope = ?")
params.append(flood_scope)
if known_regions is not None:
updates.append("known_regions = ?")
params.append(json.dumps(known_regions))
if blocked_keys is not None:
updates.append("blocked_keys = ?")
params.append(json.dumps(blocked_keys))
@@ -251,6 +266,7 @@ class AppSettingsRepository:
advert_interval: int | None = None,
last_advert_time: int | None = None,
flood_scope: str | None = None,
known_regions: list[str] | None = None,
blocked_keys: list[str] | None = None,
blocked_names: list[str] | None = None,
discovery_blocked_types: list[int] | None = None,
@@ -270,6 +286,7 @@ class AppSettingsRepository:
advert_interval=advert_interval,
last_advert_time=last_advert_time,
flood_scope=flood_scope,
known_regions=known_regions,
blocked_keys=blocked_keys,
blocked_names=blocked_names,
discovery_blocked_types=discovery_blocked_types,