diff --git a/src/plugins/betterActivities/index.tsx b/src/plugins/betterActivities/index.tsx index e0bfaf4ed..bb6ed17c4 100644 --- a/src/plugins/betterActivities/index.tsx +++ b/src/plugins/betterActivities/index.tsx @@ -23,7 +23,7 @@ import ErrorBoundary from "@components/ErrorBoundary"; import { Devs } from "@utils/constants"; import definePlugin from "@utils/types"; import { findComponentByCodeLazy } from "@webpack"; -import { PresenceStore, React, Tooltip, useEffect, useState, useStateFromStores } from "@webpack/common"; +import { PresenceStore, React, Tooltip, useEffect, useMemo, useState, useStateFromStores } from "@webpack/common"; import { User } from "discord-types/general"; import ActivityTooltip from "./components/ActivityTooltip"; @@ -39,6 +39,7 @@ import { IconCSSProperties } from "./types"; import { + getActivityApplication, getApplicationIcons } from "./utils"; @@ -155,14 +156,31 @@ export default definePlugin({ if (!activities.length) return null; + // we use these for other activities, it would be better to somehow get the corresponding activity props + const generalProps = useMemo(() => Object.keys(props).reduce((acc, key) => { + // exclude activity specific props to prevent copying them to all activities (e.g. buttons) + if (key !== "renderActions" && key !== "application") acc[key] = props[key]; + return acc; + }, {} as Omit), [props]); + if (settings.store.allActivitiesStyle === "carousel") { return (
- + {currentActivity?.id === activity?.id ? ( + + ) : ( + + )}
- {activities.map((activity, index) => ( - - ))} + {activities.map((activity, index) => + index === 0 ? ( + ) : ( + + ))}
); } diff --git a/src/plugins/betterActivities/types.ts b/src/plugins/betterActivities/types.ts index 14cc772fa..8925b5898 100644 --- a/src/plugins/betterActivities/types.ts +++ b/src/plugins/betterActivities/types.ts @@ -86,5 +86,6 @@ export interface ActivityViewProps { activity: Activity | null; user: User; application?: Application; + renderActions?: () => JSX.Element; type: string; } diff --git a/src/plugins/betterActivities/utils.ts b/src/plugins/betterActivities/utils.ts index 072f4bd80..dc274d8fe 100644 --- a/src/plugins/betterActivities/utils.ts +++ b/src/plugins/betterActivities/utils.ts @@ -19,6 +19,15 @@ const { fetchApplication }: { const fetchedApplications = new Map(); +export function getActivityApplication({ application_id }: Activity) { + if (!application_id) return undefined; + let application = ApplicationStore.getApplication(application_id); + if (!application && fetchedApplications.has(application_id)) { + application = fetchedApplications.get(application_id) ?? null; + } + return application ?? undefined; +} + // TODO: replace with "renderXboxImage"? const xboxUrl = "https://discord.com/assets/9a15d086141be29d9fcd.png";