import React from "react"
export default class extends React.Component {
getClass() {
return getStatusClassName(this.props.status)
}
render() {
return {this.props.children}
}
}
export class StatusIcon extends React.Component {
getIcon() {
if (this.props.status.is_banned) {
return "remove_circle_outline"
} else if (this.props.status.is_hidden) {
return "help_outline"
} else if (this.props.status.is_online_hidden) {
return "label"
} else if (this.props.status.is_offline_hidden) {
return "label_outline"
} else if (this.props.status.is_online) {
return "lens"
} else if (this.props.status.is_offline) {
return "panorama_fish_eye"
}
}
render() {
return {this.getIcon()}
}
}
export class StatusLabel extends React.Component {
getHelp() {
return getStatusDescription(this.props.user, this.props.status)
}
getLabel() {
if (this.props.status.is_banned) {
return gettext("Banned")
} else if (this.props.status.is_hidden) {
return gettext("Hidden")
} else if (this.props.status.is_online_hidden) {
return gettext("Online (hidden)")
} else if (this.props.status.is_offline_hidden) {
return gettext("Offline (hidden)")
} else if (this.props.status.is_online) {
return gettext("Online")
} else if (this.props.status.is_offline) {
return gettext("Offline")
}
}
render() {
return (
{this.getLabel()}
)
}
}
export function getStatusClassName(status) {
let className = ""
if (status.is_banned) {
className = "banned"
} else if (status.is_hidden) {
className = "offline"
} else if (status.is_online_hidden) {
className = "online"
} else if (status.is_offline_hidden) {
className = "offline"
} else if (status.is_online) {
className = "online"
} else if (status.is_offline) {
className = "offline"
}
return "user-status user-" + className
}
export function getStatusDescription(user, status) {
if (status.is_banned) {
if (status.banned_until) {
return interpolate(
gettext("%(username)s is banned until %(ban_expires)s"),
{
username: user.username,
ban_expires: status.banned_until.format("LL, LT")
},
true
)
} else {
return interpolate(
gettext("%(username)s is banned"),
{
username: user.username
},
true
)
}
} else if (status.is_hidden) {
return interpolate(
gettext("%(username)s is hiding presence"),
{
username: user.username
},
true
)
} else if (status.is_online_hidden) {
return interpolate(
gettext("%(username)s is online (hidden)"),
{
username: user.username
},
true
)
} else if (status.is_offline_hidden) {
return interpolate(
gettext("%(username)s was last seen %(last_click)s (hidden)"),
{
username: user.username,
last_click: status.last_click.fromNow()
},
true
)
} else if (status.is_online) {
return interpolate(
gettext("%(username)s is online"),
{
username: user.username
},
true
)
} else if (status.is_offline) {
return interpolate(
gettext("%(username)s was last seen %(last_click)s"),
{
username: user.username,
last_click: status.last_click.fromNow()
},
true
)
}
}