mirror of
				https://github.com/karl0ss/homepage.git
				synced 2025-11-03 16:01:00 +00:00 
			
		
		
		
	Merge pull request #229 from DevPGSV/feature/widget_mastodon
Add Mastodon widget
This commit is contained in:
		
						commit
						0e6ea57023
					
				@ -168,5 +168,10 @@
 | 
			
		||||
    "jackett": {
 | 
			
		||||
        "configured": "Configured",
 | 
			
		||||
        "errored": "Errored"
 | 
			
		||||
    },
 | 
			
		||||
    "mastodon": {
 | 
			
		||||
        "user_count": "Users",
 | 
			
		||||
        "status_count": "Posts",
 | 
			
		||||
        "domain_count": "Domains"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -27,6 +27,7 @@ import Gotify from "./widgets/service/gotify";
 | 
			
		||||
import Prowlarr from "./widgets/service/prowlarr";
 | 
			
		||||
import Jackett from "./widgets/service/jackett";
 | 
			
		||||
import AdGuard from "./widgets/service/adguard";
 | 
			
		||||
import Mastodon from "./widgets/service/mastodon";
 | 
			
		||||
 | 
			
		||||
const widgetMappings = {
 | 
			
		||||
  docker: Docker,
 | 
			
		||||
@ -56,6 +57,7 @@ const widgetMappings = {
 | 
			
		||||
  prowlarr: Prowlarr,
 | 
			
		||||
  jackett: Jackett,
 | 
			
		||||
  adguard: AdGuard,
 | 
			
		||||
  mastodon: Mastodon,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default function Widget({ service }) {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										37
									
								
								src/components/services/widgets/service/mastodon.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/components/services/widgets/service/mastodon.jsx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
import useSWR from "swr";
 | 
			
		||||
import { useTranslation } from "react-i18next";
 | 
			
		||||
 | 
			
		||||
import Widget from "../widget";
 | 
			
		||||
import Block from "../block";
 | 
			
		||||
 | 
			
		||||
import { formatApiUrl } from "utils/api-helpers";
 | 
			
		||||
 | 
			
		||||
export default function Mastodon({ service }) {
 | 
			
		||||
  const { t } = useTranslation();
 | 
			
		||||
 | 
			
		||||
  const config = service.widget;
 | 
			
		||||
 | 
			
		||||
  const { data: statsData, error: statsError } = useSWR(formatApiUrl(config, `instance`));
 | 
			
		||||
 | 
			
		||||
  if (statsError) {
 | 
			
		||||
    return <Widget error={t("widget.api_error")} />;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!statsData) {
 | 
			
		||||
    return (
 | 
			
		||||
      <Widget>
 | 
			
		||||
        <Block label={t("mastodon.user_count")} />
 | 
			
		||||
        <Block label={t("mastodon.status_count")} />
 | 
			
		||||
        <Block label={t("mastodon.domain_count")} />
 | 
			
		||||
      </Widget>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <Widget>
 | 
			
		||||
      <Block label={t("mastodon.user_count")}   value={t("common.number", { value: statsData.stats.user_count })} />
 | 
			
		||||
      <Block label={t("mastodon.status_count")} value={t("common.number", { value: statsData.stats.status_count })} />
 | 
			
		||||
      <Block label={t("mastodon.domain_count")} value={t("common.number", { value: statsData.stats.domain_count })} />
 | 
			
		||||
    </Widget>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
@ -81,6 +81,7 @@ const serviceProxyHandlers = {
 | 
			
		||||
  sabnzbd: genericProxyHandler,
 | 
			
		||||
  jackett: genericProxyHandler,
 | 
			
		||||
  adguard: genericProxyHandler,
 | 
			
		||||
  mastodon: genericProxyHandler,
 | 
			
		||||
  // uses X-API-Key (or similar) header auth
 | 
			
		||||
  gotify: credentialedProxyHandler,
 | 
			
		||||
  portainer: credentialedProxyHandler,
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,7 @@ const formats = {
 | 
			
		||||
  prowlarr: `{url}/api/v1/{endpoint}`,
 | 
			
		||||
  jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true`,
 | 
			
		||||
  adguard: `{url}/control/{endpoint}`,
 | 
			
		||||
  mastodon: `{url}/api/v1/{endpoint}`,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function formatApiCall(api, args) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user