mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	stream_data: Track web public streams in current org.
This commit tracks all available web-public stream_ids in org.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							ec82c543fe
						
					
				
				
					commit
					b0eefb8a31
				
			@@ -124,6 +124,7 @@ let stream_info: BinaryDict<StreamSubscription>;
 | 
				
			|||||||
const stream_ids_by_name = new FoldDict<number>();
 | 
					const stream_ids_by_name = new FoldDict<number>();
 | 
				
			||||||
const stream_ids_by_old_names = new FoldDict<number>();
 | 
					const stream_ids_by_old_names = new FoldDict<number>();
 | 
				
			||||||
const default_stream_ids = new Set<number>();
 | 
					const default_stream_ids = new Set<number>();
 | 
				
			||||||
 | 
					const realm_web_public_stream_ids = new Set<number>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function clear_subscriptions(): void {
 | 
					export function clear_subscriptions(): void {
 | 
				
			||||||
    // This function is only used once at page load, and then
 | 
					    // This function is only used once at page load, and then
 | 
				
			||||||
@@ -167,6 +168,9 @@ export function add_sub(sub: StreamSubscription): void {
 | 
				
			|||||||
    // We use create_streams for new streams in live-update events.
 | 
					    // We use create_streams for new streams in live-update events.
 | 
				
			||||||
    stream_info.set(sub.stream_id, sub);
 | 
					    stream_info.set(sub.stream_id, sub);
 | 
				
			||||||
    stream_ids_by_name.set(sub.name, sub.stream_id);
 | 
					    stream_ids_by_name.set(sub.name, sub.stream_id);
 | 
				
			||||||
 | 
					    if (sub.is_web_public) {
 | 
				
			||||||
 | 
					        realm_web_public_stream_ids.add(sub.stream_id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    sub_store.add_hydrated_sub(sub.stream_id, sub);
 | 
					    sub_store.add_hydrated_sub(sub.stream_id, sub);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -326,6 +330,7 @@ export function delete_sub(stream_id: number): void {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sub_store.delete_sub(stream_id);
 | 
					    sub_store.delete_sub(stream_id);
 | 
				
			||||||
 | 
					    realm_web_public_stream_ids.delete(stream_id);
 | 
				
			||||||
    stream_info.delete(stream_id);
 | 
					    stream_info.delete(stream_id);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -434,6 +439,11 @@ export function update_stream_privacy(
 | 
				
			|||||||
    sub.invite_only = values.invite_only;
 | 
					    sub.invite_only = values.invite_only;
 | 
				
			||||||
    sub.history_public_to_subscribers = values.history_public_to_subscribers;
 | 
					    sub.history_public_to_subscribers = values.history_public_to_subscribers;
 | 
				
			||||||
    sub.is_web_public = values.is_web_public;
 | 
					    sub.is_web_public = values.is_web_public;
 | 
				
			||||||
 | 
					    if (sub.is_web_public) {
 | 
				
			||||||
 | 
					        realm_web_public_stream_ids.add(sub.stream_id);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        realm_web_public_stream_ids.delete(sub.stream_id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function update_message_retention_setting(
 | 
					export function update_message_retention_setting(
 | 
				
			||||||
@@ -1084,6 +1094,9 @@ export function create_sub_from_server_data(
 | 
				
			|||||||
    clean_up_description(sub);
 | 
					    clean_up_description(sub);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stream_info.set(sub.stream_id, sub);
 | 
					    stream_info.set(sub.stream_id, sub);
 | 
				
			||||||
 | 
					    if (sub.is_web_public) {
 | 
				
			||||||
 | 
					        realm_web_public_stream_ids.add(sub.stream_id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    stream_ids_by_name.set(sub.name, sub.stream_id);
 | 
					    stream_ids_by_name.set(sub.name, sub.stream_id);
 | 
				
			||||||
    sub_store.add_hydrated_sub(sub.stream_id, sub);
 | 
					    sub_store.add_hydrated_sub(sub.stream_id, sub);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -825,7 +825,7 @@ test("stream_settings", ({override}) => {
 | 
				
			|||||||
    assert.equal(sub_rows[0].history_public_to_subscribers, true);
 | 
					    assert.equal(sub_rows[0].history_public_to_subscribers, true);
 | 
				
			||||||
    assert.equal(sub_rows[0].message_retention_days, 10);
 | 
					    assert.equal(sub_rows[0].message_retention_days, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const sub = stream_data.get_sub("a");
 | 
					    let sub = stream_data.get_sub("a");
 | 
				
			||||||
    stream_data.update_stream_privacy(sub, {
 | 
					    stream_data.update_stream_privacy(sub, {
 | 
				
			||||||
        invite_only: false,
 | 
					        invite_only: false,
 | 
				
			||||||
        history_public_to_subscribers: false,
 | 
					        history_public_to_subscribers: false,
 | 
				
			||||||
@@ -859,6 +859,12 @@ test("stream_settings", ({override}) => {
 | 
				
			|||||||
    assert.equal(sub_rows[0].name, "c");
 | 
					    assert.equal(sub_rows[0].name, "c");
 | 
				
			||||||
    assert.equal(sub_rows[1].name, "a");
 | 
					    assert.equal(sub_rows[1].name, "a");
 | 
				
			||||||
    assert.equal(sub_rows.length, 2);
 | 
					    assert.equal(sub_rows.length, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sub = stream_data.get_sub("b");
 | 
				
			||||||
 | 
					    stream_data.update_stream_privacy(sub, {
 | 
				
			||||||
 | 
					        is_web_public: true,
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    assert.equal(sub.is_web_public, true);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test("default_stream_names", () => {
 | 
					test("default_stream_names", () => {
 | 
				
			||||||
@@ -1232,6 +1238,7 @@ test("create_sub", () => {
 | 
				
			|||||||
        stream_id: 102,
 | 
					        stream_id: 102,
 | 
				
			||||||
        name: "India",
 | 
					        name: "India",
 | 
				
			||||||
        subscribed: true,
 | 
					        subscribed: true,
 | 
				
			||||||
 | 
					        is_web_public: true,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const canada = {
 | 
					    const canada = {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user