Fix frontend crash when deleting announcements (#13312)
Refactor and fix #13283, which only worked in some cases.gh/stable
parent
beb80adb51
commit
858d0dd168
|
@ -378,6 +378,14 @@ class Announcements extends ImmutablePureComponent {
|
||||||
index: 0,
|
index: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static getDerivedStateFromProps(props, state) {
|
||||||
|
if (props.announcements.size > 0 && state.index >= props.announcements.size) {
|
||||||
|
return { index: props.announcements.size - 1 };
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
componentDidMount () {
|
componentDidMount () {
|
||||||
this._markAnnouncementAsRead();
|
this._markAnnouncementAsRead();
|
||||||
}
|
}
|
||||||
|
@ -389,7 +397,7 @@ class Announcements extends ImmutablePureComponent {
|
||||||
_markAnnouncementAsRead () {
|
_markAnnouncementAsRead () {
|
||||||
const { dismissAnnouncement, announcements } = this.props;
|
const { dismissAnnouncement, announcements } = this.props;
|
||||||
const { index } = this.state;
|
const { index } = this.state;
|
||||||
const announcement = announcements.get(index) || announcements.get(index - 1);
|
const announcement = announcements.get(index);
|
||||||
if (!announcement.get('read')) dismissAnnouncement(announcement.get('id'));
|
if (!announcement.get('read')) dismissAnnouncement(announcement.get('id'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,7 +415,7 @@ class Announcements extends ImmutablePureComponent {
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { announcements, intl } = this.props;
|
const { announcements, intl } = this.props;
|
||||||
const index = this.state.index < announcements.size ? this.state.index : announcements.size - 1;
|
const { index } = this.state;
|
||||||
|
|
||||||
if (announcements.isEmpty()) {
|
if (announcements.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
|
|
Reference in New Issue