From 0662a7616bc2027c2b71cab9084be2dd576110cd Mon Sep 17 00:00:00 2001 From: Ivan Habunek Date: Sat, 24 Jun 2023 10:18:10 +0200 Subject: [PATCH] Read toot lenght limit from mastodon instances fixes #369 --- toot/tui/app.py | 11 +++++++---- toot/tui/utils.py | 28 ++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/toot/tui/app.py b/toot/tui/app.py index 63ee6a6..ed8a2ea 100644 --- a/toot/tui/app.py +++ b/toot/tui/app.py @@ -14,13 +14,16 @@ from .overlays import ExceptionStackTrace, GotoMenu, Help, StatusSource, StatusL from .overlays import StatusDeleteConfirmation, Account from .poll import Poll from .timeline import Timeline -from .utils import parse_content_links, show_media, copy_to_clipboard +from .utils import get_max_toot_chars, parse_content_links, show_media, copy_to_clipboard logger = logging.getLogger(__name__) urwid.set_encoding('UTF-8') +DEFAULT_MAX_TOOT_CHARS = 500 + + class Header(urwid.WidgetWrap): def __init__(self, app, user): self.app = app @@ -112,7 +115,7 @@ class TUI(urwid.Frame): self.footer.set_status("Loading...") # Default max status length, updated on startup - self.max_toot_chars = 500 + self.max_toot_chars = DEFAULT_MAX_TOOT_CHARS self.timeline = None self.overlay = None @@ -289,8 +292,8 @@ class TUI(urwid.Frame): return api.get_instance(self.app.base_url) def _done(instance): - if "max_toot_chars" in instance: - self.max_toot_chars = instance["max_toot_chars"] + self.max_toot_chars = get_max_toot_chars(instance, DEFAULT_MAX_TOOT_CHARS) + logger.info(f"Max toot chars set to: {self.max_toot_chars}") if "translation" in instance: # instance is advertising translation service diff --git a/toot/tui/utils.py b/toot/tui/utils.py index 03c05a4..6b1f504 100644 --- a/toot/tui/utils.py +++ b/toot/tui/utils.py @@ -1,13 +1,14 @@ import base64 -import urwid -from html.parser import HTMLParser import math import os import re import shutil import subprocess +import urwid from datetime import datetime, timezone +from functools import reduce +from html.parser import HTMLParser HASHTAG_PATTERN = re.compile(r'(?