mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-07-05 17:32:10 +02:00
Add draft reactions + gifs; region resolution
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user