Files
zulip/static/js/sub_store.ts
Sahil Batra af01107b59 sub_store: Remove role field and SubscriptionRole type.
This commit removes role field from StreamSubscription
type and also removes SubscriptionRole type since we are
not moving forward with stream administrator concept and
instead working on new permssions model as per #19525.
2022-07-13 17:07:44 -07:00

78 lines
2.0 KiB
TypeScript

import * as blueslip from "./blueslip";
export const enum StreamPostPolicy {
EVERYONE = 1,
ADMINS = 2,
RESTRICT_NEW_MEMBERS = 3,
MODERATORS = 4,
}
export type Stream = {
date_created: number;
description: string;
first_message_id: number | null;
history_public_to_subscribers: boolean;
invite_only: boolean;
is_announcement_only: boolean;
is_web_public: boolean;
message_retention_days: number | null;
name: string;
rendered_description: string;
stream_id: number;
stream_post_policy: StreamPostPolicy;
};
export type StreamSubscription = Stream & {
audible_notifications: boolean | null;
color: string;
desktop_notifications: boolean | null;
email_address: string;
email_notifications: boolean | null;
in_home_view: boolean;
is_muted: boolean;
pin_to_top: boolean;
push_notifications: boolean | null;
stream_weekly_traffic: number | null;
subscribers?: number[];
wildcard_mentions_notify: boolean | null;
};
const subs_by_stream_id = new Map<number, StreamSubscription>();
export function get(stream_id: number): StreamSubscription | undefined {
return subs_by_stream_id.get(stream_id);
}
export function validate_stream_ids(stream_ids: number[]): number[] {
const good_ids = [];
const bad_ids = [];
for (const stream_id of stream_ids) {
if (subs_by_stream_id.has(stream_id)) {
good_ids.push(stream_id);
} else {
bad_ids.push(stream_id);
}
}
if (bad_ids.length > 0) {
blueslip.warn(`We have untracked stream_ids: ${bad_ids.toString()}`);
}
return good_ids;
}
export function clear(): void {
subs_by_stream_id.clear();
}
export function delete_sub(stream_id: number): void {
subs_by_stream_id.delete(stream_id);
}
export function add_hydrated_sub(stream_id: number, sub: StreamSubscription): void {
// The only code that should call this directly is
// in stream_data.js. Grep there to find callers.
subs_by_stream_id.set(stream_id, sub);
}