84 lines
3.6 KiB
TypeScript
84 lines
3.6 KiB
TypeScript
// Metro module 11996 (f11997).
|
|
import { View } from "react-native";
|
|
import { ActivityTypes } from "../../../Constants";
|
|
import { jsx } from "react/jsx-runtime";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import { HourglassIcon } from "../../../design/components/Icon/native/redesign/generated/HourglassIcon";
|
|
import isEmbeddedActivity from "../../activities/utils/isEmbeddedActivity";
|
|
import { AppsIcon } from "../../../design/components/Icon/native/redesign/generated/AppsIcon";
|
|
import { TvIcon } from "../../../design/components/Icon/native/redesign/generated/TvIcon";
|
|
import { MusicIcon } from "../../../design/components/Icon/native/redesign/generated/MusicIcon";
|
|
import { GameControllerIcon } from "../../../design/components/Icon/native/redesign/generated/GameControllerIcon";
|
|
import { useTimestampTickedNow } from "../../content_inventory/memberlist/useTimestampTickedNow";
|
|
import shouldShowActivityTimeBar from "../utils/shouldShowActivityTimeBar";
|
|
import Module712 from "../../../_bundle/Module712";
|
|
import { ActiveTimestamp } from "../../icymi/native/content_inventory/Badges";
|
|
import { getRichGameStateBadgeText, getEpisodeBadgeText } from "../../content_inventory/utils";
|
|
import { GroupIcon } from "../../../design/components/Icon/native/redesign/generated/GroupIcon";
|
|
import { Text } from "../../../design/components/Text/native/Text";
|
|
import { TopicsIcon } from "../../../design/components/Icon/native/redesign/generated/TopicsIcon";
|
|
const useStyles = createStyles({
|
|
container: {
|
|
display: "flex",
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
gap: 4
|
|
},
|
|
bold: {
|
|
fontWeight: "bold"
|
|
}
|
|
});
|
|
export function TimestampBadge(props) {
|
|
const activity = props.activity;
|
|
const styles = useStyles();
|
|
const now = useTimestampTickedNow().now;
|
|
let start = activity.timestamps?.start;
|
|
if (start == null) {
|
|
start = activity.created_at;
|
|
}
|
|
if (start != null && !shouldShowActivityTimeBar(activity)) {
|
|
const end = activity.timestamps?.end;
|
|
let isCountDown = activity.timestamps?.isCountDown;
|
|
if (isCountDown == null) {
|
|
isCountDown = false;
|
|
}
|
|
let r30 = isCountDown && end != null && end > now;
|
|
if (r30 === void 0) {
|
|
r30 = false;
|
|
}
|
|
return <View style={styles.container}>
|
|
{jsx(r30 ? HourglassIcon : isEmbeddedActivity(activity) ? AppsIcon : activity.type === ActivityTypes.WATCHING ? TvIcon : activity.type === ActivityTypes.LISTENING ? MusicIcon : GameControllerIcon, {
|
|
size: "xxs",
|
|
color: Module712.colors.TEXT_FEEDBACK_POSITIVE
|
|
})}
|
|
<ActiveTimestamp entry={{
|
|
start,
|
|
end,
|
|
isCountDown
|
|
}} style={styles.bold} />
|
|
</View>;
|
|
}
|
|
return null;
|
|
}
|
|
export function PartyBadge(props) {
|
|
const activity = props.activity;
|
|
const styles = useStyles();
|
|
if (!isEmbeddedActivity(activity) && activity.party != null) {
|
|
const richGameStateBadgeText = getRichGameStateBadgeText(activity.state, activity.party);
|
|
return richGameStateBadgeText == null ? null : <View style={styles.container}>
|
|
<GroupIcon size="xxs" color={Module712.colors.TEXT_MUTED} />
|
|
<Text variant="text-sm/medium" color="text-muted">{richGameStateBadgeText}</Text>
|
|
</View>;
|
|
}
|
|
return null;
|
|
}
|
|
export function EpisodeBadge(props) {
|
|
const activity = props.activity;
|
|
const styles = useStyles();
|
|
const episodeBadgeText = getEpisodeBadgeText(activity.assets?.large_text);
|
|
return episodeBadgeText == null ? null : <View style={styles.container}>
|
|
<TopicsIcon size="xxs" color={Module712.colors.TEXT_MUTED} />
|
|
<Text variant="text-sm/medium" color="text-muted">{episodeBadgeText}</Text>
|
|
</View>;
|
|
}
|