mirror of
https://github.com/zulip/zulip.git
synced 2025-10-22 20:42:14 +00:00
streams: Include only IDs in default streams data.
Clients do not need complete stream objects in the default streams data since they already have that via streams and subscriptions data.
This commit is contained in:
@@ -20,6 +20,12 @@ format used by the Zulip server that they are interacting with.
|
||||
|
||||
## Changes in Zulip 10.0
|
||||
|
||||
**Feature level 330**
|
||||
|
||||
* [`POST /register`](/api/register-queue), [`GET /events`](/api/get-events):
|
||||
Default channels data only includes channel IDs now instead of full
|
||||
channel data.
|
||||
|
||||
**Feature level 329**
|
||||
|
||||
* [`PATCH /realm/user_settings_defaults`](/api/update-realm-user-settings-defaults),
|
||||
|
@@ -2,11 +2,7 @@ import {z} from "zod";
|
||||
|
||||
import {server_add_bot_schema} from "./bot_types.ts";
|
||||
import {realm_default_settings_schema} from "./realm_user_settings_defaults.ts";
|
||||
import {
|
||||
api_stream_subscription_schema,
|
||||
never_subscribed_stream_schema,
|
||||
stream_schema,
|
||||
} from "./stream_types.ts";
|
||||
import {api_stream_subscription_schema, never_subscribed_stream_schema} from "./stream_types.ts";
|
||||
import {group_setting_value_schema} from "./types.ts";
|
||||
import {user_settings_schema} from "./user_settings.ts";
|
||||
import {user_status_schema} from "./user_status_types.ts";
|
||||
@@ -477,7 +473,7 @@ export const state_data_schema = z
|
||||
subscriptions: z.array(api_stream_subscription_schema),
|
||||
unsubscribed: z.array(api_stream_subscription_schema),
|
||||
never_subscribed: z.array(never_subscribed_stream_schema),
|
||||
realm_default_streams: z.array(stream_schema),
|
||||
realm_default_streams: z.array(z.number()),
|
||||
})
|
||||
.transform((stream_data) => ({stream_data})),
|
||||
)
|
||||
|
@@ -698,11 +698,11 @@ export function is_web_public_by_stream_id(stream_id: number): boolean {
|
||||
return sub.is_web_public;
|
||||
}
|
||||
|
||||
export function set_realm_default_streams(realm_default_streams: Stream[]): void {
|
||||
export function set_realm_default_streams(realm_default_streams: number[]): void {
|
||||
default_stream_ids.clear();
|
||||
|
||||
for (const stream of realm_default_streams) {
|
||||
default_stream_ids.add(stream.stream_id);
|
||||
for (const stream_id of realm_default_streams) {
|
||||
default_stream_ids.add(stream_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -165,7 +165,7 @@ exports.fixtures = {
|
||||
|
||||
default_streams: {
|
||||
type: "default_streams",
|
||||
default_streams: [streams.devel, streams.test],
|
||||
default_streams: [streams.devel.stream_id, streams.test.stream_id],
|
||||
},
|
||||
|
||||
delete_message: {
|
||||
|
@@ -199,7 +199,7 @@ test("basics", () => {
|
||||
assert.equal(sub_store.maybe_get_stream_name(social.stream_id), "social");
|
||||
assert.equal(sub_store.maybe_get_stream_name(42), undefined);
|
||||
|
||||
stream_data.set_realm_default_streams([denmark]);
|
||||
stream_data.set_realm_default_streams([denmark.stream_id]);
|
||||
assert.ok(stream_data.is_default_stream_id(denmark.stream_id));
|
||||
assert.ok(!stream_data.is_default_stream_id(social.stream_id));
|
||||
assert.ok(!stream_data.is_default_stream_id(999999));
|
||||
@@ -647,7 +647,7 @@ test("default_stream_names", () => {
|
||||
invite_only: false,
|
||||
};
|
||||
|
||||
stream_data.set_realm_default_streams([announce, general]);
|
||||
stream_data.set_realm_default_streams([announce.stream_id, general.stream_id]);
|
||||
stream_data.add_sub(announce);
|
||||
stream_data.add_sub(public_stream);
|
||||
stream_data.add_sub(private_stream);
|
||||
@@ -934,7 +934,7 @@ test("remove_default_stream", () => {
|
||||
};
|
||||
|
||||
stream_data.add_sub(remove_me);
|
||||
stream_data.set_realm_default_streams([remove_me]);
|
||||
stream_data.set_realm_default_streams([remove_me.stream_id]);
|
||||
stream_data.remove_default_stream(remove_me.stream_id);
|
||||
assert.ok(!stream_data.is_default_stream_id(remove_me.stream_id));
|
||||
});
|
||||
@@ -1093,7 +1093,7 @@ test("get_invite_stream_data", ({override}) => {
|
||||
override(current_user, "is_admin", true);
|
||||
|
||||
stream_data.add_sub(orie);
|
||||
stream_data.set_realm_default_streams([orie]);
|
||||
stream_data.set_realm_default_streams([orie.stream_id]);
|
||||
|
||||
const expected_list = [
|
||||
{
|
||||
|
@@ -4,10 +4,7 @@ from typing import Any
|
||||
from django.db import transaction
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
from zerver.lib.default_streams import (
|
||||
get_default_stream_ids_for_realm,
|
||||
get_default_streams_for_realm_as_dicts,
|
||||
)
|
||||
from zerver.lib.default_streams import get_default_stream_ids_for_realm
|
||||
from zerver.lib.exceptions import JsonableError
|
||||
from zerver.models import DefaultStream, DefaultStreamGroup, Realm, Stream
|
||||
from zerver.models.streams import get_default_stream_groups
|
||||
@@ -55,7 +52,7 @@ def lookup_default_stream_groups(
|
||||
def notify_default_streams(realm: Realm) -> None:
|
||||
event = dict(
|
||||
type="default_streams",
|
||||
default_streams=get_default_streams_for_realm_as_dicts(realm.id),
|
||||
default_streams=list(get_default_stream_ids_for_realm(realm.id)),
|
||||
)
|
||||
send_event_on_commit(realm, event, active_non_guest_user_ids(realm.id))
|
||||
|
||||
|
@@ -228,7 +228,7 @@ check_default_stream_groups = make_checker(default_stream_groups_event)
|
||||
default_streams_event = event_dict_type(
|
||||
required_keys=[
|
||||
("type", Equals("default_streams")),
|
||||
("default_streams", ListType(DictType(default_stream_fields))),
|
||||
("default_streams", ListType(int)),
|
||||
]
|
||||
)
|
||||
check_default_streams = make_checker(default_streams_event)
|
||||
|
@@ -20,7 +20,7 @@ from zerver.lib.alert_words import user_alert_words
|
||||
from zerver.lib.avatar import avatar_url
|
||||
from zerver.lib.bot_config import load_bot_config_template
|
||||
from zerver.lib.compatibility import is_outdated_server
|
||||
from zerver.lib.default_streams import get_default_streams_for_realm_as_dicts
|
||||
from zerver.lib.default_streams import get_default_stream_ids_for_realm
|
||||
from zerver.lib.exceptions import JsonableError
|
||||
from zerver.lib.external_accounts import get_default_external_accounts
|
||||
from zerver.lib.integrations import (
|
||||
@@ -713,7 +713,7 @@ def fetch_initial_state_data(
|
||||
# doesn't have any.
|
||||
state["realm_default_streams"] = []
|
||||
else:
|
||||
state["realm_default_streams"] = get_default_streams_for_realm_as_dicts(realm.id)
|
||||
state["realm_default_streams"] = list(get_default_stream_ids_for_realm(realm.id))
|
||||
|
||||
if want("default_stream_groups"):
|
||||
if settings_user.is_guest:
|
||||
@@ -1020,8 +1020,8 @@ def apply_event(
|
||||
if state["is_guest"]:
|
||||
state["realm_default_streams"] = []
|
||||
else:
|
||||
state["realm_default_streams"] = get_default_streams_for_realm_as_dicts(
|
||||
user_profile.realm_id
|
||||
state["realm_default_streams"] = list(
|
||||
get_default_stream_ids_for_realm(user_profile.realm_id)
|
||||
)
|
||||
|
||||
for field in ["delivery_email", "email", "full_name", "is_billing_admin"]:
|
||||
|
@@ -2085,34 +2085,19 @@ paths:
|
||||
default_streams:
|
||||
type: array
|
||||
description: |
|
||||
An array of dictionaries where each dictionary
|
||||
contains details about a single default channel.
|
||||
An array of IDs of all the [default channels](/help/set-default-streams-for-new-users)
|
||||
in the organization.
|
||||
|
||||
**Changes**: Before Zulip 10.0 (feature level 330),
|
||||
we sent array of dictionaries where each dictionary
|
||||
contained details about a single default stream for
|
||||
the Zulip organization.
|
||||
items:
|
||||
$ref: "#/components/schemas/DefaultChannel"
|
||||
type: integer
|
||||
example:
|
||||
{
|
||||
"type": "default_streams",
|
||||
"default_streams":
|
||||
[
|
||||
{
|
||||
"name": "Scotland",
|
||||
"stream_id": 3,
|
||||
"is_archived": false,
|
||||
"description": "Located in the United Kingdom",
|
||||
"rendered_description": "<p>Located in the United Kingdom</p>",
|
||||
"date_created": 1691057093,
|
||||
"creator_id": 8,
|
||||
"invite_only": false,
|
||||
"is_web_public": false,
|
||||
"stream_post_policy": 1,
|
||||
"history_public_to_subscribers": true,
|
||||
"first_message_id": 1,
|
||||
"is_recently_active": true,
|
||||
"message_retention_days": null,
|
||||
"is_announcement_only": false,
|
||||
"can_remove_subscribers_group": 2,
|
||||
},
|
||||
],
|
||||
"default_streams": [2, 3],
|
||||
"id": 0,
|
||||
}
|
||||
- type: object
|
||||
@@ -15104,13 +15089,16 @@ paths:
|
||||
realm_default_streams:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/DefaultChannel"
|
||||
type: integer
|
||||
description: |
|
||||
Present if `default_streams` is present in `fetch_event_types`.
|
||||
|
||||
An array of dictionaries where each dictionary contains details
|
||||
about a single [default channel](/help/set-default-channels-for-new-users)
|
||||
for the Zulip organization.
|
||||
An array of IDs of all the [default channels](/help/set-default-streams-for-new-users)
|
||||
in the organization.
|
||||
|
||||
**Changes**: Before Zulip 10.0 (feature level 330), we sent
|
||||
array of dictionaries where each dictionary contained details
|
||||
about a single default stream for the Zulip organization.
|
||||
realm_default_stream_groups:
|
||||
type: array
|
||||
items:
|
||||
|
Reference in New Issue
Block a user