19
19
"""
20
20
21
21
import click
22
+ from click_option_group import RequiredMutuallyExclusiveOptionGroup , optgroup
22
23
23
24
from synadm import cli
24
25
@@ -245,10 +246,13 @@ def members(helper, room_id):
245
246
"--no-purge" , is_flag = True , default = False , show_default = True ,
246
247
help = """Prevent removing of all traces of the room from your
247
248
database.""" )
249
+ @click .option (
250
+ "--v1" , is_flag = True , default = False , show_default = True ,
251
+ help = """Use version 1 of the room delete API instead of version 2""" )
248
252
@click .pass_obj
249
253
@click .pass_context
250
254
def delete (ctx , helper , room_id , new_room_user_id , room_name , message , block ,
251
- no_purge ):
255
+ no_purge , v1 ):
252
256
""" Delete and possibly purge a room.
253
257
"""
254
258
room_details = helper .api .room_details (room_id )
@@ -269,9 +273,14 @@ def delete(ctx, helper, room_id, new_room_user_id, room_name, message, block,
269
273
)
270
274
if sure :
271
275
mxid = helper .generate_mxid (new_room_user_id )
272
- room_del = helper .api .room_delete (
273
- room_id , mxid , room_name ,
274
- message , block , no_purge )
276
+ if v1 :
277
+ room_del = helper .api .room_delete (
278
+ room_id , mxid , room_name ,
279
+ message , block , no_purge )
280
+ else :
281
+ room_del = helper .api .room_delete_v2 (
282
+ room_id , mxid , room_name ,
283
+ message , block , not bool (no_purge ))
275
284
if room_del is None :
276
285
click .echo ("Room not deleted." )
277
286
raise SystemExit (1 )
@@ -280,6 +289,36 @@ def delete(ctx, helper, room_id, new_room_user_id, room_name, message, block,
280
289
click .echo ("Abort." )
281
290
282
291
292
+ @room .command (name = "delete-status" )
293
+ @optgroup .group (
294
+ "Query type" , cls = RequiredMutuallyExclusiveOptionGroup ,
295
+ help = "Query room deletion status via either Room ID or Deletion ID"
296
+ )
297
+ @optgroup .option (
298
+ "--room-id" , "-r" , type = str ,
299
+ help = """The Room ID to query the deletion status for""" )
300
+ @optgroup .option (
301
+ "--delete-id" , "-d" , type = str ,
302
+ help = """The Delete ID to query the deletion status for""" )
303
+ @click .pass_obj
304
+ def delete_status (helper , room_id , delete_id ):
305
+ """ Get room deletion status via either the room ID or the delete ID.
306
+
307
+ This requires the usage of the Room Delete v2 API. If you used v1 of the
308
+ Room Delete API, this is irrelevant.
309
+ """
310
+ output = None
311
+ if room_id :
312
+ output = helper .api .room_delete_v2_status_by_room_id (
313
+ room_id
314
+ )
315
+ if delete_id :
316
+ output = helper .api .room_delete_v2_status_by_delete_id (
317
+ delete_id
318
+ )
319
+ helper .output (output )
320
+
321
+
283
322
@room .command (name = "search" )
284
323
@click .argument ("search-term" , type = str )
285
324
@click .option (
0 commit comments