From: Dessalines Date: Fri, 13 Sep 2019 16:09:01 +0000 (-0700) Subject: Adding an online user count to main page. X-Git-Url: http://these/git/%7B%60%24%7BwebArchiveUrl%7D/%22%7B%7D/readmes/%22https:/hacktivis.me/%7Bthis.props.icon%7D?a=commitdiff_plain;h=e24f4a2d337ee0d3da58a7eab35be78bc54f267b;p=lemmy.git Adding an online user count to main page. - Fixes #274 --- diff --git a/server/src/api/site.rs b/server/src/api/site.rs index b517568e..912378ab 100644 --- a/server/src/api/site.rs +++ b/server/src/api/site.rs @@ -81,6 +81,7 @@ pub struct GetSiteResponse { site: Option, admins: Vec, banned: Vec, + pub online: usize, } #[derive(Serialize, Deserialize)] @@ -296,6 +297,7 @@ impl Perform for Oper { site: site_view, admins: admins, banned: banned, + online: 0 }) } } @@ -486,6 +488,7 @@ impl Perform for Oper { site: Some(site_view), admins: admins, banned: banned, + online: 0 }) } } diff --git a/server/src/websocket/server.rs b/server/src/websocket/server.rs index 08714c30..41bb1058 100644 --- a/server/src/websocket/server.rs +++ b/server/src/websocket/server.rs @@ -492,8 +492,10 @@ fn parse_json_message(chat: &mut ChatServer, msg: StandardMessage) -> Result { + let online: usize = chat.sessions.len(); let get_site: GetSite = serde_json::from_str(data)?; - let res = Oper::new(user_operation, get_site).perform()?; + let mut res = Oper::new(user_operation, get_site).perform()?; + res.online = online; Ok(serde_json::to_string(&res)?) } UserOperation::Search => { diff --git a/ui/src/components/main.tsx b/ui/src/components/main.tsx index 9ee4afdd..b6c901be 100644 --- a/ui/src/components/main.tsx +++ b/ui/src/components/main.tsx @@ -43,6 +43,7 @@ export class Main extends Component { }, admins: [], banned: [], + online: null, }, showEditSite: false, loading: true, @@ -215,6 +216,9 @@ export class Main extends Component { }
    +
  • + # +
  • #
  • @@ -420,6 +424,7 @@ export class Main extends Component { this.state.site.admins = res.admins; this.state.site.site = res.site; this.state.site.banned = res.banned; + this.state.site.online = res.online; this.setState(this.state); document.title = `${WebSocketService.Instance.site.name}`; diff --git a/ui/src/interfaces.ts b/ui/src/interfaces.ts index 8c78d7d8..3221415b 100644 --- a/ui/src/interfaces.ts +++ b/ui/src/interfaces.ts @@ -546,6 +546,7 @@ export interface GetSiteResponse { site: Site; admins: Array; banned: Array; + online: number; } diff --git a/ui/src/translations/en.ts b/ui/src/translations/en.ts index 459e3b79..591221c6 100644 --- a/ui/src/translations/en.ts +++ b/ui/src/translations/en.ts @@ -70,6 +70,7 @@ export const en = { number_of_users:'{{count}} Users', number_of_subscribers:'{{count}} Subscribers', number_of_points:'{{count}} Points', + number_online:'{{count}} Users Online', name: 'Name', title: 'Title', category: 'Category',