Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return function mapStateToProps(state, ownProps) {
const config = getConfig(state);
const link = getFirstLink(ownProps.message);
// Link previews used to be an advanced settings until server version 4.4 when it was changed to be a display setting.
// We are checking both here until we bump the server requirement for the mobile apps.
const previewsEnabled = (getBool(state, Preferences.CATEGORY_ADVANCED_SETTINGS, `${ViewTypes.FEATURE_TOGGLE_PREFIX}${ViewTypes.EMBED_PREVIEW}`) ||
getBool(state, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.LINK_PREVIEW_DISPLAY, true));
const removeLinkPreview = ownProps.postProps.remove_link_preview === 'true';
let openGraphData = getOpenGraphMetadataForUrl(state, link);
if (!openGraphData) {
const data = getOpenGraphData(ownProps.metadata, link);
openGraphData = data?.data;
}
return {
...getDimensions(state),
googleDeveloperKey: config.GoogleDeveloperKey,
link,
openGraphData,
showLinkPreviews: previewsEnabled && config.EnableLinkPreviews === 'true' && !removeLinkPreview,
theme: getTheme(state),
export async function loadProfilesForDM() {
const state = getState();
const channels = getMyChannels(state);
const newPreferences = [];
const profilesToLoad = [];
const profileIds = [];
const currentUserId = Selectors.getCurrentUserId(state);
for (let i = 0; i < channels.length; i++) {
const channel = channels[i];
if (channel.type !== Constants.DM_CHANNEL) {
continue;
}
const teammateId = channel.name.replace(currentUserId, '').replace('__', '');
const isVisible = getBool(state, Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, teammateId);
if (!isVisible) {
const member = getMyChannelMember(state, channel.id);
if (!member || member.mention_count === 0) {
continue;
}
newPreferences.push({
user_id: currentUserId,
category: Preferences.CATEGORY_DIRECT_CHANNEL_SHOW,
name: teammateId,
value: 'true',
});
}
if (!Selectors.getUser(state, teammateId)) {
export function shouldShowJoinLeaveMessages(state) {
return getBoolPreference(state, Preferences.CATEGORY_ADVANCED_SETTINGS, Preferences.ADVANCED_FILTER_JOIN_LEAVE, true);
}
}
}
completedChannels[channel.id] = true;
channels.push(wrappedChannel);
}
}
for (let i = 0; i < users.length; i++) {
const user = users[i];
if (completedChannels[user.id]) {
continue;
}
const isDMVisible = getBool(getState(), Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, user.id, false);
const wrappedChannel = this.userWrappedChannel(user);
if (isDMVisible) {
wrappedChannel.type = Constants.MENTION_CHANNELS;
} else {
wrappedChannel.type = Constants.MENTION_MORE_CHANNELS;
if (skipNotInChannel) {
continue;
}
}
completedChannels[user.id] = true;
channels.push(wrappedChannel);
}
export function isEmbedVisible(state, postId) {
const currentUserId = getCurrentUserId(state);
const previewCollapsed = getBoolPreference(
state,
Preferences.CATEGORY_DISPLAY_SETTINGS,
Preferences.COLLAPSE_DISPLAY,
Preferences.COLLAPSE_DISPLAY_DEFAULT !== 'false'
);
return getGlobalItem(state, StoragePrefixes.EMBED_VISIBLE + currentUserId + '_' + postId, !previewCollapsed);
}
const currentUserId = getCurrentUserId(state);
let canDeletePost = false;
let canEditPost = false;
if (editingPost && editingPost.post && editingPost.post.user_id === currentUserId) {
canDeletePost = haveIChannelPermission(state, {channel: getCurrentChannelId(state), team: getCurrentTeamId(state), permission: Permissions.DELETE_POST});
canEditPost = haveIChannelPermission(state, {channel: getCurrentChannelId(state), team: getCurrentTeamId(state), permission: Permissions.EDIT_POST});
} else {
canDeletePost = haveIChannelPermission(state, {channel: getCurrentChannelId(state), team: getCurrentTeamId(state), permission: Permissions.DELETE_OTHERS_POSTS});
canEditPost = haveIChannelPermission(state, {channel: getCurrentChannelId(state), team: getCurrentTeamId(state), permission: Permissions.EDIT_OTHERS_POSTS});
}
return {
canEditPost,
canDeletePost,
codeBlockOnCtrlEnter: getBool(state, Preferences.CATEGORY_ADVANCED_SETTINGS, 'code_block_ctrl_enter', true),
ctrlSend: getBool(state, Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter'),
config,
editingPost,
maxPostSize: parseInt(config.MaxPostSize, 10) || Constants.DEFAULT_CHARACTER_LIMIT,
};
}
function checkPreference(channel) {
const userId = Utils.getUserIdFromChannelName(channel);
if (!userId) {
return;
}
const pref = getBool(getState(), Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, userId, false);
if (pref === false) {
const now = Utils.getTimestamp();
const currentUserId = Selectors.getCurrentUserId(getState());
savePreferencesRedux(currentUserId, [
{user_id: currentUserId, category: Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, name: userId, value: 'true'},
{user_id: currentUserId, category: Preferences.CATEGORY_CHANNEL_OPEN_TIME, name: channelId, value: now.toString()},
])(dispatch, getState);
loadProfilesForDM();
}
}
const newPreferences = [];
const userIdsInChannels = Selectors.getUserIdsInChannels(state);
const currentUserId = Selectors.getCurrentUserId(state);
for (let i = 0; i < channels.length; i++) {
const channel = channels[i];
if (channel.type !== Constants.GM_CHANNEL) {
continue;
}
const userIds = userIdsInChannels[channel.id] || new Set();
if (userIds.size >= Constants.MIN_USERS_IN_GM) {
continue;
}
const isVisible = getBool(state, Preferences.CATEGORY_GROUP_CHANNEL_SHOW, channel.id);
if (!isVisible) {
const member = getMyChannelMember(state, channel.id);
if (!member || (member.mention_count === 0 && member.msg_count >= channel.total_msg_count)) {
continue;
}
newPreferences.push({
user_id: currentUserId,
category: Preferences.CATEGORY_GROUP_CHANNEL_SHOW,
name: channel.id,
value: 'true',
});
}
await dispatch(UserActions.getProfilesInChannel(channel.id, 0, Constants.MAX_USERS_IN_GM)); //eslint-disable-line no-await-in-loop
function mapStateToProps(state: GlobalState, ownProps: Props) {
const currentUserId = getCurrentUserId(state);
let userTimezone;
if (ownProps.userTimezone) {
userTimezone = ownProps.userTimezone;
} else {
userTimezone = getUserTimezone(state, currentUserId);
}
return {
enableTimezone: areTimezonesEnabledAndSupported(state),
useMilitaryTime: getBool(state, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.USE_MILITARY_TIME, false),
timeZone: getUserCurrentTimezone(userTimezone),
};
}
const canCreatePublicChannel = haveITeamPermission(state, {team: currentTeam.id, permission: Permissions.CREATE_PUBLIC_CHANNEL});
const canCreatePrivateChannel = haveITeamPermission(state, {team: currentTeam.id, permission: Permissions.CREATE_PRIVATE_CHANNEL});
const sidebarPrefs = getSidebarPreferences(state);
const lastUnreadChannel = state.views.channel.keepChannelIdAsUnread;
const unreadChannelIds = getSortedUnreadChannelIds(state, lastUnreadChannel);
const orderedChannelIds = getOrderedChannelIds(
state,
lastUnreadChannel,
sidebarPrefs.grouping,
sidebarPrefs.sorting,
sidebarPrefs.unreads_at_top === 'true',
sidebarPrefs.favorite_at_top === 'true',
);
const channelSwitcherOption = getBoolPreference(
state,
Preferences.CATEGORY_SIDEBAR_SETTINGS,
'channel_switcher_section',
'true'
);
return {
config,
unreadChannelIds,
orderedChannelIds,
channelSwitcherOption,
currentChannel,
currentTeammate,
currentTeam,
currentUser: getCurrentUser(state),
canCreatePublicChannel,