Added initial support for direct messages, users need to open conversations for every dm

This commit is contained in:
2022-11-12 11:20:16 -06:00
parent 39fc982665
commit 81ff530a71
9 changed files with 109 additions and 41 deletions

View File

@@ -36,3 +36,15 @@ def compose_user(user, db, relative_times=True):
if name == "":
name = user.get("username")
return [_("%s (@%s). %s followers, %s following, %s toots. Joined %s") % (name, user.acct, user.followers_count, user.following_count, user.statuses_count, ts)]
def compose_conversation(conversation, db, relative_times, show_screen_names):
users = []
for account in conversation.accounts:
if account.display_name != "":
users.append(account.display_name)
else:
users.append(account.username)
users = ", ".join(users)
last_toot = compose_toot(conversation.last_status, db, relative_times, show_screen_names)
text = _("Last message from {}: {}").format(last_toot[0], last_toot[1])
return [users, text, last_toot[-1], ""]

View File

@@ -3,7 +3,7 @@ import re
import arrow
import languageHandler
from string import Template
from . import utils
from . import utils, compose
# Define variables that would be available for all template objects.
# This will be used for the edit template dialog.
@@ -11,6 +11,7 @@ from . import utils
# safe_text will be the content warning in case a toot contains one, text will always be the full text, no matter if has a content warning or not.
toot_variables = ["date", "display_name", "screen_name", "source", "lang", "safe_text", "text", "image_descriptions"]
person_variables = ["display_name", "screen_name", "description", "followers", "following", "favorites", "toots", "created_at"]
conversation_variables = ["users", "last_toot"]
# Default, translatable templates.
toot_default_template = _("$display_name, $text $image_descriptions $date. $source")
@@ -118,4 +119,18 @@ def render_person(user, template, relative_times=True, offset_hours=0):
available_data.update(created_at=created_at)
result = Template(_(template)).safe_substitute(**available_data)
result = remove_unneeded_variables(result, person_variables)
return result
def render_conversation(conversation, template, toot_template, relative_times=False, offset_hours=0):
users = []
for account in conversation.accounts:
if account.display_name != "":
users.append(account.display_name)
else:
users.append(account.username)
users = ", ".join(users)
last_toot = render_toot(conversation.last_status, toot_template, relative_times=relative_times, offset_hours=offset_hours)
available_data = dict(users=users, last_toot=last_toot)
result = Template(_(template)).safe_substitute(**available_data)
result = remove_unneeded_variables(result, conversation_variables)
return result

View File

@@ -21,8 +21,7 @@ def find_item(item, listItems):
for i in range(0, len(listItems)):
if listItems[i].id == item.id:
return i
# Check also retweets.
if item.reblog != None and item.reblog.id == listItems[i].id:
if hasattr(item, "reblog") and item.reblog != None and item.reblog.id == listItems[i].id:
return i
return None