chiark / gitweb /
UNTESTED: beep and go to [ESC][R] on a message.
authorSimon Tatham <anakin@pobox.com>
Wed, 6 Dec 2023 07:33:31 +0000 (07:33 +0000)
committerSimon Tatham <anakin@pobox.com>
Wed, 6 Dec 2023 07:33:31 +0000 (07:33 +0000)
client.py
cursesclient.py

index 8e29ae05b1a3afc4513da45d2f7e5d1914092536..317dbfbf2bf1da19b7954517130f2a611788980d 100644 (file)
--- a/client.py
+++ b/client.py
@@ -190,22 +190,24 @@ class IncrementalServerFeed(Feed):
 
     def extend_past(self):
         if not self.started:
-            return
+            return None
         data, links = self.client.get_incremental_cont(self.next_link)
         if len(data) == 0:
-            return
+            return False
         self.data[0:0] = list(self.get(d) for d in reversed(data))
         self.origin += len(data)
         self.next_link = links['next']
+        return len(data) > 0
 
     def extend_future(self):
         if not self.started:
-            return
+            return None
         data, links = self.client.get_incremental_cont(self.prev_link)
         if len(data) == 0:
-            return
+            return False
         self.data.extend(self.get(d) for d in reversed(data))
         self.prev_link = links['prev']
+        return len(data) > 0
 
 class HomeTimelineFeed(IncrementalServerFeed):
     def __init__(self, client):
index 5d2106acf7c3f8445d98099fb0efba5c5904920b..e057d4254ee92834e68e6ef963be374ce2413162 100644 (file)
@@ -144,7 +144,17 @@ class CursesUI(client.Client):
 
         def extend_both():
             home_feed.extend_future()
-            mentions_feed.extend_future()
+            if mentions_feed.extend_future():
+                curses.beep()
+                # FIXME: should we try to replicate Mono's ~1s delay
+                # before throwing you into messages?
+
+                # FIXME: this is also the point to check if the
+                # topmost activity is uninterruptible, e.g. an editor
+                if not any(a is self.mentions_feed
+                           for a in self.activity_stack):
+                    self.activity_stack.append(self.mentions_feed)
+
         self.add_streaming_selfpipe("streaming/user", extend_both)
 
         self.home_timeline = StatusFile(