diff --git a/frontend/src/issues-list-board/issues-list-boards.tsx b/frontend/src/issues-list-board/issues-list-boards.tsx index 82af229..c404685 100644 --- a/frontend/src/issues-list-board/issues-list-boards.tsx +++ b/frontend/src/issues-list-board/issues-list-boards.tsx @@ -2,6 +2,8 @@ import { observer } from 'mobx-react-lite'; import React from 'react'; import * as IssuesListBoardStore from './store'; import * as IssuesListBoardNs from './issues-list-board'; +import * as TopRightMenuNs from '../misc-components/top-right-menu'; +import { SetIssuesReadingTimestamp } from '../utils/unreaded-provider'; export type Props = { store: IssuesListBoardStore.IPageStore @@ -19,5 +21,18 @@ export const IssuesListBoards = observer((props: Props): JSX.Element => { const board = list.push(board); } - return <>{list}; + const topRightMenuStore = TopRightMenuNs.Store.create({visible: false}); + const onAllReadItemClick = (e: React.MouseEvent) => { + e.stopPropagation(); + SetIssuesReadingTimestamp(props.store.issueIds); + IssuesListBoardStore.PageStoreLoadData(props.store); + }; + return ( + <> + + + + {list} + + ); }); \ No newline at end of file diff --git a/frontend/src/issues-list-board/store.ts b/frontend/src/issues-list-board/store.ts index b1d9601..8353f42 100644 --- a/frontend/src/issues-list-board/store.ts +++ b/frontend/src/issues-list-board/store.ts @@ -40,6 +40,24 @@ export const PageStore = types.model({ self.loaded = true; } }; +}).views((self) => { + return { + get issueIds(): number[] { + if (!self.data) return []; + const data = self.data; + const res = [] as number[]; + for (let i = 0; i < data.length; i++) { + const itemData = data[i]; + for (let j = 0; j < itemData.data.length; j++) { + const issue = itemData.data[j]; + if (res.indexOf(issue.id) < 0) { + res.push(issue.id); + } + } + } + return res; + } + }; }); export async function PageStoreLoadData(store: IPageStore): Promise {