From: Simon Tatham Date: Fri, 8 Dec 2023 07:35:44 +0000 (+0000) Subject: Show which things are already faved/boosted. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=f5bbe1398efb5f4e8ec4bbd17448eba228dd2c2f;p=mastodonochrome.git Show which things are already faved/boosted. Now we can only offer the right one of fave and unfave buttons, too. --- diff --git a/client.py b/client.py index 8046b5f..9511f02 100644 --- a/client.py +++ b/client.py @@ -277,8 +277,15 @@ class Status: self.client = client + self.update_fave_boost(data) + + def update_fave_boost(self, data): + self.favourited = data.get('favourited', False) + self.boosted = data.get('boosted', False) + def text(self): - yield text.SeparatorLine(self.datestamp) + yield text.SeparatorLine(self.datestamp, + self.favourited, self.boosted) yield text.FromLine(self.client.fq(self.account['acct']), self.account['display_name']) if self.booster is not None: diff --git a/cursesclient.py b/cursesclient.py index 7ca769a..d2e2a59 100644 --- a/cursesclient.py +++ b/cursesclient.py @@ -544,11 +544,15 @@ class ObjectFile(File): if self.select_type == 'send': sl.keys.append(('SPACE', 'Reply')) elif self.select_type == 'favourite': - sl.keys.append(('SPACE', 'Fave')) - sl.keys.append(('D', 'Unfave')) + if not self.statuses[self.select_target].favourited: + sl.keys.append(('SPACE', 'Fave')) + if self.statuses[self.select_target].favourited: + sl.keys.append(('D', 'Unfave')) elif self.select_type == 'boost': - sl.keys.append(('SPACE', 'Boost')) - sl.keys.append(('D', 'Unboost')) + if not self.statuses[self.select_target].boosted: + sl.keys.append(('SPACE', 'Boost')) + if self.statuses[self.select_target].boosted: + sl.keys.append(('D', 'Unboost')) sl.keys.append(('-', None)) sl.keys.append(('+', None)) sl.keys.append(('Q', 'Quit')) @@ -616,15 +620,19 @@ class ObjectFile(File): def favourite_complete(self, direction): self.mode = 'normal' - reply_id = self.statuses[self.select_target].get_reply_id() + target = self.statuses[self.select_target] + reply_id = target.get_reply_id() verb = "favourite" if direction > 0 else "unfavourite" - self.cc.post(f"statuses/{reply_id}/{verb}") + data = self.cc.post(f"statuses/{reply_id}/{verb}") + target.update_fave_boost(data) def boost_complete(self, direction): self.mode = 'normal' - reply_id = self.statuses[self.select_target].get_reply_id() + target = self.statuses[self.select_target] + reply_id = target.get_reply_id() verb = "reblog" if direction > 0 else "unreblog" - self.cc.post(f"statuses/{reply_id}/{verb}") + data = self.cc.post(f"statuses/{reply_id}/{verb}") + target.update_fave_boost(data) def move_to(self, pos): old_linepos = self.linepos diff --git a/text.py b/text.py index e3d5794..5b67a6f 100644 --- a/text.py +++ b/text.py @@ -118,8 +118,10 @@ class BlankLine: yield ColouredString("") class SeparatorLine: - def __init__(self, timestamp): + def __init__(self, timestamp, favourited=False, boosted=False): self.timestamp = timestamp + self.favourited = favourited + self.boosted = boosted def render(self, width): date = time.strftime("%a %b %e %H:%M:%S %Y", @@ -127,6 +129,14 @@ class SeparatorLine: suffix = (ColouredString("[", 'S') + ColouredString(date, 'D') + ColouredString("]--", 'S')) + if self.boosted: + suffix = (ColouredString("[", 'S') + + ColouredString('B', 'D') + + ColouredString("]--", 'S')) + suffix + if self.favourited: + suffix = (ColouredString("[", 'S') + + ColouredString('F', 'D') + + ColouredString("]--", 'S')) + suffix yield ColouredString("-", 'S') * (width - 1 - suffix.width) + suffix class EditorHeaderSeparator: