chiark / gitweb /
Show which things are already faved/boosted.
authorSimon Tatham <anakin@pobox.com>
Fri, 8 Dec 2023 07:35:44 +0000 (07:35 +0000)
committerSimon Tatham <anakin@pobox.com>
Fri, 8 Dec 2023 07:35:44 +0000 (07:35 +0000)
Now we can only offer the right one of fave and unfave buttons, too.

client.py
cursesclient.py
text.py

index 8046b5f898e67bc99f877bd06339b13f6384f147..9511f020020c28c29f67cd0c247a6cc201533641 100644 (file)
--- 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:
index 7ca769ad43e762c818aeed07f3798c2d0d3723ba..d2e2a597896b19b35733d152ec41ee76f7fdf151 100644 (file)
@@ -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 e3d5794dc1a51672e3163c7b33ef84d38e9ddd6c..5b67a6fe40f70bc66742f5459721dbff877b493e 100644 (file)
--- 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: