Philipp Hörist pushed to branch master at gajim / gajim

Commits:

6 changed files:

Changes:

  • gajim/common/events.py
    ... ... @@ -25,6 +25,7 @@
    25 25
     
    
    26 26
     from nbxmpp.protocol import JID
    
    27 27
     from nbxmpp.structs import HTTPAuthData
    
    28
    +from nbxmpp.structs import ModerationData
    
    28 29
     from nbxmpp.structs import LocationData
    
    29 30
     from nbxmpp.structs import RosterItem
    
    30 31
     from nbxmpp.structs import TuneData
    
    ... ... @@ -362,6 +363,14 @@ class MessageUpdated(ApplicationEvent):
    362 363
         correct_id: str
    
    363 364
     
    
    364 365
     
    
    366
    +@dataclass
    
    367
    +class MessageModerated(ApplicationEvent):
    
    368
    +    name: str = field(init=False, default='message-moderated')
    
    369
    +    account: str
    
    370
    +    jid: JID
    
    371
    +    moderation: ModerationData
    
    372
    +
    
    373
    +
    
    365 374
     @dataclass
    
    366 375
     class MamMessageReceived(ApplicationEvent):
    
    367 376
         name: str = field(init=False, default='mam-message-received')
    

  • gajim/common/modules/muc.py
    ... ... @@ -34,7 +34,7 @@
    34 34
     from gajim.common import helpers
    
    35 35
     from gajim.common.const import KindConstant
    
    36 36
     from gajim.common.const import MUCJoinedState
    
    37
    -from gajim.common.events import MessageUpdated
    
    37
    +from gajim.common.events import MessageModerated
    
    38 38
     from gajim.common.events import MucAdded
    
    39 39
     from gajim.common.events import MucDecline
    
    40 40
     from gajim.common.events import MucInvitation
    
    ... ... @@ -89,7 +89,8 @@ def __init__(self, con):
    89 89
                               typ='groupchat',
    
    90 90
                               priority=49),
    
    91 91
                 StanzaHandler(name='message',
    
    92
    -                          callback=self._on_update_message,
    
    92
    +                          callback=self._on_moderation,
    
    93
    +                          ns=Namespace.FASTEN,
    
    93 94
                               typ='groupchat',
    
    94 95
                               priority=49),
    
    95 96
                 StanzaHandler(name='message',
    
    ... ... @@ -671,17 +672,19 @@ def _on_subject_change(self, _con, _stanza, properties):
    671 672
     
    
    672 673
             raise nbxmpp.NodeProcessed
    
    673 674
     
    
    674
    -    def _on_update_message(self, _con, _stanza, properties):
    
    675
    -        if properties.is_moderation:
    
    676
    -            app.storage.archive.update_additional_data(
    
    677
    -                self._account, properties.moderation.stanza_id, properties)
    
    675
    +    def _on_moderation(self, _con, _stanza, properties):
    
    676
    +        if not properties.is_moderation:
    
    677
    +            return
    
    678 678
     
    
    679
    -            app.ged.raise_event(
    
    680
    -                MessageUpdated(account=self._account,
    
    681
    -                               jid=properties.jid,
    
    682
    -                               properties=properties))
    
    679
    +        app.storage.archive.update_additional_data(
    
    680
    +            self._account, properties.moderation.stanza_id, properties)
    
    683 681
     
    
    684
    -            raise nbxmpp.NodeProcessed
    
    682
    +        app.ged.raise_event(
    
    683
    +            MessageModerated(account=self._account,
    
    684
    +                             jid=properties.jid,
    
    685
    +                             moderation=properties.moderation))
    
    686
    +
    
    687
    +        raise nbxmpp.NodeProcessed
    
    685 688
     
    
    686 689
         def _fake_subject_change(self, room_jid):
    
    687 690
             # This is for servers which don’t send empty subjects as part of the
    

  • gajim/gtk/chat_list.py
    ... ... @@ -376,6 +376,8 @@ def process_event(self, event: events.ApplicationEvent) -> None:
    376 376
                 self._on_message_received(event)
    
    377 377
             elif isinstance(event, events.MessageUpdated):
    
    378 378
                 self._on_message_updated(event)
    
    379
    +        elif isinstance(event, events.MessageModerated):
    
    380
    +            self._on_message_moderated(event)
    
    379 381
             elif isinstance(event, events.PresenceReceived):
    
    380 382
                 self._on_presence_received(event)
    
    381 383
             elif isinstance(event, events.MessageSent):
    
    ... ... @@ -429,17 +431,20 @@ def _on_message_updated(self, event: events.MessageUpdated) -> None:
    429 431
             if row is None:
    
    430 432
                 return
    
    431 433
     
    
    432
    -        if hasattr(event, 'correct_id'):
    
    433
    -            if event.correct_id == row.message_id:
    
    434
    -                row.set_message_text(event.msgtxt)
    
    435
    -
    
    436
    -        if event.properties.is_moderation:
    
    437
    -            if event.properties.moderation.stanza_id == row.stanza_id:
    
    438
    -                text = get_retraction_text(
    
    439
    -                    event.account,
    
    440
    -                    event.properties.moderation.moderator_jid,
    
    441
    -                    event.properties.moderation.reason)
    
    442
    -                row.set_message_text(text)
    
    434
    +        if event.correct_id == row.message_id:
    
    435
    +            row.set_message_text(event.msgtxt)
    
    436
    +
    
    437
    +    def _on_message_moderated(self, event: events.MessageModerated) -> None:
    
    438
    +        row = self._chats.get((event.account, event.jid))
    
    439
    +        if row is None:
    
    440
    +            return
    
    441
    +
    
    442
    +        if event.moderation.stanza_id == row.stanza_id:
    
    443
    +            text = get_retraction_text(
    
    444
    +                event.account,
    
    445
    +                event.moderation.moderator_jid,
    
    446
    +                event.moderation.reason)
    
    447
    +            row.set_message_text(text)
    
    443 448
     
    
    444 449
         def _on_message_sent(self, event: events.MessageSent) -> None:
    
    445 450
             msgtext = event.message
    

  • gajim/gtk/chat_list_stack.py
    ... ... @@ -39,6 +39,7 @@
    39 39
         events.MamMessageReceived,
    
    40 40
         events.GcMessageReceived,
    
    41 41
         events.MessageUpdated,
    
    42
    +    events.MessageModerated,
    
    42 43
         events.PresenceReceived,
    
    43 44
         events.MessageSent,
    
    44 45
         events.JingleRequestReceived,
    

  • gajim/gtk/controls/base.py
    ... ... @@ -331,18 +331,15 @@ def process_event(self, event: events.ApplicationEvent) -> None:
    331 331
             getattr(self, method_name)(event)
    
    332 332
     
    
    333 333
         def _on_message_updated(self, event: events.MessageUpdated) -> None:
    
    334
    -        if hasattr(event, 'correct_id'):
    
    335
    -            self.conversation_view.correct_message(
    
    336
    -                event.correct_id, event.msgtxt)
    
    337
    -            return
    
    334
    +        self.conversation_view.correct_message(event.correct_id, event.msgtxt)
    
    338 335
     
    
    339
    -        if event.properties.is_moderation:
    
    340
    -            text = get_retraction_text(
    
    341
    -                self.account,
    
    342
    -                event.properties.moderation.moderator_jid,
    
    343
    -                event.properties.moderation.reason)
    
    344
    -            self.conversation_view.show_message_retraction(
    
    345
    -                event.properties.moderation.stanza_id, text)
    
    336
    +    def _on_message_moderated(self, event: events.MessageModerated) -> None:
    
    337
    +        text = get_retraction_text(
    
    338
    +            self.account,
    
    339
    +            event.moderation.moderator_jid,
    
    340
    +            event.moderation.reason)
    
    341
    +        self.conversation_view.show_message_retraction(
    
    342
    +            event.moderation.stanza_id, text)
    
    346 343
     
    
    347 344
         def _on_conversation_view_key_press(self,
    
    348 345
                                             _listbox: ConversationView,
    

  • gajim/gtk/main.py
    ... ... @@ -110,6 +110,7 @@ def __init__(self) -> None:
    110 110
                 ('mam-message-received', ged.CORE, self._on_event),
    
    111 111
                 ('gc-message-received', ged.CORE, self._on_event),
    
    112 112
                 ('message-updated', ged.CORE, self._on_event),
    
    113
    +            ('message-moderated', ged.CORE, self._on_event),
    
    113 114
                 ('receipt-received', ged.GUI1, self._on_event),
    
    114 115
                 ('displayed-received', ged.GUI1, self._on_event),
    
    115 116
                 ('message-error', ged.GUI1, self._on_event),