Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
let isPending = post.id === post.pending_post_id;
if (isPending && Date.now() - post.create_at > POST_TIMEOUT) {
// Something has prevented the post from being set to failed, so it's safe to assume
// that it has actually failed by this point
isFailed = true;
isPending = false;
}
const isUserCanManageMembers = canManageChannelMembers(state);
const isEphemeralPost = isPostEphemeral(post);
const config = getConfig(state);
const license = getLicense(state);
const currentUserId = getCurrentUserId(state);
const currentTeamId = getCurrentTeamId(state);
const currentChannelId = getCurrentChannelId(state);
const roles = getCurrentUserId(state) ? getCurrentUserRoles(state) : '';
const isAdmin = checkIsAdmin(roles);
const isSystemAdmin = checkIsSystemAdmin(roles);
let canDelete = false;
if (post && !ownProps.channelIsArchived) {
canDelete = canDeletePost(state, config, license, currentTeamId, currentChannelId, currentUserId, post, isAdmin, isSystemAdmin);
}
let isPostAddChannelMember = false;
if (
channel &&
(channel.type === General.PRIVATE_CHANNEL || channel.type === General.OPEN_CHANNEL) &&
isUserCanManageMembers &&
isEphemeralPost &&
post.props &&
function switchToChannel(chan) {
const state = getState();
const getMyChannelMemberPromise = dispatch(getMyChannelMember(chan.id));
const oldChannelId = getCurrentChannelId(state);
const userId = getCurrentUserId(state);
const teamId = chan.team_id || getCurrentTeamId(state);
const isRHSOpened = getIsRhsOpen(state);
const isPinnedPostsShowing = getRhsState(state) === RHSStates.PIN;
const member = selectMyChannelMember(state, chan.id);
getMyChannelMemberPromise.then(() => {
dispatch(getChannelStats(chan.id));
// Mark previous and next channel as read
dispatch(markChannelAsRead(chan.id, oldChannelId));
dispatch(markChannelAsViewed(chan.id, oldChannelId));
reloadIfServerVersionChanged();
});
if (chan.delete_at === 0) {
function handleChannelViewedEvent(msg) {
// Useful for when multiple devices have the app open to different channels
if ((!window.isActive || getCurrentChannelId(getState()) !== msg.data.channel_id) &&
getCurrentUserId(getState()) === msg.broadcast.user_id) {
dispatch(markChannelAsRead(msg.data.channel_id, '', false));
}
}
type: GeneralTypes.WEBSOCKET_SUCCESS,
timestamp: Date.now(),
});
loadPluginsIfNecessary();
Object.values(pluginReconnectHandlers).forEach((handler) => {
if (handler && typeof handler === 'function') {
handler();
}
});
const state = getState();
const currentTeamId = state.entities.teams.currentTeamId;
if (currentTeamId) {
const currentChannelId = getCurrentChannelId(state);
const mostRecentId = getMostRecentPostIdInChannel(state, currentChannelId);
const mostRecentPost = getPost(state, mostRecentId);
dispatch(loadChannelsForCurrentUser());
if (mostRecentPost) {
dispatch(syncPostsInChannel(currentChannelId, mostRecentPost.create_at, false));
} else {
// if network timed-out the first time when loading a channel
// we can request for getPosts again when socket is connected
dispatch(getPosts(currentChannelId));
}
StatusActions.loadStatusesForChannelAndSidebar();
dispatch(TeamActions.getMyTeamUnreads());
}
if (state.websocket.lastDisconnectAt) {
dispatch(checkForModifiedUsers());
function mapStateToProps(state, ownProps) {
const license = getLicense(state);
const config = getConfig(state);
const currentUser = getCurrentUser(state);
return {
theme: getTheme(state),
mfaRequired: checkIfMFARequired(currentUser, license, config, ownProps.match.url),
currentUser,
currentTeamId: getCurrentTeamId(state),
teamsList: getMyTeams(state),
currentChannelId: getCurrentChannelId(state),
};
}
return async (doDispatch, doGetState) => {
const state = doGetState();
const teamIdParam = teamId || getCurrentTeamId(state);
const channelIdParam = channelId || getCurrentChannelId(state);
const {data} = await doDispatch(loadTeamMembersForProfilesList(profiles, teamIdParam));
if (data) {
doDispatch(loadChannelMembersForProfilesList(profiles, channelIdParam));
}
return {data: true};
};
}
if (shouldIgnorePost(post)) {
return;
}
let markAsRead = false;
let markAsReadOnServer = false;
if (!isManuallyUnread(getState(), post.channel_id)) {
if (
post.user_id === getCurrentUserId(state) &&
!isSystemMessage(post) &&
!isFromWebhook(post)
) {
markAsRead = true;
markAsReadOnServer = false;
} else if (
post.channel_id === getCurrentChannelId(state) &&
window.isActive
) {
markAsRead = true;
markAsReadOnServer = true;
}
}
if (markAsRead) {
dispatch(markChannelAsRead(post.channel_id, null, markAsReadOnServer));
dispatch(markChannelAsViewed(post.channel_id));
} else {
dispatch(markChannelAsUnread(websocketMessageProps.team_id, post.channel_id, websocketMessageProps.mentions));
}
};
}
function mapStateToProps(state) {
const {myChannels: channelsRequest} = state.requests.channels;
return {
channelsRequestFailed: channelsRequest.status === RequestStatus.FAILURE,
currentTeamId: getCurrentTeamId(state),
currentChannelId: getCurrentChannelId(state),
isLandscape: isLandscape(state),
theme: getTheme(state),
showTermsOfService: shouldShowTermsOfService(state),
};
}
function handleChannelDeletedEvent(msg) {
const state = getState();
const config = getConfig(state);
const viewArchivedChannels = config.ExperimentalViewArchivedChannels === 'true';
if (getCurrentChannelId(state) === msg.data.channel_id && !viewArchivedChannels) {
const teamUrl = getCurrentRelativeTeamUrl(state);
browserHistory.push(teamUrl + '/channels/' + Constants.DEFAULT_CHANNEL);
}
dispatch({type: ChannelTypes.RECEIVED_CHANNEL_DELETED, data: {id: msg.data.channel_id, team_id: msg.broadcast.team_id, deleteAt: msg.data.delete_at, viewArchivedChannels}});
}
function mapStateToProps(state) {
const {websocket} = state.requests.general;
const websocketStatus = websocket.status;
return {
currentChannelId: getCurrentChannelId(state),
isLandscape: isLandscape(state),
isOnline: getConnection(state),
websocketErrorCount: websocket.error,
websocketStatus,
};
}