import { PublicUser } from "@spacebar/schemas"; import { Member } from "@spacebar/util"; export interface ChannelOverride { message_notifications: number; mute_config: MuteConfig; muted: boolean; channel_id: string | null; } export interface UserGuildSettings { // channel_overrides: { // channel_id: string; // message_notifications: number; // mute_config: MuteConfig; // muted: boolean; // }[]; channel_overrides: { [channel_id: string]: ChannelOverride; } | null; message_notifications: number; mobile_push: boolean; mute_config: MuteConfig | null; muted: boolean; suppress_everyone: boolean; suppress_roles: boolean; version: number; guild_id: string | null; flags: number; mute_scheduled_events: boolean; hide_muted_channels: boolean; notify_highlights: 0; } export const DefaultUserGuildSettings: UserGuildSettings = { channel_overrides: null, message_notifications: 1, flags: 0, hide_muted_channels: false, mobile_push: true, mute_config: null, mute_scheduled_events: false, muted: false, notify_highlights: 0, suppress_everyone: false, suppress_roles: false, version: 453, // ? guild_id: null, }; export interface MuteConfig { end_time: number; selected_time_window: number; } export type PublicMemberKeys = | "id" | "guild_id" | "nick" | "roles" | "joined_at" | "pending" | "deaf" | "mute" | "premium_since" | "avatar" | "banner" | "bio" | "theme_colors" | "pronouns" | "communication_disabled_until"; export const PublicMemberProjection: PublicMemberKeys[] = [ "id", "guild_id", "nick", "roles", "joined_at", "pending", "deaf", "mute", "premium_since", "avatar", "banner", "bio", "theme_colors", "pronouns", "communication_disabled_until", ]; export type PublicMember = Omit, "roles"> & { user: PublicUser; roles: string[]; // only role ids not objects };