Files
discord-decomp/modules/content_inventory/ContentInventoryActivityImageUtils.tsx
T
2026-11-01 12:12:55 +02:00

263 lines
9.2 KiB
TypeScript

// Metro module 11990 (f11991).
import { useEffect } from "react";
import ApplicationStore from "../applications/ApplicationStore";
import { AnalyticEvents, PlatformTypes } from "../../Constants";
import { ImageSizes } from "../activities/Constants";
import { isListenedSessionEntry, isWatchedMediaEntry, isTopArtistEntry } from "./ContentInventoryTypes";
import { getAssetImage } from "../../utils/ApplicationAssetUtils";
import { intl, t } from "../../intl/index.native";
import useEntryActivityAndApplication from "./useEntryActivityAndApplication";
import { useGame } from "../games/hooks/useGame";
import { isStageActivity, unpackStageChannelParty } from "../stage_channels/StageChannelRichPresenceUtils";
import AvatarUtils from "../../utils/AvatarUtils";
import isOnXbox from "../activities/utils/isOnXbox";
import Platforms from "../../lib/Platforms";
import isOnPlayStation from "../activities/utils/isOnPlayStation";
import { useGetOrFetchApplication } from "../applications/useGetOrFetchApplications";
import { useStateFromStores } from "../../_bundle/Module589";
import AnalyticsUtils from "../../utils/AnalyticsUtils";
import isCrunchyrollActivity from "../activities/utils/isCrunchyrollActivity";
let useTrackActivityDefaultIcon, useRichImageForActivity;
const useComputedImagesForActivity = function useComputedImagesForActivity(activity, a1) {
let r50;
L28: {
const richImageForActivity = useRichImageForActivity(activity, a1);
const { largeImage, smallImage } = richImageForActivity;
if (largeImage != null) {
r50 = {
largeImage,
smallImage
};
} else if (isStageActivity(activity)) {
const r93 = unpackStageChannelParty(activity);
const src2 = r93 != null ? AvatarUtils.getGuildIconURL({
id: r93.guildId,
icon: activity == null ? void 0 : activity.assets?.small_image,
size: ImageSizes.SMALL
}) : void 0;
r50 = {
largeImage: src2 != null ? {
src: src2
} : void 0,
smallImage: void 0
};
} else if (isOnXbox(activity)) {
r50 = {
largeImage: {
src: Platforms.get(PlatformTypes.XBOX).icon.customPNG,
alt: intl.string(t.Nfvo72)
},
smallImage: void 0
};
} else {
if (smallImage == null && isOnPlayStation(activity)) {
r50 = {
largeImage: {
src: Platforms.get(PlatformTypes.PLAYSTATION).icon.lightPNG,
alt: intl.string(t.fFl4jo)
},
smallImage: void 0
};
break L28;
}
const src = a1 == null ? void 0 : a1.getIconURL(ImageSizes.LARGE);
const name2 = a1?.name;
const largeImage2 = src != null ? {
src,
alt: name2 == null ? intl.string(t["2B/phM"]) : intl.formatToPlainString(t.tiKyYg, {
applicationName: name2
})
} : void 0;
r50 = largeImage2 != null ? {
largeImage: largeImage2,
smallImage
} : {
largeImage: smallImage,
smallImage: void 0
};
}
}
return r50;
};
useTrackActivityDefaultIcon = function useTrackActivityDefaultIcon({ activity, application, largeImageSrc, trackingSource }) {
let stateFromStores, application_found, c19323_4, name, type, session_id, has_rich_assets, c19323_9;
stateFromStores = void 0;
application_found = void 0;
c19323_4 = void 0;
name = void 0;
type = void 0;
session_id = void 0;
has_rich_assets = void 0;
c19323_9 = void 0;
const application_id = activity?.application_id;
const getOrFetchApplication = useGetOrFetchApplication(application_id);
const stateFromStores2 = useStateFromStores([ApplicationStore], () => application_id != null && ApplicationStore.didFetchingApplicationFail(application_id));
stateFromStores = application_id == null || getOrFetchApplication != null || stateFromStores2;
application_found = getOrFetchApplication != null || application != null;
const r5 = largeImageSrc == null;
c19323_4 = r5;
name = activity?.name;
type = activity?.type;
session_id = activity?.session_id;
has_rich_assets = (activity == null ? void 0 : activity.assets?.large_image) != null || (activity == null ? void 0 : activity.assets?.small_image) != null;
const r42 = activity != null;
c19323_9 = r42;
useEffect(() => {
if (c19323_9 && stateFromStores && c19323_4) {
AnalyticsUtils.track(AnalyticEvents.ACTIVITY_DEFAULT_ICON_SHOWN, {
source: trackingSource,
application_id,
activity_name: name,
activity_type: type,
activity_session_id: session_id,
application_found,
has_rich_assets
});
}
}, [trackingSource, r42, stateFromStores, r5, application_id, name, type, session_id, application_found, has_rich_assets]);
};
useRichImageForActivity = function useRichImageForActivity(activity, activityApplication) {
const getOrFetchApplication = useGetOrFetchApplication(activity?.application_id);
if (activity == null) {
return {
largeImage: void 0,
smallImage: void 0
};
}
const r14 = activity == null ? void 0 : activity.assets?.large_image;
const r22 = r14 != null;
let largeImage = void 0;
if (r22) {
const r28 = {
src: getAssetImage(activity.application_id, r14, [ImageSizes.LARGE, ImageSizes.LARGE]),
text: null,
url: null
};
const assets = activity.assets;
const r30 = assets == null;
let text = void 0;
if (!r30) {
const large_text = assets.large_text;
text = large_text == null ? void 0 : large_text.trim();
}
r28.text = text;
r28.url = activity.assets?.large_url;
largeImage = r28;
}
const r42 = isCrunchyrollActivity(activity) ? void 0 : activity == null ? void 0 : activity.assets?.small_image;
const r47 = r42 != null;
let smallImage = void 0;
if (r47) {
const r57 = {
src: getAssetImage(activity.application_id, r42, [ImageSizes.LARGE, ImageSizes.LARGE]),
text: null,
url: null
};
const assets2 = activity.assets;
const r59 = assets2 == null;
let text2 = void 0;
if (!r59) {
const small_text = assets2.small_text;
text2 = small_text == null ? void 0 : small_text.trim();
}
r57.text = text2;
r57.url = activity.assets?.small_url;
smallImage = r57;
}
if (largeImage == null) {
const r67 = activityApplication == null ? getOrFetchApplication : activityApplication;
const src = r67 == null ? void 0 : r67.getIconURL(ImageSizes.LARGE);
const name2 = r67?.name;
largeImage = src != null ? {
src,
alt: name2 == null ? intl.string(t["2B/phM"]) : intl.formatToPlainString(t.tiKyYg, {
applicationName: name2
})
} : void 0;
}
return {
largeImage,
smallImage
};
};
export function getApplicationImage(a0) {
const src = a0 == null ? void 0 : a0.getIconURL(ImageSizes.LARGE);
const name2 = a0?.name;
if (src != null) {
return {
src,
alt: name2 == null ? intl.string(t["2B/phM"]) : intl.formatToPlainString(t.tiKyYg, {
applicationName: name2
})
};
}
}
export function useImageForContentEntry({ entry, showCoverImage = true, trackingSource: trackingSource2 }) {
let r76;
const entryActivityAndApplication = useEntryActivityAndApplication(entry);
const { activity, activityApplication } = entryActivityAndApplication;
let fallbackApplication = entryActivityAndApplication.fallbackApplication;
const r13 = fallbackApplication == null ? activityApplication : fallbackApplication;
const richImageForActivity = useRichImageForActivity(activity, activityApplication);
const { largeImage, smallImage } = richImageForActivity;
const largeImage2 = useComputedImagesForActivity(activity, r13).largeImage;
const data = useGame(r13 == null ? void 0 : r13.getCanonicalGameId()).data;
const src = data == null ? void 0 : data.getCoverURL();
const largeImage3 = isListenedSessionEntry(entry) && entry.extra.entries.length > 0 ? {
src: entry.extra.entries[0].media.image_url
} : isWatchedMediaEntry(entry) ? {
src: getAssetImage(entry.extra.application_id, entry.extra.media_assets_large_image, ImageSizes.LARGE),
alt: entry.extra.media_title
} : isTopArtistEntry(entry) ? {
src: entry.extra.media.image_url
} : void 0;
L27: {
if (largeImage != null) {
r76 = {
largeImage,
smallImage
};
} else if (largeImage3 != null) {
r76 = {
largeImage: largeImage3,
smallImage: void 0
};
} else {
if (src != null && showCoverImage) {
r76 = {
largeImage: {
src
},
smallImage: void 0
};
break L27;
}
r76 = {
largeImage: largeImage2,
smallImage: void 0
};
}
}
if (fallbackApplication == null) {
fallbackApplication = activityApplication;
}
useTrackActivityDefaultIcon({
activity,
application: fallbackApplication,
largeImageSrc: r76.largeImage?.src,
trackingSource: trackingSource2
});
return r76;
}
export function useImageForActivity(a0, a1, a2) {
const computedImagesForActivity = useComputedImagesForActivity(a0, a1);
useTrackActivityDefaultIcon({
activity: a0,
application: a1,
largeImageSrc: computedImagesForActivity.largeImage?.src,
trackingSource: a2
});
return computedImagesForActivity;
}
export { useRichImageForActivity };