summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/slack-go/slack/info.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/slack-go/slack/info.go')
-rw-r--r--vendor/github.com/slack-go/slack/info.go465
1 files changed, 369 insertions, 96 deletions
diff --git a/vendor/github.com/slack-go/slack/info.go b/vendor/github.com/slack-go/slack/info.go
index 31f459f1..ec706240 100644
--- a/vendor/github.com/slack-go/slack/info.go
+++ b/vendor/github.com/slack-go/slack/info.go
@@ -2,108 +2,381 @@ package slack
import (
"bytes"
+ "context"
"fmt"
+ "net/url"
"strconv"
+ "strings"
"time"
)
-// UserPrefs needs to be implemented
+type UserPrefsCarrier struct {
+ SlackResponse
+ UserPrefs *UserPrefs `json:"prefs"`
+}
+
+// UserPrefs carries a bunch of user settings including some unknown types
type UserPrefs struct {
- // "highlight_words":"",
- // "user_colors":"",
- // "color_names_in_list":true,
- // "growls_enabled":true,
- // "tz":"Europe\/London",
- // "push_dm_alert":true,
- // "push_mention_alert":true,
- // "push_everything":true,
- // "push_idle_wait":2,
- // "push_sound":"b2.mp3",
- // "push_loud_channels":"",
- // "push_mention_channels":"",
- // "push_loud_channels_set":"",
- // "email_alerts":"instant",
- // "email_alerts_sleep_until":0,
- // "email_misc":false,
- // "email_weekly":true,
- // "welcome_message_hidden":false,
- // "all_channels_loud":true,
- // "loud_channels":"",
- // "never_channels":"",
- // "loud_channels_set":"",
- // "show_member_presence":true,
- // "search_sort":"timestamp",
- // "expand_inline_imgs":true,
- // "expand_internal_inline_imgs":true,
- // "expand_snippets":false,
- // "posts_formatting_guide":true,
- // "seen_welcome_2":true,
- // "seen_ssb_prompt":false,
- // "search_only_my_channels":false,
- // "emoji_mode":"default",
- // "has_invited":true,
- // "has_uploaded":false,
- // "has_created_channel":true,
- // "search_exclude_channels":"",
- // "messages_theme":"default",
- // "webapp_spellcheck":true,
- // "no_joined_overlays":false,
- // "no_created_overlays":true,
- // "dropbox_enabled":false,
- // "seen_user_menu_tip_card":true,
- // "seen_team_menu_tip_card":true,
- // "seen_channel_menu_tip_card":true,
- // "seen_message_input_tip_card":true,
- // "seen_channels_tip_card":true,
- // "seen_domain_invite_reminder":false,
- // "seen_member_invite_reminder":false,
- // "seen_flexpane_tip_card":true,
- // "seen_search_input_tip_card":true,
- // "mute_sounds":false,
- // "arrow_history":false,
- // "tab_ui_return_selects":true,
- // "obey_inline_img_limit":true,
- // "new_msg_snd":"knock_brush.mp3",
- // "collapsible":false,
- // "collapsible_by_click":true,
- // "require_at":false,
- // "mac_ssb_bounce":"",
- // "mac_ssb_bullet":true,
- // "win_ssb_bullet":true,
- // "expand_non_media_attachments":true,
- // "show_typing":true,
- // "pagekeys_handled":true,
- // "last_snippet_type":"",
- // "display_real_names_override":0,
- // "time24":false,
- // "enter_is_special_in_tbt":false,
- // "graphic_emoticons":false,
- // "convert_emoticons":true,
- // "autoplay_chat_sounds":true,
- // "ss_emojis":true,
- // "sidebar_behavior":"",
- // "mark_msgs_read_immediately":true,
- // "start_scroll_at_oldest":true,
- // "snippet_editor_wrap_long_lines":false,
- // "ls_disabled":false,
- // "sidebar_theme":"default",
- // "sidebar_theme_custom_values":"",
- // "f_key_search":false,
- // "k_key_omnibox":true,
- // "speak_growls":false,
- // "mac_speak_voice":"com.apple.speech.synthesis.voice.Alex",
- // "mac_speak_speed":250,
- // "comma_key_prefs":false,
- // "at_channel_suppressed_channels":"",
- // "push_at_channel_suppressed_channels":"",
- // "prompted_for_email_disabling":false,
- // "full_text_extracts":false,
- // "no_text_in_notifications":false,
- // "muted_channels":"",
- // "no_macssb1_banner":false,
- // "privacy_policy_seen":true,
- // "search_exclude_bots":false,
- // "fuzzy_matching":false
+ UserColors string `json:"user_colors,omitempty"`
+ ColorNamesInList bool `json:"color_names_in_list,omitempty"`
+ // Keyboard UnknownType `json:"keyboard"`
+ EmailAlerts string `json:"email_alerts,omitempty"`
+ EmailAlertsSleepUntil int `json:"email_alerts_sleep_until,omitempty"`
+ EmailTips bool `json:"email_tips,omitempty"`
+ EmailWeekly bool `json:"email_weekly,omitempty"`
+ EmailOffers bool `json:"email_offers,omitempty"`
+ EmailResearch bool `json:"email_research,omitempty"`
+ EmailDeveloper bool `json:"email_developer,omitempty"`
+ WelcomeMessageHidden bool `json:"welcome_message_hidden,omitempty"`
+ SearchSort string `json:"search_sort,omitempty"`
+ SearchFileSort string `json:"search_file_sort,omitempty"`
+ SearchChannelSort string `json:"search_channel_sort,omitempty"`
+ SearchPeopleSort string `json:"search_people_sort,omitempty"`
+ ExpandInlineImages bool `json:"expand_inline_images,omitempty"`
+ ExpandInternalInlineImages bool `json:"expand_internal_inline_images,omitempty"`
+ ExpandSnippets bool `json:"expand_snippets,omitempty"`
+ PostsFormattingGuide bool `json:"posts_formatting_guide,omitempty"`
+ SeenWelcome2 bool `json:"seen_welcome_2,omitempty"`
+ SeenSSBPrompt bool `json:"seen_ssb_prompt,omitempty"`
+ SpacesNewXpBannerDismissed bool `json:"spaces_new_xp_banner_dismissed,omitempty"`
+ SearchOnlyMyChannels bool `json:"search_only_my_channels,omitempty"`
+ SearchOnlyCurrentTeam bool `json:"search_only_current_team,omitempty"`
+ SearchHideMyChannels bool `json:"search_hide_my_channels,omitempty"`
+ SearchOnlyShowOnline bool `json:"search_only_show_online,omitempty"`
+ SearchHideDeactivatedUsers bool `json:"search_hide_deactivated_users,omitempty"`
+ EmojiMode string `json:"emoji_mode,omitempty"`
+ EmojiUse string `json:"emoji_use,omitempty"`
+ HasInvited bool `json:"has_invited,omitempty"`
+ HasUploaded bool `json:"has_uploaded,omitempty"`
+ HasCreatedChannel bool `json:"has_created_channel,omitempty"`
+ HasSearched bool `json:"has_searched,omitempty"`
+ SearchExcludeChannels string `json:"search_exclude_channels,omitempty"`
+ MessagesTheme string `json:"messages_theme,omitempty"`
+ WebappSpellcheck bool `json:"webapp_spellcheck,omitempty"`
+ NoJoinedOverlays bool `json:"no_joined_overlays,omitempty"`
+ NoCreatedOverlays bool `json:"no_created_overlays,omitempty"`
+ DropboxEnabled bool `json:"dropbox_enabled,omitempty"`
+ SeenDomainInviteReminder bool `json:"seen_domain_invite_reminder,omitempty"`
+ SeenMemberInviteReminder bool `json:"seen_member_invite_reminder,omitempty"`
+ MuteSounds bool `json:"mute_sounds,omitempty"`
+ ArrowHistory bool `json:"arrow_history,omitempty"`
+ TabUIReturnSelects bool `json:"tab_ui_return_selects,omitempty"`
+ ObeyInlineImgLimit bool `json:"obey_inline_img_limit,omitempty"`
+ RequireAt bool `json:"require_at,omitempty"`
+ SsbSpaceWindow string `json:"ssb_space_window,omitempty"`
+ MacSsbBounce string `json:"mac_ssb_bounce,omitempty"`
+ MacSsbBullet bool `json:"mac_ssb_bullet,omitempty"`
+ ExpandNonMediaAttachments bool `json:"expand_non_media_attachments,omitempty"`
+ ShowTyping bool `json:"show_typing,omitempty"`
+ PagekeysHandled bool `json:"pagekeys_handled,omitempty"`
+ LastSnippetType string `json:"last_snippet_type,omitempty"`
+ DisplayRealNamesOverride int `json:"display_real_names_override,omitempty"`
+ DisplayDisplayNames bool `json:"display_display_names,omitempty"`
+ Time24 bool `json:"time24,omitempty"`
+ EnterIsSpecialInTbt bool `json:"enter_is_special_in_tbt,omitempty"`
+ MsgInputSendBtn bool `json:"msg_input_send_btn,omitempty"`
+ MsgInputSendBtnAutoSet bool `json:"msg_input_send_btn_auto_set,omitempty"`
+ MsgInputStickyComposer bool `json:"msg_input_sticky_composer,omitempty"`
+ GraphicEmoticons bool `json:"graphic_emoticons,omitempty"`
+ ConvertEmoticons bool `json:"convert_emoticons,omitempty"`
+ SsEmojis bool `json:"ss_emojis,omitempty"`
+ SeenOnboardingStart bool `json:"seen_onboarding_start,omitempty"`
+ OnboardingCancelled bool `json:"onboarding_cancelled,omitempty"`
+ SeenOnboardingSlackbotConversation bool `json:"seen_onboarding_slackbot_conversation,omitempty"`
+ SeenOnboardingChannels bool `json:"seen_onboarding_channels,omitempty"`
+ SeenOnboardingDirectMessages bool `json:"seen_onboarding_direct_messages,omitempty"`
+ SeenOnboardingInvites bool `json:"seen_onboarding_invites,omitempty"`
+ SeenOnboardingSearch bool `json:"seen_onboarding_search,omitempty"`
+ SeenOnboardingRecentMentions bool `json:"seen_onboarding_recent_mentions,omitempty"`
+ SeenOnboardingStarredItems bool `json:"seen_onboarding_starred_items,omitempty"`
+ SeenOnboardingPrivateGroups bool `json:"seen_onboarding_private_groups,omitempty"`
+ SeenOnboardingBanner bool `json:"seen_onboarding_banner,omitempty"`
+ OnboardingSlackbotConversationStep int `json:"onboarding_slackbot_conversation_step,omitempty"`
+ SetTzAutomatically bool `json:"set_tz_automatically,omitempty"`
+ SuppressLinkWarning bool `json:"suppress_link_warning,omitempty"`
+ DndEnabled bool `json:"dnd_enabled,omitempty"`
+ DndStartHour string `json:"dnd_start_hour,omitempty"`
+ DndEndHour string `json:"dnd_end_hour,omitempty"`
+ DndBeforeMonday string `json:"dnd_before_monday,omitempty"`
+ DndAfterMonday string `json:"dnd_after_monday,omitempty"`
+ DndEnabledMonday string `json:"dnd_enabled_monday,omitempty"`
+ DndBeforeTuesday string `json:"dnd_before_tuesday,omitempty"`
+ DndAfterTuesday string `json:"dnd_after_tuesday,omitempty"`
+ DndEnabledTuesday string `json:"dnd_enabled_tuesday,omitempty"`
+ DndBeforeWednesday string `json:"dnd_before_wednesday,omitempty"`
+ DndAfterWednesday string `json:"dnd_after_wednesday,omitempty"`
+ DndEnabledWednesday string `json:"dnd_enabled_wednesday,omitempty"`
+ DndBeforeThursday string `json:"dnd_before_thursday,omitempty"`
+ DndAfterThursday string `json:"dnd_after_thursday,omitempty"`
+ DndEnabledThursday string `json:"dnd_enabled_thursday,omitempty"`
+ DndBeforeFriday string `json:"dnd_before_friday,omitempty"`
+ DndAfterFriday string `json:"dnd_after_friday,omitempty"`
+ DndEnabledFriday string `json:"dnd_enabled_friday,omitempty"`
+ DndBeforeSaturday string `json:"dnd_before_saturday,omitempty"`
+ DndAfterSaturday string `json:"dnd_after_saturday,omitempty"`
+ DndEnabledSaturday string `json:"dnd_enabled_saturday,omitempty"`
+ DndBeforeSunday string `json:"dnd_before_sunday,omitempty"`
+ DndAfterSunday string `json:"dnd_after_sunday,omitempty"`
+ DndEnabledSunday string `json:"dnd_enabled_sunday,omitempty"`
+ DndDays string `json:"dnd_days,omitempty"`
+ DndCustomNewBadgeSeen bool `json:"dnd_custom_new_badge_seen,omitempty"`
+ DndNotificationScheduleNewBadgeSeen bool `json:"dnd_notification_schedule_new_badge_seen,omitempty"`
+ // UnreadCollapsedChannels unknownType `json:"unread_collapsed_channels,omitempty"`
+ SidebarBehavior string `json:"sidebar_behavior,omitempty"`
+ ChannelSort string `json:"channel_sort,omitempty"`
+ SeparatePrivateChannels bool `json:"separate_private_channels,omitempty"`
+ SeparateSharedChannels bool `json:"separate_shared_channels,omitempty"`
+ SidebarTheme string `json:"sidebar_theme,omitempty"`
+ SidebarThemeCustomValues string `json:"sidebar_theme_custom_values,omitempty"`
+ NoInvitesWidgetInSidebar bool `json:"no_invites_widget_in_sidebar,omitempty"`
+ NoOmniboxInChannels bool `json:"no_omnibox_in_channels,omitempty"`
+
+ KKeyOmniboxAutoHideCount int `json:"k_key_omnibox_auto_hide_count,omitempty"`
+ ShowSidebarQuickswitcherButton bool `json:"show_sidebar_quickswitcher_button,omitempty"`
+ EntOrgWideChannelsSidebar bool `json:"ent_org_wide_channels_sidebar,omitempty"`
+ MarkMsgsReadImmediately bool `json:"mark_msgs_read_immediately,omitempty"`
+ StartScrollAtOldest bool `json:"start_scroll_at_oldest,omitempty"`
+ SnippetEditorWrapLongLines bool `json:"snippet_editor_wrap_long_lines,omitempty"`
+ LsDisabled bool `json:"ls_disabled,omitempty"`
+ FKeySearch bool `json:"f_key_search,omitempty"`
+ KKeyOmnibox bool `json:"k_key_omnibox,omitempty"`
+ PromptedForEmailDisabling bool `json:"prompted_for_email_disabling,omitempty"`
+ NoMacelectronBanner bool `json:"no_macelectron_banner,omitempty"`
+ NoMacssb1Banner bool `json:"no_macssb1_banner,omitempty"`
+ NoMacssb2Banner bool `json:"no_macssb2_banner,omitempty"`
+ NoWinssb1Banner bool `json:"no_winssb1_banner,omitempty"`
+ HideUserGroupInfoPane bool `json:"hide_user_group_info_pane,omitempty"`
+ MentionsExcludeAtUserGroups bool `json:"mentions_exclude_at_user_groups,omitempty"`
+ MentionsExcludeReactions bool `json:"mentions_exclude_reactions,omitempty"`
+ PrivacyPolicySeen bool `json:"privacy_policy_seen,omitempty"`
+ EnterpriseMigrationSeen bool `json:"enterprise_migration_seen,omitempty"`
+ LastTosAcknowledged string `json:"last_tos_acknowledged,omitempty"`
+ SearchExcludeBots bool `json:"search_exclude_bots,omitempty"`
+ LoadLato2 bool `json:"load_lato_2,omitempty"`
+ FullerTimestamps bool `json:"fuller_timestamps,omitempty"`
+ LastSeenAtChannelWarning int `json:"last_seen_at_channel_warning,omitempty"`
+ EmojiAutocompleteBig bool `json:"emoji_autocomplete_big,omitempty"`
+ TwoFactorAuthEnabled bool `json:"two_factor_auth_enabled,omitempty"`
+ // TwoFactorType unknownType `json:"two_factor_type,omitempty"`
+ // TwoFactorBackupType unknownType `json:"two_factor_backup_type,omitempty"`
+ HideHexSwatch bool `json:"hide_hex_swatch,omitempty"`
+ ShowJumperScores bool `json:"show_jumper_scores,omitempty"`
+ EnterpriseMdmCustomMsg string `json:"enterprise_mdm_custom_msg,omitempty"`
+ // EnterpriseExcludedAppTeams unknownType `json:"enterprise_excluded_app_teams,omitempty"`
+ ClientLogsPri string `json:"client_logs_pri,omitempty"`
+ FlannelServerPool string `json:"flannel_server_pool,omitempty"`
+ MentionsExcludeAtChannels bool `json:"mentions_exclude_at_channels,omitempty"`
+ ConfirmClearAllUnreads bool `json:"confirm_clear_all_unreads,omitempty"`
+ ConfirmUserMarkedAway bool `json:"confirm_user_marked_away,omitempty"`
+ BoxEnabled bool `json:"box_enabled,omitempty"`
+ SeenSingleEmojiMsg bool `json:"seen_single_emoji_msg,omitempty"`
+ ConfirmShCallStart bool `json:"confirm_sh_call_start,omitempty"`
+ PreferredSkinTone string `json:"preferred_skin_tone,omitempty"`
+ ShowAllSkinTones bool `json:"show_all_skin_tones,omitempty"`
+ WhatsNewRead int `json:"whats_new_read,omitempty"`
+ // FrecencyJumper unknownType `json:"frecency_jumper,omitempty"`
+ FrecencyEntJumper string `json:"frecency_ent_jumper,omitempty"`
+ FrecencyEntJumperBackup string `json:"frecency_ent_jumper_backup,omitempty"`
+ Jumbomoji bool `json:"jumbomoji,omitempty"`
+ NewxpSeenLastMessage int `json:"newxp_seen_last_message,omitempty"`
+ ShowMemoryInstrument bool `json:"show_memory_instrument,omitempty"`
+ EnableUnreadView bool `json:"enable_unread_view,omitempty"`
+ SeenUnreadViewCoachmark bool `json:"seen_unread_view_coachmark,omitempty"`
+ EnableReactEmojiPicker bool `json:"enable_react_emoji_picker,omitempty"`
+ SeenCustomStatusBadge bool `json:"seen_custom_status_badge,omitempty"`
+ SeenCustomStatusCallout bool `json:"seen_custom_status_callout,omitempty"`
+ SeenCustomStatusExpirationBadge bool `json:"seen_custom_status_expiration_badge,omitempty"`
+ UsedCustomStatusKbShortcut bool `json:"used_custom_status_kb_shortcut,omitempty"`
+ SeenGuestAdminSlackbotAnnouncement bool `json:"seen_guest_admin_slackbot_announcement,omitempty"`
+ SeenThreadsNotificationBanner bool `json:"seen_threads_notification_banner,omitempty"`
+ SeenNameTaggingCoachmark bool `json:"seen_name_tagging_coachmark,omitempty"`
+ AllUnreadsSortOrder string `json:"all_unreads_sort_order,omitempty"`
+ Locale string `json:"locale,omitempty"`
+ SeenIntlChannelNamesCoachmark bool `json:"seen_intl_channel_names_coachmark,omitempty"`
+ SeenP2LocaleChangeMessage int `json:"seen_p2_locale_change_message,omitempty"`
+ SeenLocaleChangeMessage int `json:"seen_locale_change_message,omitempty"`
+ SeenJapaneseLocaleChangeMessage bool `json:"seen_japanese_locale_change_message,omitempty"`
+ SeenSharedChannelsCoachmark bool `json:"seen_shared_channels_coachmark,omitempty"`
+ SeenSharedChannelsOptInChangeMessage bool `json:"seen_shared_channels_opt_in_change_message,omitempty"`
+ HasRecentlySharedaChannel bool `json:"has_recently_shared_a_channel,omitempty"`
+ SeenChannelBrowserAdminCoachmark bool `json:"seen_channel_browser_admin_coachmark,omitempty"`
+ SeenAdministrationMenu bool `json:"seen_administration_menu,omitempty"`
+ SeenDraftsSectionCoachmark bool `json:"seen_drafts_section_coachmark,omitempty"`
+ SeenEmojiUpdateOverlayCoachmark bool `json:"seen_emoji_update_overlay_coachmark,omitempty"`
+ SeenSonicDeluxeToast int `json:"seen_sonic_deluxe_toast,omitempty"`
+ SeenWysiwygDeluxeToast bool `json:"seen_wysiwyg_deluxe_toast,omitempty"`
+ SeenMarkdownPasteToast int `json:"seen_markdown_paste_toast,omitempty"`
+ SeenMarkdownPasteShortcut int `json:"seen_markdown_paste_shortcut,omitempty"`
+ SeenIaEducation bool `json:"seen_ia_education,omitempty"`
+ PlainTextMode bool `json:"plain_text_mode,omitempty"`
+ ShowSharedChannelsEducationBanner bool `json:"show_shared_channels_education_banner,omitempty"`
+ AllowCallsToSetCurrentStatus bool `json:"allow_calls_to_set_current_status,omitempty"`
+ InInteractiveMasMigrationFlow bool `json:"in_interactive_mas_migration_flow,omitempty"`
+ SunsetInteractiveMessageViews int `json:"sunset_interactive_message_views,omitempty"`
+ ShdepPromoCodeSubmitted bool `json:"shdep_promo_code_submitted,omitempty"`
+ SeenShdepSlackbotMessage bool `json:"seen_shdep_slackbot_message,omitempty"`
+ SeenCallsInteractiveCoachmark bool `json:"seen_calls_interactive_coachmark,omitempty"`
+ AllowCmdTabIss bool `json:"allow_cmd_tab_iss,omitempty"`
+ SeenWorkflowBuilderDeluxeToast bool `json:"seen_workflow_builder_deluxe_toast,omitempty"`
+ WorkflowBuilderIntroModalClickedThrough bool `json:"workflow_builder_intro_modal_clicked_through,omitempty"`
+ // WorkflowBuilderCoachmarks unknownType `json:"workflow_builder_coachmarks,omitempty"`
+ SeenGdriveCoachmark bool `json:"seen_gdrive_coachmark,omitempty"`
+ OverloadedMessageEnabled bool `json:"overloaded_message_enabled,omitempty"`
+ SeenHighlightsCoachmark bool `json:"seen_highlights_coachmark,omitempty"`
+ SeenHighlightsArrowsCoachmark bool `json:"seen_highlights_arrows_coachmark,omitempty"`
+ SeenHighlightsWarmWelcome bool `json:"seen_highlights_warm_welcome,omitempty"`
+ SeenNewSearchUi bool `json:"seen_new_search_ui,omitempty"`
+ SeenChannelSearch bool `json:"seen_channel_search,omitempty"`
+ SeenPeopleSearch bool `json:"seen_people_search,omitempty"`
+ SeenPeopleSearchCount int `json:"seen_people_search_count,omitempty"`
+ DismissedScrollSearchTooltipCount int `json:"dismissed_scroll_search_tooltip_count,omitempty"`
+ LastDismissedScrollSearchTooltipTimestamp int `json:"last_dismissed_scroll_search_tooltip_timestamp,omitempty"`
+ HasUsedQuickswitcherShortcut bool `json:"has_used_quickswitcher_shortcut,omitempty"`
+ SeenQuickswitcherShortcutTipCount int `json:"seen_quickswitcher_shortcut_tip_count,omitempty"`
+ BrowsersDismissedChannelsLowResultsEducation bool `json:"browsers_dismissed_channels_low_results_education,omitempty"`
+ BrowsersSeenInitialChannelsEducation bool `json:"browsers_seen_initial_channels_education,omitempty"`
+ BrowsersDismissedPeopleLowResultsEducation bool `json:"browsers_dismissed_people_low_results_education,omitempty"`
+ BrowsersSeenInitialPeopleEducation bool `json:"browsers_seen_initial_people_education,omitempty"`
+ BrowsersDismissedUserGroupsLowResultsEducation bool `json:"browsers_dismissed_user_groups_low_results_education,omitempty"`
+ BrowsersSeenInitialUserGroupsEducation bool `json:"browsers_seen_initial_user_groups_education,omitempty"`
+ BrowsersDismissedFilesLowResultsEducation bool `json:"browsers_dismissed_files_low_results_education,omitempty"`
+ BrowsersSeenInitialFilesEducation bool `json:"browsers_seen_initial_files_education,omitempty"`
+ A11yAnimations bool `json:"a11y_animations,omitempty"`
+ SeenKeyboardShortcutsCoachmark bool `json:"seen_keyboard_shortcuts_coachmark,omitempty"`
+ NeedsInitialPasswordSet bool `json:"needs_initial_password_set,omitempty"`
+ LessonsEnabled bool `json:"lessons_enabled,omitempty"`
+ TractorEnabled bool `json:"tractor_enabled,omitempty"`
+ TractorExperimentGroup string `json:"tractor_experiment_group,omitempty"`
+ OpenedSlackbotDm bool `json:"opened_slackbot_dm,omitempty"`
+ NewxpSuggestedChannels string `json:"newxp_suggested_channels,omitempty"`
+ OnboardingComplete bool `json:"onboarding_complete,omitempty"`
+ WelcomePlaceState string `json:"welcome_place_state,omitempty"`
+ // OnboardingRoleApps unknownType `json:"onboarding_role_apps,omitempty"`
+ HasReceivedThreadedMessage bool `json:"has_received_threaded_message,omitempty"`
+ SendYourFirstMessageBannerEnabled bool `json:"send_your_first_message_banner_enabled,omitempty"`
+ WhocanseethisDmMpdmBadge bool `json:"whocanseethis_dm_mpdm_badge,omitempty"`
+ HighlightWords string `json:"highlight_words,omitempty"`
+ ThreadsEverything bool `json:"threads_everything,omitempty"`
+ NoTextInNotifications bool `json:"no_text_in_notifications,omitempty"`
+ PushShowPreview bool `json:"push_show_preview,omitempty"`
+ GrowlsEnabled bool `json:"growls_enabled,omitempty"`
+ AllChannelsLoud bool `json:"all_channels_loud,omitempty"`
+ PushDmAlert bool `json:"push_dm_alert,omitempty"`
+ PushMentionAlert bool `json:"push_mention_alert,omitempty"`
+ PushEverything bool `json:"push_everything,omitempty"`
+ PushIdleWait int `json:"push_idle_wait,omitempty"`
+ PushSound string `json:"push_sound,omitempty"`
+ NewMsgSnd string `json:"new_msg_snd,omitempty"`
+ PushLoudChannels string `json:"push_loud_channels,omitempty"`
+ PushMentionChannels string `json:"push_mention_channels,omitempty"`
+ PushLoudChannelsSet string `json:"push_loud_channels_set,omitempty"`
+ LoudChannels string `json:"loud_channels,omitempty"`
+ NeverChannels string `json:"never_channels,omitempty"`
+ LoudChannelsSet string `json:"loud_channels_set,omitempty"`
+ AtChannelSuppressedChannels string `json:"at_channel_suppressed_channels,omitempty"`
+ PushAtChannelSuppressedChannels string `json:"push_at_channel_suppressed_channels,omitempty"`
+ MutedChannels string `json:"muted_channels,omitempty"`
+ // AllNotificationsPrefs unknownType `json:"all_notifications_prefs,omitempty"`
+ GrowthMsgLimitApproachingCtaCount int `json:"growth_msg_limit_approaching_cta_count,omitempty"`
+ GrowthMsgLimitApproachingCtaTs int `json:"growth_msg_limit_approaching_cta_ts,omitempty"`
+ GrowthMsgLimitReachedCtaCount int `json:"growth_msg_limit_reached_cta_count,omitempty"`
+ GrowthMsgLimitReachedCtaLastTs int `json:"growth_msg_limit_reached_cta_last_ts,omitempty"`
+ GrowthMsgLimitLongReachedCtaCount int `json:"growth_msg_limit_long_reached_cta_count,omitempty"`
+ GrowthMsgLimitLongReachedCtaLastTs int `json:"growth_msg_limit_long_reached_cta_last_ts,omitempty"`
+ GrowthMsgLimitSixtyDayBannerCtaCount int `json:"growth_msg_limit_sixty_day_banner_cta_count,omitempty"`
+ GrowthMsgLimitSixtyDayBannerCtaLastTs int `json:"growth_msg_limit_sixty_day_banner_cta_last_ts,omitempty"`
+ // GrowthAllBannersPrefs unknownType `json:"growth_all_banners_prefs,omitempty"`
+ AnalyticsUpsellCoachmarkSeen bool `json:"analytics_upsell_coachmark_seen,omitempty"`
+ SeenAppSpaceCoachmark bool `json:"seen_app_space_coachmark,omitempty"`
+ SeenAppSpaceTutorial bool `json:"seen_app_space_tutorial,omitempty"`
+ DismissedAppLauncherWelcome bool `json:"dismissed_app_launcher_welcome,omitempty"`
+ DismissedAppLauncherLimit bool `json:"dismissed_app_launcher_limit,omitempty"`
+ Purchaser bool `json:"purchaser,omitempty"`
+ ShowEntOnboarding bool `json:"show_ent_onboarding,omitempty"`
+ FoldersEnabled bool `json:"folders_enabled,omitempty"`
+ // FolderData unknownType `json:"folder_data,omitempty"`
+ SeenCorporateExportAlert bool `json:"seen_corporate_export_alert,omitempty"`
+ ShowAutocompleteHelp int `json:"show_autocomplete_help,omitempty"`
+ DeprecationToastLastSeen int `json:"deprecation_toast_last_seen,omitempty"`
+ DeprecationModalLastSeen int `json:"deprecation_modal_last_seen,omitempty"`
+ Iap1Lab int `json:"iap1_lab,omitempty"`
+ IaTopNavTheme string `json:"ia_top_nav_theme,omitempty"`
+ IaPlatformActionsLab int `json:"ia_platform_actions_lab,omitempty"`
+ ActivityView string `json:"activity_view,omitempty"`
+ FailoverProxyCheckCompleted int `json:"failover_proxy_check_completed,omitempty"`
+ EdgeUploadProxyCheckCompleted int `json:"edge_upload_proxy_check_completed,omitempty"`
+ AppSubdomainCheckCompleted int `json:"app_subdomain_check_completed,omitempty"`
+ AddAppsPromptDismissed bool `json:"add_apps_prompt_dismissed,omitempty"`
+ AddChannelPromptDismissed bool `json:"add_channel_prompt_dismissed,omitempty"`
+ ChannelSidebarHideInvite bool `json:"channel_sidebar_hide_invite,omitempty"`
+ InProdSurveysEnabled bool `json:"in_prod_surveys_enabled,omitempty"`
+ DismissedInstalledAppDmSuggestions string `json:"dismissed_installed_app_dm_suggestions,omitempty"`
+ SeenContextualMessageShortcutsModal bool `json:"seen_contextual_message_shortcuts_modal,omitempty"`
+ SeenMessageNavigationEducationalToast bool `json:"seen_message_navigation_educational_toast,omitempty"`
+ ContextualMessageShortcutsModalWasSeen bool `json:"contextual_message_shortcuts_modal_was_seen,omitempty"`
+ MessageNavigationToastWasSeen bool `json:"message_navigation_toast_was_seen,omitempty"`
+ UpToBrowseKbShortcut bool `json:"up_to_browse_kb_shortcut,omitempty"`
+ ChannelSections string `json:"channel_sections,omitempty"`
+ TZ string `json:"tz,omitempty"`
+}
+
+func (api *Client) GetUserPrefs() (*UserPrefsCarrier, error) {
+ values := url.Values{"token": {api.token}}
+ response := UserPrefsCarrier{}
+
+ err := api.getMethod(context.Background(), "users.prefs.get", values, &response)
+ if err != nil {
+ return nil, err
+ }
+
+ return &response, response.Err()
+}
+
+func (api *Client) MuteChat(channelID string) (*UserPrefsCarrier, error) {
+ prefs, err := api.GetUserPrefs()
+ if err != nil {
+ return nil, err
+ }
+ chnls := strings.Split(prefs.UserPrefs.MutedChannels, ",")
+ for _, chn := range chnls {
+ if chn == channelID {
+ return nil, nil // noop
+ }
+ }
+ newChnls := prefs.UserPrefs.MutedChannels + "," + channelID
+ values := url.Values{"token": {api.token}, "muted_channels": {newChnls}, "reason": {"update-muted-channels"}}
+ response := UserPrefsCarrier{}
+
+ err = api.postMethod(context.Background(), "users.prefs.set", values, &response)
+ if err != nil {
+ return nil, err
+ }
+
+ return &response, response.Err()
+}
+
+func (api *Client) UnMuteChat(channelID string) (*UserPrefsCarrier, error) {
+ prefs, err := api.GetUserPrefs()
+ if err != nil {
+ return nil, err
+ }
+ chnls := strings.Split(prefs.UserPrefs.MutedChannels, ",")
+ newChnls := make([]string, len(chnls)-1)
+ for i, chn := range chnls {
+ if chn == channelID {
+ return nil, nil // noop
+ }
+ newChnls[i] = chn
+ }
+ values := url.Values{"token": {api.token}, "muted_channels": {strings.Join(newChnls, ",")}, "reason": {"update-muted-channels"}}
+ response := UserPrefsCarrier{}
+
+ err = api.postMethod(context.Background(), "users.prefs.set", values, &response)
+ if err != nil {
+ return nil, err
+ }
+
+ return &response, response.Err()
}
// UserDetails contains user details coming in the initial response from StartRTM