5
5
from datetime import date , datetime , timedelta
6
6
from sys import platform
7
7
from time import sleep , time
8
- from typing import Any , Callable , Dict , List , Optional , Tuple , Union
8
+ from typing import Any , Callable , Dict , List , NamedTuple , Optional , Tuple , Union
9
9
from urllib .parse import urljoin , urlparse
10
10
11
11
import dateutil .parser
53
53
from zulipterminal .model import Model
54
54
55
55
56
+ class _MessageEditState (NamedTuple ):
57
+ message_id : int
58
+
59
+
56
60
class WriteBox (urwid .Pile ):
57
61
def __init__ (self , view : Any ) -> None :
58
62
super ().__init__ (self .main_view (True ))
59
63
self .model = view .model
60
64
self .view = view
61
65
62
- # If editing a message, its id - otherwise None
63
- self .msg_edit_id : Optional [int ] = None
66
+ # If editing a message, its state - otherwise None
67
+ self .msg_edit_state : Optional [_MessageEditState ] = None
64
68
# Determines if the message body (content) can be edited
65
69
self .msg_body_edit_enabled = True
66
70
@@ -538,9 +542,9 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
538
542
else :
539
543
topic = self .title_write_box .edit_text
540
544
541
- if self .msg_edit_id :
545
+ if self .msg_edit_state is not None :
542
546
args = dict (
543
- message_id = self .msg_edit_id ,
547
+ message_id = self .msg_edit_state . message_id ,
544
548
topic = topic ,
545
549
propagate_mode = self .edit_mode_button .mode ,
546
550
)
@@ -555,10 +559,10 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
555
559
content = self .msg_write_box .edit_text ,
556
560
)
557
561
else :
558
- if self .msg_edit_id :
562
+ if self .msg_edit_state is not None :
559
563
success = self .model .update_private_message (
560
564
content = self .msg_write_box .edit_text ,
561
- msg_id = self .msg_edit_id ,
565
+ msg_id = self .msg_edit_state . message_id ,
562
566
)
563
567
else :
564
568
self .update_recipient_emails (self .to_write_box )
@@ -574,18 +578,18 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
574
578
success = None
575
579
if success :
576
580
self .msg_write_box .edit_text = ""
577
- if self .msg_edit_id :
578
- self .msg_edit_id = None
581
+ if self .msg_edit_state is not None :
582
+ self .msg_edit_state = None
579
583
self .keypress (size , "esc" )
580
584
elif is_command_key ("GO_BACK" , key ):
581
- self .msg_edit_id = None
585
+ self .msg_edit_state = None
582
586
self .msg_body_edit_enabled = True
583
587
self .send_stop_typing_status ()
584
588
self .view .controller .exit_editor_mode ()
585
589
self .main_view (False )
586
590
self .view .middle_column .set_focus ("body" )
587
591
elif is_command_key ("SAVE_AS_DRAFT" , key ):
588
- if not self .msg_edit_id :
592
+ if self .msg_edit_state is None :
589
593
if self .to_write_box :
590
594
self .update_recipient_emails (self .to_write_box )
591
595
this_draft : Composition = PrivateComposition (
@@ -636,7 +640,7 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
636
640
return key
637
641
elif (
638
642
header .focus_col == self .FOCUS_HEADER_BOX_TOPIC
639
- and self .msg_edit_id
643
+ and self .msg_edit_state is not None
640
644
):
641
645
header .focus_col = self .FOCUS_HEADER_BOX_EDIT
642
646
return key
@@ -1612,7 +1616,7 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
1612
1616
msg_id = self .message ["id" ]
1613
1617
msg = self .model .client .get_raw_message (msg_id )["raw_content" ]
1614
1618
write_box = self .model .controller .view .write_box
1615
- write_box .msg_edit_id = msg_id
1619
+ write_box .msg_edit_state = _MessageEditState ( message_id = msg_id )
1616
1620
write_box .msg_write_box .set_edit_text (msg )
1617
1621
write_box .msg_write_box .set_edit_pos (len (msg ))
1618
1622
write_box .msg_body_edit_enabled = msg_body_edit_enabled
0 commit comments