@@ -424,248 +424,3 @@ class UnreadHuddleSnapshot {
424424
425425 Map <String , dynamic > toJson () => _$UnreadHuddleSnapshotToJson (this );
426426}
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