Move notification printing to output module

Removed sorting, since notifications are already sorted.
This commit is contained in:
Ivan Habunek 2019-04-16 14:09:54 +02:00
parent 204d4d4138
commit 474d9c432f
No known key found for this signature in database
GPG Key ID: CDBD63C43A30BB95
2 changed files with 29 additions and 23 deletions

View File

@ -1,12 +1,10 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from toot import api, config
from toot.auth import login_interactive, login_browser_interactive, create_app_interactive
from toot.exceptions import ConsoleError, NotFoundError
from toot.output import (print_out, print_instance, print_account,
print_search_results, print_status, print_timeline)
print_search_results, print_timeline, print_notifications)
from toot.utils import assert_domain_exists, multiline_input, EOF_KEY
@ -309,23 +307,4 @@ def notifications(app, user, args):
print_out("<yellow>No notification</yellow>")
return
width = 100
for notification in sorted(notifications,
key=lambda n: datetime.strptime(
n["created_at"], "%Y-%m-%dT%H:%M:%S.%fZ"),
reverse=True):
account = "{display_name} @{acct}".format(**notification["account"])
msg = {
"follow": "{account} now follows you",
"mention": "{account} mentioned you in",
"reblog": "{account} reblogged your status",
"favourite": "{account} favourited your status",
}.get(notification["type"])
if msg is None:
continue
print_out("" * width)
print_out(msg.format(account=account))
status = notification.get("status")
if status is not None:
print_status(status, width=width)
print_out("" * width)
print_notifications(notifications)

View File

@ -175,3 +175,30 @@ def print_timeline(items, width=100):
for item in items:
print_status(item, width)
print_out("" * width)
notification_msgs = {
"follow": "{account} now follows you",
"mention": "{account} mentioned you in",
"reblog": "{account} reblogged your status",
"favourite": "{account} favourited your status",
}
def print_notification(notification, width=100):
account = "{display_name} @{acct}".format(**notification["account"])
msg = notification_msgs.get(notification["type"])
if msg is None:
return
print_out("" * width)
print_out(msg.format(account=account))
status = notification.get("status")
if status is not None:
print_status(status, width)
def print_notifications(notifications, width=100):
for notification in notifications:
print_notification(notification)
print_out("" * width)