import React from 'react'; import { seafileAPI } from '../../utils/seafile-api'; import { gettext, siteRoot } from '../../utils/constants'; import NoticeItem from './notice-item'; class Notification extends React.Component { constructor(props) { super(props); this.state = { showNotice: false, unseenCount: 0, noticeList: [], }; } componentDidMount() { seafileAPI.getUnseenNotificationCount().then(res => { this.setState({unseenCount: res.data.unseen_count}); }); } onClick = (e) => { e.preventDefault(); if (this.state.showNotice) { seafileAPI.updateNotifications(); this.setState({ showNotice: false, unseenCount: 0 }); } else { this.loadNotices(); this.setState({showNotice: true}); } } loadNotices = () => { let page = 1; let perPage = 5; seafileAPI.listNotifications(page, perPage).then(res => { let noticeList = res.data.notification_list; this.setState({noticeList: noticeList}); }); } onNoticeItemClick = (noticeItem) => { let noticeList = this.state.noticeList.map(item => { if (item.id === noticeItem.id) { item.seen = true; } return item; }); seafileAPI.markNoticeAsRead(noticeItem.id); let unseenCount = this.state.unseenCount === 0 ? 0 : this.state.unseenCount - 1; this.setState({ noticeList: noticeList, unseenCount: unseenCount, }); } render() { return (