mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
channel_folders: Add helper function to get all active channel ids.
This commit adds a helper function which returns all active channel ids stored in a set.
This commit is contained in:
committed by
Tim Abbott
parent
62a088c0d1
commit
eda4a14393
@@ -10,6 +10,7 @@ export type ChannelFolder = z.infer<typeof channel_folder_schema>;
|
||||
|
||||
let channel_folder_name_dict: FoldDict<ChannelFolder>;
|
||||
let channel_folder_by_id_dict: Map<number, ChannelFolder>;
|
||||
let active_channel_folder_ids: Set<number>;
|
||||
|
||||
export function clean_up_description(channel_folder: ChannelFolder): void {
|
||||
if (channel_folder.rendered_description !== undefined) {
|
||||
@@ -23,11 +24,15 @@ export function add(channel_folder: ChannelFolder): void {
|
||||
clean_up_description(channel_folder);
|
||||
channel_folder_name_dict.set(channel_folder.name, channel_folder);
|
||||
channel_folder_by_id_dict.set(channel_folder.id, channel_folder);
|
||||
if (!channel_folder.is_archived) {
|
||||
active_channel_folder_ids.add(channel_folder.id);
|
||||
}
|
||||
}
|
||||
|
||||
export function initialize(params: StateData["channel_folders"]): void {
|
||||
channel_folder_name_dict = new FoldDict();
|
||||
channel_folder_by_id_dict = new Map<number, ChannelFolder>();
|
||||
active_channel_folder_ids = new Set<number>();
|
||||
|
||||
for (const channel_folder of params.channel_folders) {
|
||||
add(channel_folder);
|
||||
@@ -47,6 +52,10 @@ export function get_channel_folders(include_archived = false): ChannelFolder[] {
|
||||
.sort((folder_a, folder_b) => folder_a.order - folder_b.order);
|
||||
}
|
||||
|
||||
export function get_active_folder_ids(): Set<number> {
|
||||
return active_channel_folder_ids;
|
||||
}
|
||||
|
||||
/* TODO/channel-folders: Remove when tests are restored */
|
||||
/* istanbul ignore next */
|
||||
export function get_all_folder_ids(): Set<number> {
|
||||
@@ -83,6 +92,9 @@ export function update(event: ChannelFolderUpdateEvent): void {
|
||||
channel_folder.is_archived = event.data.is_archived;
|
||||
channel_folder_name_dict.delete(channel_folder.name);
|
||||
channel_folder_name_dict.set(channel_folder.name, channel_folder);
|
||||
if (channel_folder.is_archived) {
|
||||
active_channel_folder_ids.delete(channel_folder.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,10 @@ run_test("basics", () => {
|
||||
channel_folders.initialize(params);
|
||||
|
||||
assert.deepEqual(channel_folders.get_channel_folders(), [frontend_folder, backend_folder]);
|
||||
assert.deepEqual(
|
||||
channel_folders.get_active_folder_ids(),
|
||||
new Set([frontend_folder.id, backend_folder.id]),
|
||||
);
|
||||
|
||||
const devops_folder = {
|
||||
name: "Devops",
|
||||
|
||||
Reference in New Issue
Block a user