1 import { Link } from "inferno-router";
6 } from "lemmy-js-client";
7 import { i18n } from "../../i18next";
8 import { numToSI } from "../../utils";
10 interface BadgesProps {
11 counts: CommunityAggregates | SiteAggregates;
13 community_view?: CommunityView;
16 const isCommunityAggregates = (
17 counts: CommunityAggregates | SiteAggregates
18 ): counts is CommunityAggregates => {
19 return "subscribers" in counts;
22 export const Badges = ({ counts, community_view, online }: BadgesProps) => {
24 <ul className="my-1 list-inline">
25 <li className="list-inline-item badge badge-secondary">
26 {i18n.t("number_online", {
28 formattedCount: numToSI(online),
32 className="list-inline-item badge badge-secondary pointer"
33 data-tippy-content={i18n.t("active_users_in_the_last_day", {
34 count: Number(counts.users_active_day),
35 formattedCount: numToSI(counts.users_active_day),
38 {i18n.t("number_of_users", {
39 count: Number(counts.users_active_day),
40 formattedCount: numToSI(counts.users_active_day),
45 className="list-inline-item badge badge-secondary pointer"
46 data-tippy-content={i18n.t("active_users_in_the_last_week", {
47 count: Number(counts.users_active_week),
48 formattedCount: numToSI(counts.users_active_week),
51 {i18n.t("number_of_users", {
52 count: Number(counts.users_active_week),
53 formattedCount: numToSI(counts.users_active_week),
58 className="list-inline-item badge badge-secondary pointer"
59 data-tippy-content={i18n.t("active_users_in_the_last_month", {
60 count: Number(counts.users_active_month),
61 formattedCount: numToSI(counts.users_active_month),
64 {i18n.t("number_of_users", {
65 count: Number(counts.users_active_month),
66 formattedCount: numToSI(counts.users_active_month),
71 className="list-inline-item badge badge-secondary pointer"
72 data-tippy-content={i18n.t("active_users_in_the_last_six_months", {
73 count: Number(counts.users_active_half_year),
74 formattedCount: numToSI(counts.users_active_half_year),
77 {i18n.t("number_of_users", {
78 count: Number(counts.users_active_half_year),
79 formattedCount: numToSI(counts.users_active_half_year),
81 / {i18n.t("number_of_months", { count: 6, formattedCount: 6 })}
83 {isCommunityAggregates(counts) && (
84 <li className="list-inline-item badge badge-secondary">
85 {i18n.t("number_of_subscribers", {
86 count: Number(counts.subscribers),
87 formattedCount: numToSI(counts.subscribers),
91 <li className="list-inline-item badge badge-secondary">
92 {i18n.t("number_of_posts", {
93 count: Number(counts.posts),
94 formattedCount: numToSI(counts.posts),
97 <li className="list-inline-item badge badge-secondary">
98 {i18n.t("number_of_comments", {
99 count: Number(counts.comments),
100 formattedCount: numToSI(counts.comments),
103 <li className="list-inline-item">
105 className="badge badge-primary"
106 to={`/modlog/${community_view ?? community_view?.community.id}`}