summarylogtreecommitdiffstats
path: root/0002-Fix-compatibility-with-new-libtd-version.patch
diff options
context:
space:
mode:
Diffstat (limited to '0002-Fix-compatibility-with-new-libtd-version.patch')
-rw-r--r--0002-Fix-compatibility-with-new-libtd-version.patch181
1 files changed, 181 insertions, 0 deletions
diff --git a/0002-Fix-compatibility-with-new-libtd-version.patch b/0002-Fix-compatibility-with-new-libtd-version.patch
new file mode 100644
index 000000000000..45c124849cd6
--- /dev/null
+++ b/0002-Fix-compatibility-with-new-libtd-version.patch
@@ -0,0 +1,181 @@
+From 24dc62ca6ed1cff0e7a0124aa24f8388f7c034f1 Mon Sep 17 00:00:00 2001
+From: hexyoungs <chuxdesign@hotmail.com>
+Date: Wed, 25 Nov 2020 16:07:50 +0800
+Subject: [PATCH 2/2] Fix compatibility with new libtd version
+
+Based on the work of chux0519 here: https://github.com/chux0519/tg
+---
+ tg/controllers.py | 2 +-
+ tg/models.py | 13 ++++++++++---
+ tg/msg.py | 2 +-
+ tg/update_handlers.py | 22 +++++++++++++++++-----
+ tg/views.py | 10 +++++-----
+ 5 files changed, 34 insertions(+), 15 deletions(-)
+
+diff --git a/tg/controllers.py b/tg/controllers.py
+index 300e3d2..ae8deab 100644
+--- a/tg/controllers.py
++++ b/tg/controllers.py
+@@ -869,7 +869,7 @@ class Controller:
+ return
+
+ # notify
+- if self.model.is_me(msg["sender_user_id"]):
++ if self.model.is_me(msg["sender"].get("user_id")):
+ return
+ user = self.model.users.get_user(msg.sender_id)
+ name = f"{user['first_name']} {user['last_name']}"
+diff --git a/tg/models.py b/tg/models.py
+index 882bcd4..0808448 100644
+--- a/tg/models.py
++++ b/tg/models.py
+@@ -175,7 +175,8 @@ class Model:
+ return False
+
+ def can_be_deleted(self, chat_id: int, msg: Dict[str, Any]) -> bool:
+- if chat_id == msg["sender_user_id"]:
++ c_id = msg["sender"].get("chat_id") or msg["sender"].get("user_id")
++ if chat_id == c_id:
+ return msg["can_be_deleted_only_for_self"]
+ return msg["can_be_deleted_for_all_users"]
+
+@@ -436,6 +437,12 @@ class ChatModel:
+ chat_id = chat["id"]
+ if chat_id in self.chat_ids:
+ return
++
++ if len(chat["positions"]) > 0:
++ chat["order"] = chat["positions"][0]["order"]
++ else:
++ chat["order"] = 0 #str(sys.maxsize)
++
+ if int(chat["order"]) == 0:
+ self.inactive_chats[chat_id] = chat
+ return
+@@ -811,10 +818,10 @@ class UserModel:
+ if user_id == 0:
+ return ""
+ user = self.get_user(user_id)
+- if user["first_name"] and user["last_name"]:
++ if user.get("first_name") and user.get("last_name"):
+ return f'{user["first_name"]} {user["last_name"]}'[:20]
+
+- if user["first_name"]:
++ if user.get("first_name"):
+ return f'{user["first_name"]}'[:20]
+
+ if user.get("username"):
+diff --git a/tg/msg.py b/tg/msg.py
+index deb5288..3084c6c 100644
+--- a/tg/msg.py
++++ b/tg/msg.py
+@@ -218,7 +218,7 @@ class MsgProxy:
+
+ @property
+ def sender_id(self) -> int:
+- return self.msg["sender_user_id"]
++ return self.msg["sender"].get("user_id") or self.msg["sender"].get("chat_id")
+
+ @property
+ def forward(self) -> Optional[Dict[str, Any]]:
+diff --git a/tg/update_handlers.py b/tg/update_handlers.py
+index fa42c0a..2799709 100644
+--- a/tg/update_handlers.py
++++ b/tg/update_handlers.py
+@@ -78,7 +78,7 @@ def update_new_message(controller: Controller, update: Dict[str, Any]) -> None:
+
+ controller.notify_for_message(msg.chat_id, msg)
+
+-
++#outdated
+ @update_handler("updateChatOrder")
+ def update_chat_order(controller: Controller, update: Dict[str, Any]) -> None:
+ current_chat_id = controller.model.current_chat_id
+@@ -88,6 +88,16 @@ def update_chat_order(controller: Controller, update: Dict[str, Any]) -> None:
+ if controller.model.chats.update_chat(chat_id, order=order):
+ controller.refresh_current_chat(current_chat_id)
+
++@update_handler("updateChatPosition")
++def update_chat_position(controller: Controller, update: Dict[str, Any]) -> None:
++ current_chat_id = controller.model.current_chat_id
++ chat_id = update["chat_id"]
++ info = {}
++ info["order"] = update["position"]["order"]
++ if "is_pinned" in update:
++ info["is_pinned"] = update["is_pinned"]
++ if controller.model.chats.update_chat(chat_id, **info):
++ controller.refresh_current_chat(current_chat_id)
+
+ @update_handler("updateChatTitle")
+ def update_chat_title(controller: Controller, update: Dict[str, Any]) -> None:
+@@ -189,12 +199,14 @@ def update_chat_last_message(
+ # according to documentation it can be null
+ log.warning("last_message is null: %s", update)
+ return
+- order = update["order"]
++
++ info = {}
++ info["last_message"] = last_message
++ if len(update["positions"]) > 0:
++ info["order"] = update["positions"][0]["order"]
+
+ current_chat_id = controller.model.current_chat_id
+- if controller.model.chats.update_chat(
+- chat_id, last_message=last_message, order=order
+- ):
++ if controller.model.chats.update_chat(chat_id, **info):
+ controller.refresh_current_chat(current_chat_id)
+
+
+diff --git a/tg/views.py b/tg/views.py
+index d4806e2..64ad1fa 100644
+--- a/tg/views.py
++++ b/tg/views.py
+@@ -240,7 +240,7 @@ class ChatView:
+ msg = chat.get("last_message")
+ if (
+ msg
+- and self.model.is_me(msg["sender_user_id"])
++ and self.model.is_me(msg["sender"].get("user_id"))
+ and msg["id"] > chat["last_read_outbox_message_id"]
+ and not self.model.is_me(chat["id"])
+ ):
+@@ -248,7 +248,7 @@ class ChatView:
+ flags.append("unseen")
+ elif (
+ msg
+- and self.model.is_me(msg["sender_user_id"])
++ and self.model.is_me(msg["sender"].get("user_id"))
+ and msg["id"] <= chat["last_read_outbox_message_id"]
+ ):
+ flags.append("seen")
+@@ -259,7 +259,7 @@ class ChatView:
+ if self.model.users.is_online(chat["id"]):
+ flags.append("online")
+
+- if chat["is_pinned"]:
++ if "is_pinned" in chat and chat["is_pinned"]:
+ flags.append("pinned")
+
+ if chat["notification_settings"]["mute_for"]:
+@@ -363,7 +363,7 @@ class MsgView:
+ return f"\n | photo: {web['url']}"
+ name = web["site_name"]
+ title = web["title"]
+- description = web["description"].replace("\n", "")
++ description = web["description"]["text"].replace("\n", "")
+ url = f"\n | {name}: {title}"
+ if description:
+ url += f"\n | {description}"
+@@ -584,7 +584,7 @@ def get_last_msg(
+ if not last_msg:
+ return None, "<No messages yet>"
+ return (
+- last_msg["sender_user_id"],
++ last_msg["sender"].get("user_id"),
+ parse_content(MsgProxy(last_msg), users),
+ )
+
+--
+2.30.1
+