+8
packages/core-extensions/src/componentEditor/index.ts
+8
packages/core-extensions/src/componentEditor/index.ts
···
59
`children:require("componentEditor_messages").default._patchUsername(${elements},arguments[0])`
60
}
61
]
62
+
},
63
+
{
64
+
find: '.provider&&"Discord"===',
65
+
replace: {
66
+
match: /(?<=\.container\),)children:(\[.+?this\.renderSuppressConfirmModal\(\),.+?\])}\)/,
67
+
replacement: (_, elements) =>
68
+
`children:require("componentEditor_messages").default._patchAccessories(${elements},this.props)})`
69
+
}
70
}
71
];
72
+15
packages/core-extensions/src/componentEditor/webpackModules/messages.tsx
+15
packages/core-extensions/src/componentEditor/webpackModules/messages.tsx
···
12
const username: Record<string, MessageUsername> = {};
13
const usernameBadges: Record<string, MessageUsernameBadge> = {};
14
const badges: Record<string, MessageBadge> = {};
15
16
function addEntries(
17
elements: React.ReactNode[],
···
40
const index = elements.indexOf(originalElements[indicies[entry.anchor]!]);
41
elements.splice(index! + (entry.before ? 0 : 1), 0, component);
42
}
43
}
44
}
45
···
65
before
66
};
67
},
68
_patchUsername(elements, props) {
69
addEntries(elements, username, MessageUsernameIndicies, props);
70
return elements;
···
75
},
76
_patchBadges(elements, props) {
77
addEntries(elements, badges, MessageBadgeIndicies, props);
78
return elements;
79
}
80
};
···
12
const username: Record<string, MessageUsername> = {};
13
const usernameBadges: Record<string, MessageUsernameBadge> = {};
14
const badges: Record<string, MessageBadge> = {};
15
+
const accessories: Record<string, React.FC<any>> = {};
16
17
function addEntries(
18
elements: React.ReactNode[],
···
41
const index = elements.indexOf(originalElements[indicies[entry.anchor]!]);
42
elements.splice(index! + (entry.before ? 0 : 1), 0, component);
43
}
44
+
}
45
+
}
46
+
47
+
function addComponents(elements: React.ReactNode[], components: Record<string, React.FC<any>>, props: any) {
48
+
for (const [id, Component] of Object.entries(components)) {
49
+
const component = <Component {...props} key={id} />;
50
+
elements.push(component);
51
}
52
}
53
···
73
before
74
};
75
},
76
+
addAccessory(id, component) {
77
+
accessories[id] = component;
78
+
},
79
_patchUsername(elements, props) {
80
addEntries(elements, username, MessageUsernameIndicies, props);
81
return elements;
···
86
},
87
_patchBadges(elements, props) {
88
addEntries(elements, badges, MessageBadgeIndicies, props);
89
+
return elements;
90
+
},
91
+
_patchAccessories(elements, props) {
92
+
addComponents(elements, accessories, props);
93
return elements;
94
}
95
};
+17
packages/types/src/coreExtensions/componentEditor.ts
+17
packages/types/src/coreExtensions/componentEditor.ts
···
121
}
122
123
export type Messages = {
124
addToUsername: (id: string, component: React.FC<any>, anchor?: MessageUsernameAnchors, before?: boolean) => void;
125
addUsernameBadge: (
126
id: string,
127
component: React.FC<any>,
128
anchor?: MessageUsernameBadgeAnchors,
129
before?: boolean
130
) => void;
131
addBadge: (id: string, component: React.FC<any>, anchor?: MessageBadgeAnchors, before?: boolean) => void;
132
/**
133
* @private
134
*/
135
_patchUsername: Patcher<any>;
···
141
* @private
142
*/
143
_patchBadges: Patcher<any>;
144
};
145
//#endregion
···
121
}
122
123
export type Messages = {
124
+
/**
125
+
* Adds a component to the username of a message
126
+
*/
127
addToUsername: (id: string, component: React.FC<any>, anchor?: MessageUsernameAnchors, before?: boolean) => void;
128
+
/**
129
+
* Adds a component to the username badge area of a message (e.g. where role icons/new member badge is)
130
+
*/
131
addUsernameBadge: (
132
id: string,
133
component: React.FC<any>,
134
anchor?: MessageUsernameBadgeAnchors,
135
before?: boolean
136
) => void;
137
+
/**
138
+
* Adds a component to the end of a message header (e.g. silent indicator)
139
+
*/
140
addBadge: (id: string, component: React.FC<any>, anchor?: MessageBadgeAnchors, before?: boolean) => void;
141
/**
142
+
* Adds a component to message accessories (e.g. embeds)
143
+
*/
144
+
addAccessory: (id: string, component: React.FC<any>) => void;
145
+
/**
146
* @private
147
*/
148
_patchUsername: Patcher<any>;
···
154
* @private
155
*/
156
_patchBadges: Patcher<any>;
157
+
/**
158
+
* @private
159
+
*/
160
+
_patchAccessories: Patcher<any>;
161
};
162
//#endregion