fix betterActivities random open errors, fix second object pushback to (#1009)
first
This commit is contained in:
parent
258b7524b5
commit
4d246b5190
4 changed files with 13 additions and 6 deletions
|
|
@ -11,7 +11,7 @@ import { cl } from "../utils";
|
|||
import { Caret } from "./Caret";
|
||||
|
||||
export function CarouselControls({ activities, currentActivity, onActivityChange }: CarouselControlsProps) {
|
||||
const currentIndex = activities.indexOf(currentActivity);
|
||||
const currentIndex = activities.findIndex(a => a.id === currentActivity.id);
|
||||
|
||||
return (
|
||||
<div
|
||||
|
|
@ -48,7 +48,7 @@ export function CarouselControls({ activities, currentActivity, onActivityChange
|
|||
<div
|
||||
key={"dot--" + index}
|
||||
onClick={() => onActivityChange(activity)}
|
||||
className={cl("controls-dot", currentActivity === activity && "controls-selected")} />
|
||||
className={cl("controls-dot", currentActivity.id === activity.id && "controls-selected")} />
|
||||
))}
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import ErrorBoundary from "@components/ErrorBoundary";
|
||||
import { Activity } from "@vencord/discord-types";
|
||||
import { findComponentByCodeLazy } from "@webpack";
|
||||
import { React, Tooltip } from "@webpack/common";
|
||||
import { JSX } from "react";
|
||||
|
|
@ -18,11 +19,12 @@ import { cl, getApplicationIcons } from "../utils";
|
|||
// Discord no longer shows an icon here by default but we use the one from the popout now here
|
||||
const DefaultActivityIcon = findComponentByCodeLazy("M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H5Zm6.81 7c-.54 0-1 .26-1.23.61A1 1 0 0 1 8.92 8.5 3.49 3.49 0 0 1 11.82 7c1.81 0 3.43 1.38 3.43 3.25 0 1.45-.98 2.61-2.27 3.06a1 1 0 0 1-1.96.37l-.19-1a1 1 0 0 1 .98-1.18c.87 0 1.44-.63 1.44-1.25S12.68 9 11.81 9ZM13 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm7-10.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM18.5 20a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM7 18.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM5.5 7a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z");
|
||||
|
||||
export function patchActivityList({ activities, user, hideTooltip }: ActivityListProps): JSX.Element | null {
|
||||
export function patchActivityList({ activities: rawActivities, user, hideTooltip }: ActivityListProps): JSX.Element | null {
|
||||
const icons: ActivityListIcon[] = [];
|
||||
|
||||
if (user.bot || settings.store.hideTooltip && hideTooltip) return null;
|
||||
|
||||
const activities = rawActivities.filter((a): a is Activity => a != null);
|
||||
const applicationIcons = getApplicationIcons(activities);
|
||||
if (applicationIcons.length) {
|
||||
const compareImageSource = (a: ApplicationIcon, b: ApplicationIcon) => {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export function showAllActivitiesComponent({ activity, user, ...props }: Readonl
|
|||
|
||||
const activities = useStateFromStores(
|
||||
[PresenceStore],
|
||||
() => PresenceStore.getActivities(user.id).filter((activity: Activity) => activity.type !== 4)
|
||||
() => PresenceStore.getActivities(user.id).filter((activity: Activity) => activity != null && activity.type !== 4)
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
|
@ -33,8 +33,12 @@ export function showAllActivitiesComponent({ activity, user, ...props }: Readonl
|
|||
return;
|
||||
}
|
||||
|
||||
if (!currentActivity || !activities.includes(currentActivity))
|
||||
const existing = currentActivity && activities.find(a => a.id === currentActivity.id);
|
||||
if (!existing) {
|
||||
setCurrentActivity(activities[0]);
|
||||
} else if (existing !== currentActivity) {
|
||||
setCurrentActivity(existing);
|
||||
}
|
||||
}, [activities]);
|
||||
|
||||
// we use these for other activities, it would be better to somehow get the corresponding activity props
|
||||
|
|
@ -47,6 +51,7 @@ export function showAllActivitiesComponent({ activity, user, ...props }: Readonl
|
|||
if (!activities.length) return null;
|
||||
|
||||
if (settings.store.allActivitiesStyle === "carousel") {
|
||||
if (!currentActivity) return null;
|
||||
return (
|
||||
<ErrorBoundary noop>
|
||||
<div style={{ display: "flex", flexDirection: "column" }}>
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ export function getActivityApplication(activity: Activity | null) {
|
|||
|
||||
export function getApplicationIcons(activities: Activity[], preferSmall = false): ApplicationIcon[] {
|
||||
const applicationIcons: ApplicationIcon[] = [];
|
||||
const applications = activities.filter(activity => activity.application_id || activity.platform || activity?.id?.startsWith("spotify:"));
|
||||
const applications = activities.filter(activity => activity != null && (activity.application_id || activity.platform || activity.id?.startsWith("spotify:")));
|
||||
|
||||
for (const activity of applications) {
|
||||
const { assets, application_id, platform, id } = activity;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue