Browse Source

better update announcement

master
hole-thu 3 years ago
parent
commit
aac1f8661c
  1. 50
      src/Flows.js

50
src/Flows.js

@ -1324,6 +1324,7 @@ export class Flow extends PureComponent {
}
this.state = {
submode: submode,
announcement: null,
};
}
@ -1347,15 +1348,23 @@ export class Flow extends PureComponent {
});
}
update_announcement(text) {
if (text !== this.state.announcement) {
this.setState({
announcement: text,
});
}
}
render() {
const { submode } = this.state;
const { submode, announcement } = this.state;
const { mode, show_sidebar, search_text, token } = this.props;
const submode_names = this.get_submode_names(mode);
return (
<>
{window.ANN && window.LAST_ANN !== window.ANN && (
{announcement && window.LAST_ANN !== announcement && (
<Announcement
text={window.ANN}
text={announcement}
show_pid={load_single_meta(show_sidebar, token)}
/>
)}
@ -1375,6 +1384,7 @@ export class Flow extends PureComponent {
<SubFlow
key={submode}
show_sidebar={show_sidebar}
update_announcement={(text) => this.update_announcement(text)}
mode={mode}
submode={submode}
search_text={search_text}
@ -1417,7 +1427,7 @@ class SubFlow extends PureComponent {
if (page > this.state.loaded_pages + 1) throw new Error('bad page');
if (page === this.state.loaded_pages + 1) {
const { mode, search_param } = this.state;
const { token, submode } = this.props;
const { token, submode, update_announcement } = this.props;
console.log('fetching page', page);
cache();
if (mode === 'list') {
@ -1444,22 +1454,26 @@ class SubFlow extends PureComponent {
cache().put(x.pid, parseInt(x.reply, 10), comment_json);
}
});
window.ANN = json.announcement;
this.setState((prev, props) => ({
chunks: {
title: 'News Feed',
data: prev.chunks.data.concat(
json.data.filter(
(x) =>
prev.chunks.data.length === 0 ||
!prev.chunks.data
.slice(-100)
.some((p) => p.pid === x.pid),
this.setState(
(prev, props) => ({
chunks: {
title: 'News Feed',
data: prev.chunks.data.concat(
json.data.filter(
(x) =>
prev.chunks.data.length === 0 ||
!prev.chunks.data
.slice(-100)
.some((p) => p.pid === x.pid),
),
),
),
},
loading_status: 'done',
}),
() => {
update_announcement(json.announcement);
},
loading_status: 'done',
}));
);
})
.catch(failed);
} else if (mode === 'search' && search_param) {

Loading…
Cancel
Save