import * as PatcherBase from './base'; let goosemodScope = {}; export const setThisScope = (scope) => { goosemodScope = scope; }; export const patch = (name, imgUrl, forIds, clickHandler = (() => {}), { round = false } = {}) => { const { React } = goosemodScope.webpackModules.common; const Tooltip = goosemodScope.webpackModules.findByDisplayName('Tooltip'); const Clickable = goosemodScope.webpackModules.findByDisplayName('Clickable'); const BadgeClasses = goosemodScope.webpackModules.findByProps('profileBadge24', 'profileBadge22'); const unpatches = []; for (const UserProfileBadgeList of goosemodScope.webpackModules.findByPropsAll('BadgeSizes')) { // there's two near-identical modules: 0 = badge list in new popouts, 1 = profile/other unpatches.push(PatcherBase.patch(UserProfileBadgeList, 'default', ([ { user, size } ], res) => { if (!forIds().includes(user.id)) return res; let sizeClass = BadgeClasses.profileBadge24; switch (size) { case 1: { // User modal sizeClass = BadgeClasses.profileBadge22; break; } case 2: { // User popout sizeClass = BadgeClasses.profileBadge18; break; } } res.props.children.unshift( React.createElement(Tooltip, { position: "top", text: name }, ({ onMouseLeave, onMouseEnter }) => React.createElement(Clickable, { onClick: () => { clickHandler(); }, onMouseEnter, onMouseLeave }, React.createElement('div', { style: { backgroundImage: `url("${imgUrl}")`, borderRadius: round ? '50%' : '' }, className: `${BadgeClasses.profileBadge} ${sizeClass}` }) ) ) ); return res; })); } return () => unpatches.forEach(x => x()); };