mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 06:23:38 +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_name_dict: FoldDict<ChannelFolder>;
|
||||||
let channel_folder_by_id_dict: Map<number, 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 {
|
export function clean_up_description(channel_folder: ChannelFolder): void {
|
||||||
if (channel_folder.rendered_description !== undefined) {
|
if (channel_folder.rendered_description !== undefined) {
|
||||||
@@ -23,11 +24,15 @@ export function add(channel_folder: ChannelFolder): void {
|
|||||||
clean_up_description(channel_folder);
|
clean_up_description(channel_folder);
|
||||||
channel_folder_name_dict.set(channel_folder.name, channel_folder);
|
channel_folder_name_dict.set(channel_folder.name, channel_folder);
|
||||||
channel_folder_by_id_dict.set(channel_folder.id, 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 {
|
export function initialize(params: StateData["channel_folders"]): void {
|
||||||
channel_folder_name_dict = new FoldDict();
|
channel_folder_name_dict = new FoldDict();
|
||||||
channel_folder_by_id_dict = new Map<number, ChannelFolder>();
|
channel_folder_by_id_dict = new Map<number, ChannelFolder>();
|
||||||
|
active_channel_folder_ids = new Set<number>();
|
||||||
|
|
||||||
for (const channel_folder of params.channel_folders) {
|
for (const channel_folder of params.channel_folders) {
|
||||||
add(channel_folder);
|
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);
|
.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 */
|
/* TODO/channel-folders: Remove when tests are restored */
|
||||||
/* istanbul ignore next */
|
/* istanbul ignore next */
|
||||||
export function get_all_folder_ids(): Set<number> {
|
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.is_archived = event.data.is_archived;
|
||||||
channel_folder_name_dict.delete(channel_folder.name);
|
channel_folder_name_dict.delete(channel_folder.name);
|
||||||
channel_folder_name_dict.set(channel_folder.name, channel_folder);
|
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);
|
channel_folders.initialize(params);
|
||||||
|
|
||||||
assert.deepEqual(channel_folders.get_channel_folders(), [frontend_folder, backend_folder]);
|
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 = {
|
const devops_folder = {
|
||||||
name: "Devops",
|
name: "Devops",
|
||||||
|
|||||||
Reference in New Issue
Block a user