Skip to content

Commit 11b932c

Browse files
committed
ui: fix messagepad render, fix #1074
1 parent 3996f6f commit 11b932c

4 files changed

Lines changed: 13 additions & 20 deletions

File tree

packages/ui-default/build/config/webpack.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,6 @@ export default async function (env: { watch?: boolean, production?: boolean, mea
286286
}),
287287
new ExtractCssPlugin({
288288
filename: `[name]-${version}.css?[fullhash:6]`,
289-
chunkFilename: '[name]-[chunkhash:6].chunk.css',
290289
}),
291290
new WebpackManifestPlugin({}),
292291
new webpack.IgnorePlugin({ resourceRegExp: /(^\.\/locale$)/ }),

packages/ui-default/components/messagepad/MessagePadDialogueContentContainer.jsx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ const mapStateToProps = (state) => ({
1818

1919
// eslint-disable-next-line react-refresh/only-export-components
2020
export default connect(mapStateToProps)(class MessagePadDialogueContentContainer extends React.PureComponent {
21-
componentDidMount() {
22-
$(this.refs.list).scrollLock({ strict: true });
23-
}
24-
2521
componentDidUpdate(prevProps) {
26-
const node = this.refs.list;
22+
const node = this.state.ref;
23+
2724
if (this.props.activeId !== prevProps.activeId) {
2825
this.scrollToBottom = true;
2926
this.scrollWithAnimation = false;
@@ -32,6 +29,8 @@ export default connect(mapStateToProps)(class MessagePadDialogueContentContainer
3229
this.scrollWithAnimation = true;
3330
} else this.scrollToBottom = false;
3431

32+
if (!node) return;
33+
$(this.state.ref).scrollLock({ strict: true });
3534
if (this.scrollToBottom) {
3635
const targetScrollTop = node.scrollHeight - node.offsetHeight;
3736
if (this.scrollWithAnimation) {
@@ -93,14 +92,13 @@ export default connect(mapStateToProps)(class MessagePadDialogueContentContainer
9392
return (
9493
<>
9594
<div className="messagepad__header">
96-
{ this.props.item
97-
&& (
98-
<a className="messagepad__content__header__title" href={`/user/${this.props.item.udoc._id}`}>
99-
{`${this.props.item.udoc.uname}(UID: ${this.props.item.udoc._id})`}
100-
</a>
101-
)}
95+
{this.props.item && (
96+
<a className="messagepad__content__header__title" href={`/user/${this.props.item.udoc._id}`}>
97+
{`${this.props.item.udoc.uname}(UID: ${this.props.item.udoc._id})`}
98+
</a>
99+
)}
102100
</div>
103-
<ol className="messagepad__content" ref="list">
101+
<ol className="messagepad__content" ref={(ref) => { this.setState({ ...this.state, ref }); }}>
104102
{this.renderInner()}
105103
</ol>
106104
</>

packages/ui-default/components/messagepad/MessagePadDialogueListContainer.jsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,6 @@ const mapDispatchToProps = (dispatch) => ({
2323

2424
// eslint-disable-next-line react-refresh/only-export-components
2525
export default connect(mapStateToProps, mapDispatchToProps)(class MessagePadDialogueListContainer extends React.PureComponent {
26-
componentDidMount() {
27-
$(this.refs.list).scrollLock({ strict: true });
28-
}
29-
3026
render() {
3127
const orderedDialogues = _.orderBy(
3228
_.values(this.props.dialogues),
@@ -36,7 +32,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(class MessagePadDial
3632
'desc',
3733
);
3834
return (
39-
<ol className="messagepad__list" ref="list">
35+
<ol className="messagepad__list" ref={(ref) => $(ref).scrollLock({ strict: true })}>
4036
{_.map(orderedDialogues, (dialogue) => (
4137
<ListItem
4238
key={dialogue._id}

packages/ui-default/components/messagepad/MessagePadInputContainer.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(class MessagePadInpu
5555
);
5656
if (this.focusInput) {
5757
const { scrollX, scrollY } = window;
58-
this.refs.input.focus();
58+
this.state.ref?.focus();
5959
window.scrollTo(scrollX, scrollY);
6060
}
6161
}
@@ -81,7 +81,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(class MessagePadInpu
8181
<div className={cn}>
8282
<div className="messagepad__textarea-container">
8383
<textarea
84-
ref="input"
84+
ref={(ref) => this.setState({ ...this.state, ref })}
8585
data-markdown
8686
disabled={this.props.isPosting}
8787
value={this.props.inputValue}

0 commit comments

Comments
 (0)