Render emotes in spoilers
This commit is contained in:
parent
2a6cbd39b7
commit
b3ba1aef13
|
@ -75,12 +75,14 @@ export default class BuiltinModule {
|
||||||
*/
|
*/
|
||||||
patch(module, fnName, cb, when = 'after') {
|
patch(module, fnName, cb, when = 'after') {
|
||||||
if (!['before', 'after', 'instead'].includes(when)) when = 'after';
|
if (!['before', 'after', 'instead'].includes(when)) when = 'after';
|
||||||
Patch(`BD:${this.moduleName}`, module)[when](fnName, cb.bind(this));
|
return Patch(`BD:${this.moduleName}`, module)[when](fnName, cb.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
childPatch(module, fnName, child, cb, when = 'after') {
|
childPatch(module, fnName, child, cb, when = 'after') {
|
||||||
|
const last = child.pop();
|
||||||
|
|
||||||
this.patch(module, fnName, (component, args, retVal) => {
|
this.patch(module, fnName, (component, args, retVal) => {
|
||||||
this.patch(retVal[child[0]], child[1], cb, when);
|
const unpatch = this.patch(child.reduce((obj, key) => obj[key], retVal), last, function() {unpatch(); return cb.apply(this, arguments);}, when);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,7 @@ export default new class EmoteModule extends BuiltinModule {
|
||||||
async applyPatches() {
|
async applyPatches() {
|
||||||
this.patchMessageContent();
|
this.patchMessageContent();
|
||||||
this.patchSendAndEdit();
|
this.patchSendAndEdit();
|
||||||
|
this.patchSpoiler();
|
||||||
|
|
||||||
const MessageAccessories = await ReactComponents.getComponent('MessageAccessories');
|
const MessageAccessories = await ReactComponents.getComponent('MessageAccessories');
|
||||||
this.patch(MessageAccessories.component.prototype, 'render', this.afterRenderMessageAccessories, 'after');
|
this.patch(MessageAccessories.component.prototype, 'render', this.afterRenderMessageAccessories, 'after');
|
||||||
|
@ -244,6 +245,22 @@ export default new class EmoteModule extends BuiltinModule {
|
||||||
this.patch(MessageActions, 'editMessage', this.handleEditMessage, 'instead');
|
this.patch(MessageActions, 'editMessage', this.handleEditMessage, 'instead');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async patchSpoiler() {
|
||||||
|
const Spoiler = await ReactComponents.getComponent('Spoiler');
|
||||||
|
this.childPatch(Spoiler.component.prototype, 'render', ['props', 'children', 'props', 'children'], this.afterRenderSpoiler);
|
||||||
|
Spoiler.forceUpdateAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
afterRenderSpoiler(component, args, retVal) {
|
||||||
|
const markup = Utils.findInReactTree(retVal, filter =>
|
||||||
|
filter &&
|
||||||
|
filter.className &&
|
||||||
|
filter.className.includes('inlineContent'));
|
||||||
|
if (!markup) return;
|
||||||
|
|
||||||
|
markup.children = this.processMarkup(markup.children);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle message render
|
* Handle message render
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -378,6 +378,11 @@ export class ReactAutoPatcher {
|
||||||
this.MessageContent = await ReactComponents.getComponent('MessageContent', {selector}, c => c.defaultProps && c.defaultProps.hasOwnProperty('disableButtons'));
|
this.MessageContent = await ReactComponents.getComponent('MessageContent', {selector}, c => c.defaultProps && c.defaultProps.hasOwnProperty('disableButtons'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async patchSpoiler() {
|
||||||
|
const { selector } = Reflection.resolve('spoilerText', 'spoilerContainer');
|
||||||
|
this.Spoiler = await ReactComponents.getComponent('Spoiler', {selector}, c => c.prototype.renderSpoilerText);
|
||||||
|
}
|
||||||
|
|
||||||
static async patchMessageAccessories() {
|
static async patchMessageAccessories() {
|
||||||
const { selector } = Reflection.resolve('container', 'containerCozy', 'embedWrapper');
|
const { selector } = Reflection.resolve('container', 'containerCozy', 'embedWrapper');
|
||||||
this.MessageAccessories = await ReactComponents.getComponent('MessageAccessories', {selector});
|
this.MessageAccessories = await ReactComponents.getComponent('MessageAccessories', {selector});
|
||||||
|
|
Loading…
Reference in New Issue