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