Files
mattermost-mobile/types/api/channels.d.ts
Elias Nahum 2fc1386b78 feat: Channel notification preferences (#7160)
* feat: Channel notification preferences

* feedback review

* use button color for the icon
2023-02-24 12:41:36 +02:00

128 lines
3.2 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
type ChannelType = 'O' | 'P' | 'D' | 'G';
type ChannelStats = {
channel_id: string;
guest_count: number;
member_count: number;
pinnedpost_count: number;
};
type NotificationLevel = 'default' | 'all' | 'mention' | 'none';
type ChannelNotifyProps = {
desktop: NotificationLevel;
email: NotificationLevel;
mark_unread: 'all' | 'mention';
push: NotificationLevel;
ignore_channel_mentions: 'default' | 'off' | 'on';
push_threads: 'all' | 'mention';
};
type Channel = {
id: string;
create_at: number;
update_at: number;
delete_at: number;
team_id: string;
type: ChannelType;
display_name: string;
name: string;
header: string;
purpose: string;
last_post_at: number;
last_root_post_at?: number;
total_msg_count: number;
total_msg_count_root?: number;
extra_update_at: number;
creator_id: string;
scheme_id: string|null;
isCurrent?: boolean;
teammate_id?: string;
status?: string;
fake?: boolean;
group_constrained: boolean|null;
shared: boolean;
};
type ChannelWithTeamData = Channel & {
team_display_name: string;
team_name: string;
team_update_at: number;
}
type ChannelMember = {
id?: string;
channel_id: string;
user_id: string;
scheme_admin?: boolean;
}
type ChannelMembership = {
id?: string;
channel_id: string;
user_id: string;
roles: string;
last_viewed_at: number;
msg_count: number;
msg_count_root?: number;
mention_count: number;
mention_count_root?: number;
notify_props: Partial<ChannelNotifyProps>;
last_post_at?: number;
last_root_post_at?: number;
last_update_at: number;
scheme_user?: boolean;
scheme_admin?: boolean;
post_root_id?: string;
is_unread?: boolean;
manually_unread?: boolean;
};
type ChannelUnread = {
channel_id: string;
user_id: string;
team_id: string;
msg_count: number;
mention_count: number;
last_viewed_at: number;
deltaMsgs: number;
};
type ChannelsState = {
currentChannelId: string;
channels: IDMappedObjects<Channel>;
channelsInTeam: RelationOneToMany<Team, Channel>;
myMembers: RelationOneToOne<Channel, ChannelMembership>;
membersInChannel: RelationOneToOne<Channel, UserIDMappedObjects<ChannelMembership>>;
stats: RelationOneToOne<Channel, ChannelStats>;
groupsAssociatedToChannel: any;
totalCount: number;
manuallyUnread: RelationOneToOne<Channel, boolean>;
channelMemberCountsByGroup: RelationOneToOne<Channel, ChannelMemberCountsByGroup>;
};
type ChannelModeration = {
name: string;
roles: {
guests?: {
value: boolean;
enabled: boolean;
};
members: {
value: boolean;
enabled: boolean;
};
};
};
type ChannelModerationPatch = {
name: string;
roles: {
guests?: boolean;
members?: boolean;
};
};
type ChannelMemberCountByGroup = {
group_id: string;
channel_member_count: number;
channel_member_timezones_count: number;
};
type ChannelMemberCountsByGroup = Record<string, ChannelMemberCountByGroup>;