From 35a5b9583f0793b3aae3d57eba739a6750b94252 Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Tue, 20 Jun 2023 05:10:31 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BC=D0=B5=D0=BD=D1=8E=20-=20=D0=B2=D1=81?= =?UTF-8?q?=D1=91=20=D0=BF=D1=80=D0=BE=D1=87=D0=B8=D1=82=D0=B0=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../issues-list-board/issues-list-boards.tsx | 17 ++++++++++++++++- frontend/src/issues-list-board/store.ts | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) 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 {