import React from "react"
import ListEmpty from "misago/components/users/active-posters/list-empty"
import ListPreview from "misago/components/users/active-posters/list-preview"
import ListReady from "misago/components/users/active-posters/list-ready"
import misago from "misago/index"
import { hydrate } from "misago/reducers/users"
import polls from "misago/services/polls"
import store from "misago/services/store"
import title from "misago/services/page-title"
export default class extends React.Component {
constructor(props) {
super(props)
if (misago.has("USERS")) {
this.initWithPreloadedData(misago.pop("USERS"))
} else {
this.initWithoutPreloadedData()
}
this.startPolling()
}
initWithPreloadedData(data) {
this.state = {
isLoaded: true,
trackedPeriod: data.tracked_period,
count: data.count,
}
store.dispatch(hydrate(data.results))
}
initWithoutPreloadedData() {
this.state = {
isLoaded: false,
}
}
startPolling() {
polls.start({
poll: "active-posters",
url: misago.get("USERS_API"),
data: {
list: "active",
},
frequency: 90 * 1000,
update: this.update,
})
}
update = (data) => {
store.dispatch(hydrate(data.results))
this.setState({
isLoaded: true,
trackedPeriod: data.tracked_period,
count: data.count,
})
}
componentDidMount() {
title.set({
title: this.props.route.extra.name,
parent: gettext("Users"),
})
}
componentWillUnmount() {
polls.stop("active-posters")
}
render() {
const page = { name: this.props.route.extra.name }
if (this.state.isLoaded) {
if (this.state.count > 0) {
return (
)
} else {
return (
)
}
} else {
return
}
}
}