- Added dotenv configuration for environment variables - Fixed MongoDB connection string loading - Configured server port to 3005 - Updated cron jobs for expired messages
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
function listIncludesUserId(list, userId) {
|
|
if (!userId || !list?.length) return false
|
|
return list.some((id) => String(id) === String(userId))
|
|
}
|
|
|
|
/** Viewer has blocked the profile owner */
|
|
function viewerBlockedUser(user, viewerId) {
|
|
if (!user || !viewerId) return false
|
|
return listIncludesUserId(user.blocked_by, viewerId)
|
|
}
|
|
|
|
/** Profile owner has blocked the viewer */
|
|
function userBlockedViewer(user, viewerId) {
|
|
if (!user || !viewerId) return false
|
|
return listIncludesUserId(user.blocked_users, viewerId)
|
|
}
|
|
|
|
/** Viewer (blocked person) cannot see profile/posts of user who blocked them */
|
|
function viewerIsBlockedBy(user, viewerId) {
|
|
return userBlockedViewer(user, viewerId)
|
|
}
|
|
|
|
function blockedProfilePayload(user) {
|
|
return {
|
|
_id: user._id,
|
|
user_name: user.user_name,
|
|
blocked_you: true,
|
|
is_self: false,
|
|
user_type: user.user_type,
|
|
postsCount: 0,
|
|
allProjectsCount: 0,
|
|
successfulProjectsCount: 0,
|
|
}
|
|
}
|
|
|
|
/** User IDs who have blocked the viewer */
|
|
async function getBlockerUserIds(UserModel, viewerId) {
|
|
if (!viewerId) return []
|
|
return UserModel.find({ blocked_users: viewerId }).distinct('_id')
|
|
}
|
|
|
|
module.exports = {
|
|
listIncludesUserId,
|
|
viewerBlockedUser,
|
|
userBlockedViewer,
|
|
viewerIsBlockedBy,
|
|
blockedProfilePayload,
|
|
getBlockerUserIds,
|
|
}
|