@@ -424,248 +424,3 @@ class UnreadHuddleSnapshot {
424
424
425
425
Map <String , dynamic > toJson () => _$UnreadHuddleSnapshotToJson (this );
426
426
}
427
-
428
- /// Metadata about how to interpret the various group-based permission settings.
429
- ///
430
- /// This is the type that [InitialSnapshot.serverSupportedPermissionSettings]
431
- /// would have, according to the API as it exists as of 2025-08;
432
- /// but that API is documented as unstable and subject to change.
433
- ///
434
- /// For a useful value of this type, see [SupportedPermissionSettings.fixture] .
435
- ///
436
- /// For docs, search for "d_perm" in: https://zulip.com/api/register-queue
437
- @JsonSerializable (fieldRename: FieldRename .snake)
438
- class SupportedPermissionSettings {
439
- final Map <String , PermissionSettingsItem > realm;
440
- final Map <String , PermissionSettingsItem > stream;
441
- final Map <String , PermissionSettingsItem > group;
442
-
443
- /// Metadata about how to interpret certain group-based permission settings,
444
- /// including all those that this client uses, based on "current" servers.
445
- ///
446
- /// "Current" here means as of when this code was written, or last updated;
447
- /// details in comments below. Naturally it'd be better to have an API to
448
- /// get this information from the actual server.
449
- ///
450
- /// Effectively we're counting on it being uncommon for the metadata for a
451
- /// given permission to ever change from one server version to the next,
452
- /// so that the values we take from one server version usually remain valid
453
- /// for all past and future server versions that have the corresponding
454
- /// permission at all.
455
- ///
456
- /// TODO(server): Stabilize [InitialSnapshot.serverSupportedPermissionSettings]
457
- /// or a similar API, and switch to using that. See thread:
458
- /// https://chat.zulip.org/#narrow/channel/378-api-design/topic/server_supported_permission_settings/near/2247549
459
- static SupportedPermissionSettings fixture = SupportedPermissionSettings (
460
- realm: {
461
- // From the server's Realm.REALM_PERMISSION_GROUP_SETTINGS,
462
- // in zerver/models/realms.py. Current as of 6ab30fcce, 2025-08.
463
- 'create_multiuse_invite_group' : PermissionSettingsItem (
464
- // allow_nobody_group=True,
465
- allowEveryoneGroup: false ,
466
- // default_group_name=SystemGroups.ADMINISTRATORS,
467
- ),
468
- 'can_access_all_users_group' : PermissionSettingsItem (
469
- // require_system_group=True,
470
- // allow_nobody_group=False,
471
- allowEveryoneGroup: true ,
472
- // default_group_name=SystemGroups.EVERYONE,
473
- // # Note that user_can_access_all_other_users in the web
474
- // # app is relying on members always have access.
475
- // allowed_system_groups=[SystemGroups.EVERYONE, SystemGroups.MEMBERS],
476
- ),
477
- 'can_add_subscribers_group' : PermissionSettingsItem (
478
- // allow_nobody_group=True,
479
- allowEveryoneGroup: false ,
480
- // default_group_name=SystemGroups.MEMBERS,
481
- ),
482
- 'can_add_custom_emoji_group' : PermissionSettingsItem (
483
- // allow_nobody_group=True,
484
- allowEveryoneGroup: false ,
485
- // default_group_name=SystemGroups.MEMBERS,
486
- ),
487
- 'can_create_bots_group' : PermissionSettingsItem (
488
- // allow_nobody_group=True,
489
- allowEveryoneGroup: false ,
490
- // default_group_name=SystemGroups.MEMBERS,
491
- ),
492
- 'can_create_groups' : PermissionSettingsItem (
493
- // allow_nobody_group=True,
494
- allowEveryoneGroup: false ,
495
- // default_group_name=SystemGroups.MEMBERS,
496
- ),
497
- 'can_create_public_channel_group' : PermissionSettingsItem (
498
- // allow_nobody_group=True,
499
- allowEveryoneGroup: false ,
500
- // default_group_name=SystemGroups.MEMBERS,
501
- ),
502
- 'can_create_private_channel_group' : PermissionSettingsItem (
503
- // allow_nobody_group=True,
504
- allowEveryoneGroup: false ,
505
- // default_group_name=SystemGroups.MEMBERS,
506
- ),
507
- 'can_create_web_public_channel_group' : PermissionSettingsItem (
508
- // require_system_group=True,
509
- // allow_nobody_group=True,
510
- allowEveryoneGroup: false ,
511
- // default_group_name=SystemGroups.OWNERS,
512
- // allowed_system_groups=[
513
- // SystemGroups.MODERATORS,
514
- // SystemGroups.ADMINISTRATORS,
515
- // SystemGroups.OWNERS,
516
- // SystemGroups.NOBODY,
517
- // ],
518
- ),
519
- 'can_create_write_only_bots_group' : PermissionSettingsItem (
520
- // allow_nobody_group=True,
521
- allowEveryoneGroup: false ,
522
- // default_group_name=SystemGroups.MEMBERS,
523
- ),
524
- 'can_delete_any_message_group' : PermissionSettingsItem (
525
- // allow_nobody_group=True,
526
- allowEveryoneGroup: false ,
527
- // default_group_name=SystemGroups.ADMINISTRATORS,
528
- ),
529
- 'can_delete_own_message_group' : PermissionSettingsItem (
530
- // allow_nobody_group=True,
531
- allowEveryoneGroup: true ,
532
- // default_group_name=SystemGroups.EVERYONE,
533
- ),
534
- 'can_invite_users_group' : PermissionSettingsItem (
535
- // allow_nobody_group=True,
536
- allowEveryoneGroup: false ,
537
- // default_group_name=SystemGroups.MEMBERS,
538
- ),
539
- 'can_manage_all_groups' : PermissionSettingsItem (
540
- // allow_nobody_group=False,
541
- allowEveryoneGroup: false ,
542
- // default_group_name=SystemGroups.OWNERS,
543
- ),
544
- 'can_manage_billing_group' : PermissionSettingsItem (
545
- // allow_nobody_group=False,
546
- allowEveryoneGroup: false ,
547
- // default_group_name=SystemGroups.ADMINISTRATORS,
548
- ),
549
- 'can_mention_many_users_group' : PermissionSettingsItem (
550
- // allow_nobody_group=True,
551
- allowEveryoneGroup: true ,
552
- // default_group_name=SystemGroups.ADMINISTRATORS,
553
- ),
554
- 'can_move_messages_between_channels_group' : PermissionSettingsItem (
555
- // allow_nobody_group=True,
556
- allowEveryoneGroup: false ,
557
- // default_group_name=SystemGroups.MEMBERS,
558
- ),
559
- 'can_move_messages_between_topics_group' : PermissionSettingsItem (
560
- // allow_nobody_group=True,
561
- allowEveryoneGroup: true ,
562
- // default_group_name=SystemGroups.EVERYONE,
563
- ),
564
- 'can_resolve_topics_group' : PermissionSettingsItem (
565
- // allow_nobody_group=True,
566
- allowEveryoneGroup: true ,
567
- // default_group_name=SystemGroups.EVERYONE,
568
- ),
569
- 'can_set_delete_message_policy_group' : PermissionSettingsItem (
570
- // allow_nobody_group=True,
571
- allowEveryoneGroup: false ,
572
- // default_group_name=SystemGroups.MODERATORS,
573
- ),
574
- 'can_set_topics_policy_group' : PermissionSettingsItem (
575
- // allow_nobody_group=True,
576
- allowEveryoneGroup: true ,
577
- // default_group_name=SystemGroups.MEMBERS,
578
- ),
579
- 'can_summarize_topics_group' : PermissionSettingsItem (
580
- // allow_nobody_group=True,
581
- allowEveryoneGroup: true ,
582
- // default_group_name=SystemGroups.EVERYONE,
583
- ),
584
- 'direct_message_initiator_group' : PermissionSettingsItem (
585
- // allow_nobody_group=True,
586
- allowEveryoneGroup: true ,
587
- // default_group_name=SystemGroups.EVERYONE,
588
- ),
589
- 'direct_message_permission_group' : PermissionSettingsItem (
590
- // allow_nobody_group=True,
591
- allowEveryoneGroup: true ,
592
- // default_group_name=SystemGroups.EVERYONE,
593
- ),
594
- },
595
- group: {}, // Please go ahead and fill this in when we come to need it.
596
- stream: {
597
- // From the server's Stream.stream_permission_group_settings,
598
- // in zerver/models/streams.py. Current as of f9dc13014, 2025-08.
599
- "can_add_subscribers_group" : PermissionSettingsItem (
600
- // allow_nobody_group=True,
601
- allowEveryoneGroup: false ,
602
- // default_group_name=SystemGroups.NOBODY,
603
- ),
604
- "can_administer_channel_group" : PermissionSettingsItem (
605
- // allow_nobody_group=True,
606
- allowEveryoneGroup: false ,
607
- // default_group_name="stream_creator_or_nobody",
608
- ),
609
- "can_delete_any_message_group" : PermissionSettingsItem (
610
- // allow_nobody_group=True,
611
- allowEveryoneGroup: true ,
612
- // default_group_name=SystemGroups.NOBODY,
613
- ),
614
- "can_delete_own_message_group" : PermissionSettingsItem (
615
- // allow_nobody_group=True,
616
- allowEveryoneGroup: true ,
617
- // default_group_name=SystemGroups.NOBODY,
618
- ),
619
- "can_move_messages_out_of_channel_group" : PermissionSettingsItem (
620
- // allow_nobody_group=True,
621
- allowEveryoneGroup: true ,
622
- // default_group_name=SystemGroups.NOBODY,
623
- ),
624
- "can_move_messages_within_channel_group" : PermissionSettingsItem (
625
- // allow_nobody_group=True,
626
- allowEveryoneGroup: true ,
627
- // default_group_name=SystemGroups.NOBODY,
628
- ),
629
- "can_remove_subscribers_group" : PermissionSettingsItem (
630
- // allow_nobody_group=True,
631
- allowEveryoneGroup: true ,
632
- // default_group_name=SystemGroups.ADMINISTRATORS,
633
- ),
634
- "can_send_message_group" : PermissionSettingsItem (
635
- // allow_nobody_group=True,
636
- allowEveryoneGroup: true ,
637
- // default_group_name=SystemGroups.EVERYONE,
638
- ),
639
- "can_subscribe_group" : PermissionSettingsItem (
640
- // allow_nobody_group=True,
641
- allowEveryoneGroup: false ,
642
- // default_group_name=SystemGroups.NOBODY,
643
- ),
644
- "can_resolve_topics_group" : PermissionSettingsItem (
645
- // allow_nobody_group=True,
646
- allowEveryoneGroup: true ,
647
- // default_group_name=SystemGroups.NOBODY,
648
- ),
649
- },
650
- );
651
-
652
- SupportedPermissionSettings ({required this .realm, required this .stream, required this .group});
653
-
654
- factory SupportedPermissionSettings .fromJson (Map <String , dynamic > json) =>
655
- _$SupportedPermissionSettingsFromJson (json);
656
-
657
- Map <String , dynamic > toJson () => _$SupportedPermissionSettingsToJson (this );
658
- }
659
-
660
- @JsonSerializable (fieldRename: FieldRename .snake)
661
- class PermissionSettingsItem {
662
- final bool allowEveryoneGroup;
663
- // also other fields not yet used
664
-
665
- PermissionSettingsItem ({required this .allowEveryoneGroup});
666
-
667
- factory PermissionSettingsItem .fromJson (Map <String , dynamic > json) =>
668
- _$PermissionSettingsItemFromJson (json);
669
-
670
- Map <String , dynamic > toJson () => _$PermissionSettingsItemToJson (this );
671
- }
0 commit comments