chiark / gitweb /
Allow tagging posts with a content warning.
authorSimon Tatham <anakin@pobox.com>
Sat, 9 Dec 2023 17:41:09 +0000 (17:41 +0000)
committerSimon Tatham <anakin@pobox.com>
Sat, 9 Dec 2023 17:41:09 +0000 (17:41 +0000)
cursesclient.py

index 3f49109e184d98b860b20620972df3f59c3d1918..1768d340323d2df8ce01730bdbbff97889b44017 100644 (file)
@@ -1042,6 +1042,7 @@ class Composer(Activity, EditorCommon):
             self.url_cost = 23
 
         self.language = "en" # FIXME: find a better default from somewhere
+        self.content_warning = ""
 
     def render(self):
         y = 0
@@ -1174,6 +1175,9 @@ class Composer(Activity, EditorCommon):
         }
         if self.reply_id is not None:
             params["in_reply_to_id"] = self.reply_id
+        if self.content_warning != "":
+            params["sensitive"] = True
+            params["spoiler_text"] = self.content_warning
         if self.cc.readonly:
             print("post", file=sys.stderr)
             for key, value in params.items():
@@ -1198,6 +1202,10 @@ class PostMenu(Menu):
         self.items.append(text.MenuKeypressLine(
             'A', text.ColouredString("Re-edit post")))
         self.items.append(text.BlankLine())
+        cw = ('none' if self.composer.content_warning == ''
+              else f"'{self.composer.content_warning}'")
+        self.items.append(text.MenuKeypressLine(
+            'W', text.ColouredString("Content warning: " + cw)))
         self.items.append(text.MenuKeypressLine(
             'L', text.ColouredString(f"Language: '{self.composer.language}'")))
         self.renormalise()
@@ -1206,6 +1214,10 @@ class PostMenu(Menu):
         self.composer.language = lang
         self.refresh_items()
 
+    def set_content_warning(self, cw):
+        self.composer.content_warning = cw
+        self.refresh_items()
+
     def handle_key(self, ch):
         if ch in {'q', 'Q'}:
             self.cc.composer = None
@@ -1216,6 +1228,10 @@ class PostMenu(Menu):
             self.push_to(BottomLinePrompt(
                 self.cc, self.set_language, "Language tag for post: ",
                 self.composer.language))
+        elif ch in {'w', 'W'}:
+            self.push_to(BottomLinePrompt(
+                self.cc, self.set_content_warning, "Content warning: ",
+                self.composer.content_warning))
         elif ch in {' '}:
             self.composer.post()
             self.cc.composer = None