@@ -89,6 +89,8 @@ def __init__(self, controller: Any) -> None:
89
89
('typing' , self ._handle_typing_event ),
90
90
('update_message_flags' ,
91
91
self ._handle_update_message_flags_event ),
92
+ ('update_display_settings' ,
93
+ self ._handle_update_display_settings ),
92
94
])
93
95
)
94
96
@@ -142,6 +144,7 @@ def __init__(self, controller: Any) -> None:
142
144
self .active_emoji_data = OrderedDict (sorted (all_emoji_data ,
143
145
key = lambda e : e [0 ]))
144
146
147
+ self .twenty_four_hr_format = self .initial_data ['twenty_four_hour_time' ]
145
148
self .new_user_input = True
146
149
self ._start_presence_updates ()
147
150
@@ -1139,10 +1142,16 @@ def _handle_update_message_flags_event(self, event: Event) -> None:
1139
1142
def formatted_local_time (self , timestamp : int ,
1140
1143
* , show_seconds : bool ) -> str :
1141
1144
local_time = datetime .datetime .fromtimestamp (timestamp )
1142
- if show_seconds :
1143
- return local_time .strftime ('%a %b %d %H:%M:%S' )
1145
+ if self .twenty_four_hr_format :
1146
+ if show_seconds :
1147
+ return local_time .strftime ('%a %b %d %H:%M:%S' )
1148
+ else :
1149
+ return local_time .strftime ('%a %b %d %H:%M' )
1144
1150
else :
1145
- return local_time .strftime ('%a %b %d %H:%M' )
1151
+ if show_seconds :
1152
+ return local_time .strftime ('%a %b %d %I:%M:%S %p' )
1153
+ else :
1154
+ return local_time .strftime ('%a %b %d %I:%M %p' )
1146
1155
1147
1156
def _update_rendered_view (self , msg_id : int ) -> None :
1148
1157
"""
@@ -1191,6 +1200,24 @@ def _update_rendered_view(self, msg_id: int) -> None:
1191
1200
self .controller .update_screen ()
1192
1201
return
1193
1202
1203
+ def _handle_update_display_settings (self , event : Event ) -> None :
1204
+ """
1205
+ Handle change to user display setting (Eg: Time format)
1206
+ """
1207
+ assert event ['type' ] == "update_display_settings"
1208
+ view = self .controller .view
1209
+ if event ['setting_name' ] == 'twenty_four_hour_time' :
1210
+ self .twenty_four_hr_format = event ['setting' ]
1211
+ for msg_w in view .message_view .log :
1212
+ msg_box = msg_w .original_widget
1213
+ msg_id = msg_box .message ['id' ]
1214
+ last_msg = msg_box .last_message
1215
+ msg_pos = view .message_view .log .index (msg_w )
1216
+ msg_w_list = create_msg_box_list (self , [msg_id ],
1217
+ last_message = last_msg )
1218
+ view .message_view .log [msg_pos ] = msg_w_list [0 ]
1219
+ self .controller .update_screen ()
1220
+
1194
1221
def _register_desired_events (self , * , fetch_data : bool = False ) -> str :
1195
1222
fetch_types = None if not fetch_data else [
1196
1223
'realm' ,
@@ -1201,6 +1228,7 @@ def _register_desired_events(self, *, fetch_data: bool=False) -> str:
1201
1228
'muted_topics' ,
1202
1229
'realm_user' , # Enables cross_realm_bots
1203
1230
'realm_user_groups' ,
1231
+ 'update_display_settings' ,
1204
1232
# zulip_version and zulip_feature_level are always returned in
1205
1233
# POST /register from Feature level 3.
1206
1234
'zulip_version' ,
0 commit comments