fix IrcColors

This commit is contained in:
Vendicated 2025-06-17 22:37:56 +02:00
parent 0444831073
commit 7779e5a1ec
No known key found for this signature in database
GPG key ID: D66986BAF75ECF18

View file

@ -67,9 +67,8 @@ export default definePlugin({
find: '="SYSTEM_TAG"', find: '="SYSTEM_TAG"',
replacement: { replacement: {
// Override colorString with our custom color and disable gradients if applying the custom color. // Override colorString with our custom color and disable gradients if applying the custom color.
match: /&&null!=\i\.secondaryColor,(?<=colorString:(\i).+?(\i)=.+?)/, match: /(?<=colorString:\i,colorStrings:\i,colorRoleName:\i}=)(\i),/,
replace: (m, colorString, hasGradientColors) => `${m}` + replace: "$self.wrapMessageColorProps($1, arguments[0]),"
`vcIrcColorsDummy=[${colorString},${hasGradientColors}]=$self.getMessageColorsVariables(arguments[0],${hasGradientColors}),`
} }
}, },
{ {
@ -82,11 +81,26 @@ export default definePlugin({
} }
], ],
getMessageColorsVariables(context: any, hasGradientColors: boolean) { wrapMessageColorProps(colorProps: { colorString: string, colorStrings?: Record<"primaryColor" | "secondaryColor" | "tertiaryColor", string>; }, context: any) {
const colorString = this.calculateNameColorForMessageContext(context); try {
const originalColorString = context?.author?.colorString; const colorString = this.calculateNameColorForMessageContext(context);
if (colorString === colorProps.colorString) {
return colorProps;
}
return [colorString, hasGradientColors && colorString === originalColorString]; return {
...colorProps,
colorString,
colorStrings: colorProps.colorStrings && {
primaryColor: colorString,
secondaryColor: undefined,
tertiaryColor: undefined
}
};
} catch (e) {
console.error("Failed to calculate message color strings:", e);
return colorProps;
}
}, },
calculateNameColorForMessageContext(context: any) { calculateNameColorForMessageContext(context: any) {
@ -108,16 +122,20 @@ export default definePlugin({
}, },
calculateNameColorForListContext(context: any) { calculateNameColorForListContext(context: any) {
const id = context?.user?.id; try {
const colorString = context?.colorString; const id = context?.user?.id;
const color = calculateNameColorForUser(id); const colorString = context?.colorString;
const color = calculateNameColorForUser(id);
if (settings.store.applyColorOnlyInDms && !context?.channel?.isPrivate()) { if (settings.store.applyColorOnlyInDms && !context?.channel?.isPrivate()) {
return colorString; return colorString;
}
return (!settings.store.applyColorOnlyToUsersWithoutColor || !colorString)
? color
: colorString;
} catch (e) {
console.error("Failed to calculate name color for list context:", e);
} }
return (!settings.store.applyColorOnlyToUsersWithoutColor || !colorString)
? color
: colorString;
} }
}); });