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:
Pratik Chanda
2025-08-11 22:08:36 +05:30
committed by Tim Abbott
parent 62a088c0d1
commit eda4a14393
2 changed files with 16 additions and 0 deletions

View File

@@ -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);
}
} }
} }

View File

@@ -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",