refactoring
by Vladymyr Shevchuk
JavaScript
// before
getIcon (group) {
let icon = null;
if (group.admin === this.props.jid) {
if (group.admin === this.props.jid && group.password) {
if (group.admin === this.props.jid && group.password && group.anonymous) {
icon = <Groups color={gray} isWithoutBg colorAdmin={blueDark} colorKey={blueDark} colorAnonymous={blueDark} />;
} else {
icon = <Groups color={gray} isWithoutBg colorAdmin={blueDark} colorKey={blueDark} />;
}
} else {
if (group.admin === this.props.jid && group.anonymous) {
icon = <Groups color={gray} isWithoutBg colorAdmin={blueDark} colorAnonymous={blueDark} />;
} else {
icon = <Groups color={gray} isWithoutBg colorAdmin={blueDark} />;
}
}
} else {
if (group.password) {
if (group.password && group.anonymous) {
icon = <Groups color={gray} isWithoutBg colorKey={blueDark} colorAnonymous={blueDark} />;
} else {
icon = <Groups color={gray} isWithoutBg colorKey={blueDark} />;
}
} else {
if (group.anonymous) {
icon = <Groups color={gray} isWithoutBg colorAnonymous={blueDark} />;
} else {
icon = <Groups color={gray} isWithoutBg />;
}
}
}
return icon;
}
// after improvement
getIcon (group) {
const isAdmin = group.admin === this.props.jid;
const isAnonymous = Boolean(group.anonymous);
const isPasswordExist = Boolean(group.password);
const someProps = {
colorAdmin: isAdmin ? blueDark : undefined, // eslint-disable-line
colorAnonymous: isAnonymous ? blueDark : undefined, // eslint-disable-line
colorKey: isPasswordExist ? blueDark : undefined // eslint-disable-line
};
return <Groups color={gray} isWithoutBg {...someProps} />;
}