mirror of
https://github.com/wassname/talk.git
synced 2026-07-10 19:46:09 +08:00
73 lines
1.6 KiB
JavaScript
73 lines
1.6 KiB
JavaScript
import get from 'lodash/get';
|
|
import mapValues from 'lodash/mapValues';
|
|
import toPairs from 'lodash/toPairs';
|
|
|
|
/**
|
|
* getReliability
|
|
* retrieves reliability value as string
|
|
*/
|
|
|
|
export const getReliability = reliabilityValue => {
|
|
if (reliabilityValue === null) {
|
|
return 'neutral';
|
|
} else if (reliabilityValue) {
|
|
return 'reliable';
|
|
} else {
|
|
return 'unreliable';
|
|
}
|
|
};
|
|
|
|
/**
|
|
* isSuspended
|
|
* retrieves boolean based on the user suspension status
|
|
*/
|
|
|
|
export const isSuspended = user => {
|
|
const suspensionUntil = get(user, 'state.status.suspension.until');
|
|
return user && suspensionUntil && new Date(suspensionUntil) > new Date();
|
|
};
|
|
|
|
/**
|
|
* isBanned
|
|
* retrieves boolean based on the user ban status
|
|
*/
|
|
|
|
export const isBanned = user => {
|
|
return get(user, 'state.status.banned.status');
|
|
};
|
|
|
|
/**
|
|
* isUsernameRejected
|
|
* retrieves boolean based on the username status
|
|
*/
|
|
|
|
export const isUsernameRejected = user => {
|
|
return get(user, 'state.status.username.status') === 'REJECTED';
|
|
};
|
|
|
|
/**
|
|
* isUsernameChanged
|
|
* retrieves boolean based on the username status
|
|
*/
|
|
|
|
export const isUsernameChanged = user => {
|
|
return get(user, 'state.status.username.status') === 'CHANGED';
|
|
};
|
|
|
|
/**
|
|
* getActiveStatuses
|
|
* returns an array of active status(es)
|
|
* i.e if suspension is active, it returns suspension
|
|
*/
|
|
|
|
export const getActiveStatuses = user => {
|
|
const statusMap = {
|
|
suspended: isSuspended,
|
|
banned: isBanned,
|
|
usernameRejected: isUsernameRejected,
|
|
usernameChanged: isUsernameChanged,
|
|
};
|
|
|
|
return toPairs(mapValues(statusMap, fn => fn(user))).filter(x => x[1]);
|
|
};
|