From 1cd3608d1a447e47c838ce64193407bb3e824b76 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Fri, 23 Aug 2024 16:59:45 +0000 Subject: [PATCH 01/51] =?UTF-8?q?=E5=8F=A4=E3=81=84issue=E3=83=86=E3=83=B3?= =?UTF-8?q?=E3=83=97=E3=83=AC=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/bingo-issue-templete.md | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100755 .github/bingo-issue-templete.md diff --git a/.github/bingo-issue-templete.md b/.github/bingo-issue-templete.md deleted file mode 100755 index 86a28150..00000000 --- a/.github/bingo-issue-templete.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Bingo issue templete -about: Describe this issue template's purpose here. -title: '' -labels: '' -assignees: '' - ---- - -# 概要 - - - -# 開発目的 - - - -# 考えられる開発内容 - - - -# 備考 - - - -# 期限 - From b0201065ee1d80d614ca5906cef5d1001840397d Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Fri, 23 Aug 2024 17:00:08 +0000 Subject: [PATCH 02/51] =?UTF-8?q?issue-template=E3=81=AE=E5=A0=B4=E6=89=80?= =?UTF-8?q?=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/{ISSUE_TEMPLATE => }/issue-template.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename .github/{ISSUE_TEMPLATE => }/issue-template.md (95%) diff --git a/.github/ISSUE_TEMPLATE/issue-template.md b/.github/issue-template.md similarity index 95% rename from .github/ISSUE_TEMPLATE/issue-template.md rename to .github/issue-template.md index 0959d559..6f03728a 100644 --- a/.github/ISSUE_TEMPLATE/issue-template.md +++ b/.github/issue-template.md @@ -1,27 +1,27 @@ --- name: issue template about: Describe this issue template's purpose here. -title: '' +title: "" labels: enhancement -assignees: '' - +assignees: "" --- # 概要 - + # 開発目的 - + # 考えられる開発内容 - + # 備考 - + # 期限 + From 949064c58443f76bbdf6c4d449e65548a1378db2 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Fri, 23 Aug 2024 17:00:20 +0000 Subject: [PATCH 03/51] =?UTF-8?q?prettier=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/pull_request_template.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 4b992d73..272f644e 100755 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,27 +1,33 @@ + # 対応Issue + + resolve #0 # 概要 - + # 実装詳細 - + # 画面スクリーンショット等 - + # テスト項目 + -- [ ] -- [ ] -- [ ] + +- [ ] +- [ ] +- [ ] # 備考 + From 4e860fcc111eaca1a8c9cb65d2d2ed53d4ef6ca5 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Fri, 23 Aug 2024 17:00:42 +0000 Subject: [PATCH 04/51] =?UTF-8?q?=E3=83=97=E3=83=AD=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=82=AF=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-change-pr.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/auto-change-pr.yml b/.github/workflows/auto-change-pr.yml index cb1d0f00..9d3d71ff 100755 --- a/.github/workflows/auto-change-pr.yml +++ b/.github/workflows/auto-change-pr.yml @@ -66,3 +66,9 @@ jobs: - name: Auto assignee if: toJSON(github.event.pull_request.assignees) == '[]' run: gh pr edit ${{ env.PR_NUMBER }} --add-assignee ${{ env.PR_ASSIGNEE }} + + # PRをプロジェクトに追加 + - name: Add PR to Project + run: | + PROJECT_ID=$(gh project view NUTFes/nutfes-Bingo --json id --jq '.id') + gh project item add $PROJECT_ID --content-id ${{ github.event.pull_request.node_id }} From 6bc8234f61242d654a9682a732a9b6a773935272 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Fri, 23 Aug 2024 17:01:31 +0000 Subject: [PATCH 05/51] =?UTF-8?q?front-ci=E3=82=92=E5=90=84view=E3=81=A7?= =?UTF-8?q?=E5=AE=9F=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-prettier-admin.yml | 63 +++++++++++++++++++++++ .github/workflows/auto-prettier-user.yml | 63 +++++++++++++++++++++++ .github/workflows/auto-prettier.yml | 35 ------------- 3 files changed, 126 insertions(+), 35 deletions(-) create mode 100755 .github/workflows/auto-prettier-admin.yml create mode 100755 .github/workflows/auto-prettier-user.yml delete mode 100755 .github/workflows/auto-prettier.yml diff --git a/.github/workflows/auto-prettier-admin.yml b/.github/workflows/auto-prettier-admin.yml new file mode 100755 index 00000000..86c33ba2 --- /dev/null +++ b/.github/workflows/auto-prettier-admin.yml @@ -0,0 +1,63 @@ +on: + pull_request: + branches: + - develop + paths: + - "view-admin/**" + +jobs: + prettier: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 20.3.1 + cache: npm + cache-dependency-path: view-admin/package-lock.json + + - run: npm install + working-directory: view-admin + + # - name: prettier format + # run: npm run format + # working-directory: view-user + + - name: lint + run: npm run lint:fix + working-directory: view-admin + + # - uses: stefanzweifel/git-auto-commit-action@v3.0.0 + # with: + # branch: develop + # commit_message: formatted by workflow + # commit_options: '--no-verify' + + lint_check: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20] + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "npm" + cache-dependency-path: ./view-admin/package-lock.json + - name: Install Dependencies + run: npm ci + + - name: Run ESLint Reviewdog + uses: reviewdog/action-eslint@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + reporter: github-pr-review + eslint_flags: "src/**/*.{ts,tsx}" + workdir: view-admin diff --git a/.github/workflows/auto-prettier-user.yml b/.github/workflows/auto-prettier-user.yml new file mode 100755 index 00000000..b5ab3965 --- /dev/null +++ b/.github/workflows/auto-prettier-user.yml @@ -0,0 +1,63 @@ +on: + pull_request: + branches: + - develop + paths: + - "view-user/**" + +jobs: + prettier: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: view-user/package-lock.json + + - run: npm install + working-directory: view-user + + # - name: prettier format + # run: npm run format + # working-directory: view-user + + - name: lint + run: npm run lint:fix + working-directory: view-user + + # - uses: stefanzweifel/git-auto-commit-action@v3.0.0 + # with: + # branch: develop + # commit_message: formatted by workflow + # commit_options: '--no-verify' + + lint_check: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20] + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "npm" + cache-dependency-path: ./view-user/package-lock.json + - name: Install Dependencies + run: npm ci + + - name: Run ESLint Reviewdog + uses: reviewdog/action-eslint@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + reporter: github-pr-review + eslint_flags: "src/**/*.{ts,tsx}" + workdir: view-user diff --git a/.github/workflows/auto-prettier.yml b/.github/workflows/auto-prettier.yml deleted file mode 100755 index b7c78609..00000000 --- a/.github/workflows/auto-prettier.yml +++ /dev/null @@ -1,35 +0,0 @@ - on: - pull_request: - branches: - - develop - paths: - - "view-user/**" - - jobs: - prettier: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: npm - cache-dependency-path: view-user/package-lock.json - - - run: npm install - working-directory: view-user - - # - name: prettier format - # run: npm run format - # working-directory: view-user - - - name: lint - run: npm run lint:fix - working-directory: view-user - - # - uses: stefanzweifel/git-auto-commit-action@v3.0.0 - # with: - # branch: develop - # commit_message: formatted by workflow - # commit_options: '--no-verify' From ed415f6e93cf3e65fa41cc83119f9ffc77874abc Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Sun, 25 Aug 2024 08:42:31 +0000 Subject: [PATCH 06/51] =?UTF-8?q?resove=E3=81=AB=E3=83=8F=E3=82=A4?= =?UTF-8?q?=E3=83=95=E3=83=B3=E3=81=A4=E3=81=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/pull_request_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 272f644e..dcad0265 100755 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -4,7 +4,7 @@ -resolve #0 +- resolve #0 # 概要 From fe12c771b9ac8af25f486e6e94505f8d28e75a8d Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Sun, 25 Aug 2024 08:42:48 +0000 Subject: [PATCH 07/51] =?UTF-8?q?project=E4=BB=98=E4=B8=8E=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-change-pr.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/auto-change-pr.yml b/.github/workflows/auto-change-pr.yml index 9d3d71ff..cb1d0f00 100755 --- a/.github/workflows/auto-change-pr.yml +++ b/.github/workflows/auto-change-pr.yml @@ -66,9 +66,3 @@ jobs: - name: Auto assignee if: toJSON(github.event.pull_request.assignees) == '[]' run: gh pr edit ${{ env.PR_NUMBER }} --add-assignee ${{ env.PR_ASSIGNEE }} - - # PRをプロジェクトに追加 - - name: Add PR to Project - run: | - PROJECT_ID=$(gh project view NUTFes/nutfes-Bingo --json id --jq '.id') - gh project item add $PROJECT_ID --content-id ${{ github.event.pull_request.node_id }} From 57716b050c2c3920f6768d16da87b6079ac1459c Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Sun, 25 Aug 2024 11:09:53 +0000 Subject: [PATCH 08/51] =?UTF-8?q?children=E3=81=AE=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E3=81=AB=E7=A9=BA=E7=99=BD=E3=82=92=E8=A8=AD=E3=81=91=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/common/Modal/Modal.module.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/view-user/src/components/common/Modal/Modal.module.css b/view-user/src/components/common/Modal/Modal.module.css index 3cf79a73..6614eb2d 100644 --- a/view-user/src/components/common/Modal/Modal.module.css +++ b/view-user/src/components/common/Modal/Modal.module.css @@ -16,6 +16,7 @@ align-items: center; justify-content: center; flex-flow: column; + gap: 2vw; z-index: 50; box-sizing: border-box; object-fit: cover; @@ -54,6 +55,7 @@ align-items: center; justify-content: center; flex-flow: column; + gap: 1vw; z-index: 50; box-sizing: border-box; object-fit: cover; From 72e880952d8d3b2dd701174973cc2598f2452264 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Sun, 25 Aug 2024 11:10:12 +0000 Subject: [PATCH 09/51] =?UTF-8?q?=E3=83=A2=E3=83=BC=E3=83=80=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E9=96=8B=E9=96=89=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/common/ReachIcon/ReachIcon.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/view-user/src/components/common/ReachIcon/ReachIcon.tsx b/view-user/src/components/common/ReachIcon/ReachIcon.tsx index 8c9a06a9..ece15ef2 100644 --- a/view-user/src/components/common/ReachIcon/ReachIcon.tsx +++ b/view-user/src/components/common/ReachIcon/ReachIcon.tsx @@ -1,19 +1,21 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import styles from "./ReachIcon.module.css"; import classNames from "classnames"; import Image from "next/image"; interface ReachIconProps { onClick: () => void; + isOpen: boolean; + setIsReachModalOpen: React.Dispatch>; } const ReachIcon = (props: ReachIconProps) => { const [colorInversion, setColorInversion] = useState(false); const handleClick = () => { setColorInversion(!colorInversion); - props.onClick(); - //TODO 後でモーダルの開閉を追加する + props.setIsReachModalOpen(!props.isOpen); }; + return ( + + + + )}
{props.children}
From 27362f779a4e9542766030649c484da7ec6ff266 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Sun, 25 Aug 2024 14:47:33 +0000 Subject: [PATCH 12/51] =?UTF-8?q?css=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/common/Modal/Modal.module.css | 31 ++----------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/view-user/src/components/common/Modal/Modal.module.css b/view-user/src/components/common/Modal/Modal.module.css index 6614eb2d..fc0dad6b 100644 --- a/view-user/src/components/common/Modal/Modal.module.css +++ b/view-user/src/components/common/Modal/Modal.module.css @@ -12,34 +12,23 @@ } .content { + min-width: 87.5vw; + min-height: 58.1vw; display: flex; align-items: center; justify-content: center; - flex-flow: column; - gap: 2vw; z-index: 50; box-sizing: border-box; - object-fit: cover; padding: 10vw; overflow: hidden; background-color: white; - border: 1vw solid #ff3342; + border: 1.3vw solid #ff3342; filter: drop-shadow(1.25vw 1.25vw 0px #ff3342); border-radius: 7.14vw; animation: zoomIn 0.8s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; will-change: transform, opacity; } -.content p { - font-family: "Noto Sans JP"; - font-size: 6vw; - font-style: normal; - font-weight: 700; - line-height: normal; - color: var(--Main-Color, #ff3342); - text-align: center; -} - .background { position: absolute; z-index: 25; @@ -51,22 +40,8 @@ @media screen and (min-width: 1024px) { .content { - display: flex; - align-items: center; - justify-content: center; - flex-flow: column; - gap: 1vw; - z-index: 50; - box-sizing: border-box; - object-fit: cover; padding: 5vw; - overflow: hidden; - background-color: white; - border: 0.5vw solid #ff3342; - filter: drop-shadow(0.4vw 0.4vw 0px #ff3342); border-radius: 1vw; - animation: zoomIn 0.8s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; - will-change: transform, opacity; } } From d6ab541499571e139ea465bfc517f98462d4e752 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Sun, 25 Aug 2024 14:48:10 +0000 Subject: [PATCH 13/51] =?UTF-8?q?=E3=83=A2=E3=83=BC=E3=83=80=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E5=A4=96=E3=82=92=E9=96=89=E3=81=98=E3=81=A6=E3=82=82?= =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3=E3=81=AE=E8=89=B2=E3=81=8C?= =?UTF-8?q?=E6=88=BB=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/common/ReachIcon/ReachIcon.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/view-user/src/components/common/ReachIcon/ReachIcon.tsx b/view-user/src/components/common/ReachIcon/ReachIcon.tsx index ece15ef2..35b88b81 100644 --- a/view-user/src/components/common/ReachIcon/ReachIcon.tsx +++ b/view-user/src/components/common/ReachIcon/ReachIcon.tsx @@ -16,6 +16,12 @@ const ReachIcon = (props: ReachIconProps) => { props.setIsReachModalOpen(!props.isOpen); }; + useEffect(() => { + if (!props.isOpen) { + setColorInversion(false); + } + }, [props.isOpen]); + return ( - + )}
From c6c81c93d9b394d9215499e3660870e7485323f4 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 01:13:41 +0900 Subject: [PATCH 15/51] =?UTF-8?q?[fix]=20=E3=82=BF=E3=82=A4=E3=83=9D?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/Layout/Layout.tsx | 14 +++++++------- view-user/src/components/common/Modal/Modal.tsx | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/view-user/src/components/Layout/Layout.tsx b/view-user/src/components/Layout/Layout.tsx index 4510e2f4..5f6e7387 100644 --- a/view-user/src/components/Layout/Layout.tsx +++ b/view-user/src/components/Layout/Layout.tsx @@ -32,7 +32,7 @@ interface LayoutProps { const Layout = (props: LayoutProps) => { const [isReactionModalOpen, setIsReactionModalOpen] = useState(false); - const [isReachModalOpen, setIsReacgModalOpen] = useState(false); + const [isReachModalOpen, setIsReachModalOpen] = useState(false); const [isReachIconVisible, setReachIconVisible] = useState(true); const [navBarHeight, setNavBarHeight] = useState(); const navRef = useRef(null); @@ -59,7 +59,7 @@ const Layout = (props: LayoutProps) => { setReachIconVisible(false); localStorage.setItem("isReachIconVisible", "false"); - setIsReacgModalOpen(!isReachModalOpen); + setIsReachModalOpen(!isReachModalOpen); }; const Icons = (pageName: string) => { @@ -77,7 +77,7 @@ const Layout = (props: LayoutProps) => { ), @@ -90,7 +90,7 @@ const Layout = (props: LayoutProps) => { , isReachIconVisible && ( @@ -115,7 +115,7 @@ const Layout = (props: LayoutProps) => { ), @@ -137,13 +137,13 @@ const Layout = (props: LayoutProps) => { /> )} {isReachModalOpen && ( - +

リーチしましたか?

-
diff --git a/view-user/src/components/common/Modal/Modal.tsx b/view-user/src/components/common/Modal/Modal.tsx index 6dab6749..f5a592ef 100644 --- a/view-user/src/components/common/Modal/Modal.tsx +++ b/view-user/src/components/common/Modal/Modal.tsx @@ -5,17 +5,17 @@ interface ModalProps { children: ReactNode; isOpened: boolean; canCloseByClickingBackground?: boolean; - setisOpened: (isOpened: boolean) => void; + setIsOpened: (isOpened: boolean) => void; } const Modal = ({ children, isOpened, canCloseByClickingBackground = true, - setisOpened, + setIsOpened, }: ModalProps) => { const closeModal = () => { - setisOpened(false); + setIsOpened(false); }; return ( From 7e167dd0490a860e2bdf019804605194c32e7298 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 03:06:55 +0900 Subject: [PATCH 16/51] =?UTF-8?q?[fix]=20=E8=83=8C=E6=99=AF=E8=89=B2?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/styles/globals.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view-user/src/styles/globals.css b/view-user/src/styles/globals.css index dcff12b4..9860343a 100755 --- a/view-user/src/styles/globals.css +++ b/view-user/src/styles/globals.css @@ -1,6 +1,6 @@ body { font-family: 'Noto Sans JP', sans-serif; - background-color: #C9AAAA; + background-color: #fff; -ms-overflow-style: none; scrollbar-width: none; } From 8c3e43a1cfeaa15bef9ec2a5dfd932ca769bf106 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 03:07:47 +0900 Subject: [PATCH 17/51] =?UTF-8?q?[fix]=20BingoNumber=E3=81=AEtype=E6=B6=88?= =?UTF-8?q?=E6=BB=85=E3=81=AB=E4=BC=B4=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/common/NumberCardLarge/NumberCardLarge.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/view-user/src/components/common/NumberCardLarge/NumberCardLarge.tsx b/view-user/src/components/common/NumberCardLarge/NumberCardLarge.tsx index 33c64d76..26cf70a8 100644 --- a/view-user/src/components/common/NumberCardLarge/NumberCardLarge.tsx +++ b/view-user/src/components/common/NumberCardLarge/NumberCardLarge.tsx @@ -1,16 +1,14 @@ import React from "react"; import styles from "./NumberCardLarge.module.css"; -import { BingoNumber } from "@/type/common"; interface NumberCardLargeProps { - BingoNumber: BingoNumber; + bingoNumber: number; } const NumberCardLarge = (props: NumberCardLargeProps) => { - const bingoNumber = props.BingoNumber; return (
-
{bingoNumber.number}
+
{props.bingoNumber}
); }; From 61d5187fbdeca5b38f9857c6130d42dd97cfdde4 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 03:08:07 +0900 Subject: [PATCH 18/51] =?UTF-8?q?[fix]=20=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?=E3=82=B9=E3=82=BF=E3=82=A4=E3=83=AB=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/common/NumberCardList/NumberCardList.module.css | 1 - 1 file changed, 1 deletion(-) diff --git a/view-user/src/components/common/NumberCardList/NumberCardList.module.css b/view-user/src/components/common/NumberCardList/NumberCardList.module.css index 00cb48d8..fad36c90 100644 --- a/view-user/src/components/common/NumberCardList/NumberCardList.module.css +++ b/view-user/src/components/common/NumberCardList/NumberCardList.module.css @@ -1,6 +1,5 @@ .container { display: grid; - justify-content: center; grid-template-columns: repeat(3, 20vw); grid-gap: 3.5vw; } From 3745ce3f124a06f9769de0cb8f3727fd6c4d9f97 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 03:08:35 +0900 Subject: [PATCH 19/51] =?UTF-8?q?[fix]=20=E3=83=A2=E3=83=BC=E3=83=80?= =?UTF-8?q?=E3=83=AB=E3=81=AECSS=E3=82=92=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/ReactionStampModal/ReactionStampModal.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view-user/src/components/common/ReactionStampModal/ReactionStampModal.module.css b/view-user/src/components/common/ReactionStampModal/ReactionStampModal.module.css index b11776be..4dc2f0e4 100644 --- a/view-user/src/components/common/ReactionStampModal/ReactionStampModal.module.css +++ b/view-user/src/components/common/ReactionStampModal/ReactionStampModal.module.css @@ -6,7 +6,7 @@ .bubble { width: 87.5vw; height: 50.9vw; - position: absolute; + position: fixed; background: #ffffff; box-shadow: 1.09375vw 1.09375vw 0px 0px #ff3341; border-radius: 5.46875vw; From 2b8d43d9ed41ec22072cd9f13e7033e8740295d3 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 03:08:56 +0900 Subject: [PATCH 20/51] =?UTF-8?q?[fix]=20padding=E3=82=92=E8=AA=BF?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/Layout/Layout.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view-user/src/components/Layout/Layout.module.css b/view-user/src/components/Layout/Layout.module.css index 0facf726..277ced20 100644 --- a/view-user/src/components/Layout/Layout.module.css +++ b/view-user/src/components/Layout/Layout.module.css @@ -1,6 +1,6 @@ .content { overflow-y: auto; - padding-top: 2vw; + padding: 2vw 0vw 5vw 0vw; min-height: 100vh; } From 1c312396231fa41e510f5b0b5e844ec5de3ea2d8 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 03:09:54 +0900 Subject: [PATCH 21/51] =?UTF-8?q?[feat]=20=E7=8A=B6=E6=85=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E3=81=AE=E3=81=9F=E3=82=81Context=E3=82=92=E4=BD=9C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/contexts/ResultChangeContext.tsx | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 view-user/src/contexts/ResultChangeContext.tsx diff --git a/view-user/src/contexts/ResultChangeContext.tsx b/view-user/src/contexts/ResultChangeContext.tsx new file mode 100644 index 00000000..9e940136 --- /dev/null +++ b/view-user/src/contexts/ResultChangeContext.tsx @@ -0,0 +1,36 @@ +import React, { createContext, useContext, useState } from "react"; + +interface ResultChangeContextProps { + resultChange: boolean; + toggleResultChange: () => void; +} + +const ResultChangeContext = createContext( + undefined, +); + +export const ResultChangeProvider: React.FC<{ children: React.ReactNode }> = ({ + children, +}) => { + const [resultChange, setResultChange] = useState(true); + + const toggleResultChange = () => { + setResultChange((prev) => !prev); + }; + + return ( + + {children} + + ); +}; + +export const useResultChange = (): ResultChangeContextProps => { + const context = useContext(ResultChangeContext); + if (!context) { + throw new Error( + "useResultChange must be used within a ResultChangeProvider", + ); + } + return context; +}; From 95c077df8e8c035365d4dea3c712da1318593a30 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 03:11:17 +0900 Subject: [PATCH 22/51] =?UTF-8?q?[feat]=20=E8=A1=A8=E7=A4=BA=E5=88=87?= =?UTF-8?q?=E3=82=8A=E6=9B=BF=E3=81=88=E6=A9=9F=E8=83=BD=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=E3=81=A8=E3=82=B3=E3=83=B3=E3=83=9D=E3=83=BC=E3=83=8D=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=81=AE=E9=85=8D=E7=BD=AE=E3=82=92=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/SettingsIcon/SettingsIcon.tsx | 9 +- view-user/src/pages/_app.tsx | 9 +- view-user/src/pages/index.tsx | 88 +++++-------------- view-user/src/styles/Home.module.css | 88 +------------------ 4 files changed, 38 insertions(+), 156 deletions(-) diff --git a/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx b/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx index 9200e71d..fa9c272e 100644 --- a/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx +++ b/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx @@ -1,11 +1,18 @@ import React, { useState } from "react"; import { IconFramework } from "@/components/common"; import { IoIosSettings } from "react-icons/io"; +import { useResultChange } from "@/contexts/ResultChangeContext"; -const SettingsIcon = () => { +interface SettingsIconProps { + onClick?: () => void; +} +const SettingsIcon = (props: SettingsIconProps) => { const [isOpen, setIsOpen] = useState(false); + const { toggleResultChange } = useResultChange(); + const handleClick = () => { // TODO Modalの開閉を行う + toggleResultChange(); }; return ( diff --git a/view-user/src/pages/_app.tsx b/view-user/src/pages/_app.tsx index 5db44e77..1f0cc3d6 100755 --- a/view-user/src/pages/_app.tsx +++ b/view-user/src/pages/_app.tsx @@ -12,6 +12,7 @@ import { createClient } from "graphql-ws"; import { GraphQLWsLink } from "@apollo/client/link/subscriptions"; import { RecoilRoot } from "recoil"; import localFont from "next/font/local"; +import { ResultChangeProvider } from "@/contexts/ResultChangeContext"; const silom = localFont({ src: "../../public/fonts/Silom.ttf", @@ -43,9 +44,11 @@ export default function App({ Component, pageProps }: AppProps) { return ( -
- -
+ +
+ +
+
); diff --git a/view-user/src/pages/index.tsx b/view-user/src/pages/index.tsx index 824e99b8..525ddb8f 100644 --- a/view-user/src/pages/index.tsx +++ b/view-user/src/pages/index.tsx @@ -1,95 +1,51 @@ -import React, { useEffect, useState } from "react"; import type { NextPage } from "next"; -import Image from "next/image"; -import styles from "@/styles/Home.module.css"; -import { Header, Modal, BingoResult, Button } from "@/components/common"; +import React, { useEffect, useState } from "react"; import { useRouter } from "next/router"; +import styles from "@/styles/Home.module.css"; +import { Loading, NumberCardLarge, NumberCardList } from "@/components/common"; +import Layout from "@/components/Layout"; import { ja } from "../locales/ja"; import { en } from "../locales/en"; -import { MdTranslate } from "react-icons/md"; import { useSubscription } from "@apollo/client"; import { SubscribeListNumbersDocument } from "@/type/graphql"; import type { SubscribeListNumbersSubscription } from "@/type/graphql"; +import { useResultChange } from "@/contexts/ResultChangeContext"; const Page: NextPage = () => { const { locale } = useRouter(); const t = locale === "ja" ? ja : en; - const [isOpened, setIsOpened] = useState(true); - const router = useRouter(); + const { resultChange } = useResultChange(); const [bingoNumbers, setBingoNumbers] = useState< SubscribeListNumbersSubscription["numbers"] >([]); - const { data } = useSubscription(SubscribeListNumbersDocument); - //subscriptionを行うためのuseEffect + // Subscription handling useEffect useEffect(() => { if (data) { setBingoNumbers(data.numbers); } }, [data]); - // 最初のrendrer時だけ実行してモーダルの再表示を防止する。 - useEffect(() => { - const storedIsOpened = localStorage.getItem("isOpened"); - if (storedIsOpened !== null) { - setIsOpened(JSON.parse(storedIsOpened)); - } - }, []); + const copiedArray = [...bingoNumbers]; + const sortCopiedArray = [...bingoNumbers]; + const firstBingoNumber = copiedArray.pop()?.number ?? 0; + const sortFirstBingoNumber = + sortCopiedArray.sort((a, b) => a.number - b.number).shift()?.number ?? 0; - // isOpenedの状態をもとにlocalStorageを更新する。 - // localStorageにbooleanが保存できないため、json形式に変換して保存する。 - useEffect(() => { - localStorage.setItem("isOpened", JSON.stringify(isOpened)); - }, [isOpened]); - - // ページのリロード前にlocalStorageを削除する。 - useEffect(() => { - const handleBeforeUnload = () => { - localStorage.removeItem("isOpened"); - }; - - window.addEventListener("beforeunload", handleBeforeUnload); - - return () => { - window.removeEventListener("beforeunload", handleBeforeUnload); - }; - }, []); + const displayBingoNumbers = resultChange + ? { large: firstBingoNumber, list: copiedArray.reverse() } + : { large: sortFirstBingoNumber, list: sortCopiedArray.slice(1) }; return ( -
- -
-
-

{ - router.push("/", "/", { locale: "ja" }); - setIsOpened(false); - }} - > - 日本語 -

-
-
-

{ - router.push("/", "/", { locale: "en" }); - setIsOpened(false); - }} - > - English -

-
-
-
-
- - -
+ + ); }; diff --git a/view-user/src/styles/Home.module.css b/view-user/src/styles/Home.module.css index 64eb0629..85242925 100644 --- a/view-user/src/styles/Home.module.css +++ b/view-user/src/styles/Home.module.css @@ -1,90 +1,6 @@ -.container { - height: 100vh; - width: 100vw; - overflow: auto; - background: linear-gradient(180deg, #d95b7f 0%, #856db2 23.96%, #07033e 100%); -} - -.contents { - display: flex; - padding: 0.5rem 1rem; -} - -.languageBlock { +.numberCardLarge { display: flex; flex-direction: column; - gap: 0.5rem; - color: #d95b7f; - font-size: clamp(2.5rem, calc(100vw / 20), 5rem); -} - -.language { - display: flex; - justify-content: center; - background-color: #07033e; - padding: 0.5rem 1.5rem; - border-radius: 0.5rem; -} - -.languageBlock p { - background-color: #07033e; -} - -.main { - display: flex; align-items: center; - margin-right: 1.5rem; -} - -.link { - text-decoration: none; - color: #07033e; - font-weight: 700; - font-size: 1.2rem; -} - -.buttonContents { - display: flex; - align-items: center; - justify-content: center; - gap: 0.3rem; -} - -.iconButton { - position: fixed; - right: 1rem; - bottom: 1rem; - width: 4.5rem; - height: 4.5rem; - color: #d95b7f; - border: solid 0.13rem #ffffffd5; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - background-color: rgba(18, 36, 99, 1); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); - z-index: 1; -} - -@media screen and (max-width: 900px) { - .btnOpen { - display: none; - } - - .contents { - display: flex; - padding: 0.5rem 1rem; - } - - .contents p { - line-height: 19px; - color: #333333; - } - - .icon { - background-color: var(--background-color); - color: #333333; - } + row-gap: 8vw; } From 70efb4a40b010b5db251d2283a1f864b7592bd5a Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 03:15:31 +0900 Subject: [PATCH 23/51] =?UTF-8?q?[fix]=20=E4=B8=8D=E8=A6=81=E3=81=AACSS?= =?UTF-8?q?=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/common/NavigationBar/NavigationBar.module.css | 1 - 1 file changed, 1 deletion(-) diff --git a/view-user/src/components/common/NavigationBar/NavigationBar.module.css b/view-user/src/components/common/NavigationBar/NavigationBar.module.css index e0244494..468d3243 100644 --- a/view-user/src/components/common/NavigationBar/NavigationBar.module.css +++ b/view-user/src/components/common/NavigationBar/NavigationBar.module.css @@ -4,7 +4,6 @@ align-items: center; position: sticky; bottom: 0; - left: 0; width: 100%; padding: 3.125vw 6.25vw; background-color: white; From 66f814b8fded9030fefeb9603ef0de1cf2fae62f Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 12:47:27 +0900 Subject: [PATCH 24/51] =?UTF-8?q?[fix]=20Context=E3=81=AE=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=82=92=E5=8F=96=E3=82=8A=E3=82=84=E3=82=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/contexts/ResultChangeContext.tsx | 36 ------------------- view-user/src/pages/_app.tsx | 17 +++------ 2 files changed, 4 insertions(+), 49 deletions(-) delete mode 100644 view-user/src/contexts/ResultChangeContext.tsx diff --git a/view-user/src/contexts/ResultChangeContext.tsx b/view-user/src/contexts/ResultChangeContext.tsx deleted file mode 100644 index 9e940136..00000000 --- a/view-user/src/contexts/ResultChangeContext.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React, { createContext, useContext, useState } from "react"; - -interface ResultChangeContextProps { - resultChange: boolean; - toggleResultChange: () => void; -} - -const ResultChangeContext = createContext( - undefined, -); - -export const ResultChangeProvider: React.FC<{ children: React.ReactNode }> = ({ - children, -}) => { - const [resultChange, setResultChange] = useState(true); - - const toggleResultChange = () => { - setResultChange((prev) => !prev); - }; - - return ( - - {children} - - ); -}; - -export const useResultChange = (): ResultChangeContextProps => { - const context = useContext(ResultChangeContext); - if (!context) { - throw new Error( - "useResultChange must be used within a ResultChangeProvider", - ); - } - return context; -}; diff --git a/view-user/src/pages/_app.tsx b/view-user/src/pages/_app.tsx index 1f0cc3d6..0db4a3bf 100755 --- a/view-user/src/pages/_app.tsx +++ b/view-user/src/pages/_app.tsx @@ -1,18 +1,11 @@ import "@/styles/reset.css"; import "@/styles/globals.css"; import type { AppProps } from "next/app"; -import { Inter } from "next/font/google"; -import { - ApolloProvider, - ApolloClient, - InMemoryCache, - HttpLink, -} from "@apollo/client"; +import { ApolloProvider, ApolloClient, InMemoryCache } from "@apollo/client"; import { createClient } from "graphql-ws"; import { GraphQLWsLink } from "@apollo/client/link/subscriptions"; import { RecoilRoot } from "recoil"; import localFont from "next/font/local"; -import { ResultChangeProvider } from "@/contexts/ResultChangeContext"; const silom = localFont({ src: "../../public/fonts/Silom.ttf", @@ -44,11 +37,9 @@ export default function App({ Component, pageProps }: AppProps) { return ( - -
- -
-
+
+ +
); From d428a5460ebed01c024f4762292cbfe920af7e66 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 12:48:19 +0900 Subject: [PATCH 25/51] =?UTF-8?q?[fix]=20Context=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=82=8F=E3=81=9AProps=E3=81=A7=E5=8F=97=E3=81=91=E5=8F=96?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/common/SettingsIcon/SettingsIcon.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx b/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx index fa9c272e..5fe46676 100644 --- a/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx +++ b/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx @@ -1,18 +1,17 @@ import React, { useState } from "react"; import { IconFramework } from "@/components/common"; import { IoIosSettings } from "react-icons/io"; -import { useResultChange } from "@/contexts/ResultChangeContext"; interface SettingsIconProps { onClick?: () => void; } const SettingsIcon = (props: SettingsIconProps) => { const [isOpen, setIsOpen] = useState(false); - const { toggleResultChange } = useResultChange(); const handleClick = () => { - // TODO Modalの開閉を行う - toggleResultChange(); + if (props.onClick) { + props.onClick(); + } }; return ( From f15e4605cb78db6907c52f01aa54d44dcd3dcec5 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 12:49:12 +0900 Subject: [PATCH 26/51] =?UTF-8?q?[fix]=20Props=E3=81=AE=E5=8F=97=E3=81=91?= =?UTF-8?q?=E6=B8=A1=E3=81=97=E3=81=A8=E5=91=BD=E5=90=8D=E3=82=92=E8=A6=8B?= =?UTF-8?q?=E7=9B=B4=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/Layout/Layout.tsx | 14 +++++++++++--- view-user/src/pages/index.tsx | 13 ++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/view-user/src/components/Layout/Layout.tsx b/view-user/src/components/Layout/Layout.tsx index 5f6e7387..aa371370 100644 --- a/view-user/src/components/Layout/Layout.tsx +++ b/view-user/src/components/Layout/Layout.tsx @@ -27,6 +27,8 @@ const images = [ interface LayoutProps { children: React.ReactNode; pageName: string; + isSortedAscending?: boolean; + setIsSortedAscending?: (value: boolean) => void; } const Layout = (props: LayoutProps) => { @@ -62,6 +64,12 @@ const Layout = (props: LayoutProps) => { setIsReachModalOpen(!isReachModalOpen); }; + const toggleSortOrder = () => { + if (props.setIsSortedAscending) { + props.setIsSortedAscending(!props.isSortedAscending); + } + }; + const Icons = (pageName: string) => { let icons = []; switch (pageName) { @@ -81,7 +89,7 @@ const Layout = (props: LayoutProps) => { onClick={handleReachIconClick} /> ), - , + , ]; break; case "/prizes": @@ -100,7 +108,7 @@ const Layout = (props: LayoutProps) => { key="reaction" /> ), - , + , ]; break; default: @@ -119,7 +127,7 @@ const Layout = (props: LayoutProps) => { onClick={handleReachIconClick} /> ), - , + , ]; } return icons.filter(Boolean); diff --git a/view-user/src/pages/index.tsx b/view-user/src/pages/index.tsx index 525ddb8f..ca655c16 100644 --- a/view-user/src/pages/index.tsx +++ b/view-user/src/pages/index.tsx @@ -2,19 +2,18 @@ import type { NextPage } from "next"; import React, { useEffect, useState } from "react"; import { useRouter } from "next/router"; import styles from "@/styles/Home.module.css"; -import { Loading, NumberCardLarge, NumberCardList } from "@/components/common"; +import { NumberCardLarge, NumberCardList } from "@/components/common"; import Layout from "@/components/Layout"; import { ja } from "../locales/ja"; import { en } from "../locales/en"; import { useSubscription } from "@apollo/client"; import { SubscribeListNumbersDocument } from "@/type/graphql"; import type { SubscribeListNumbersSubscription } from "@/type/graphql"; -import { useResultChange } from "@/contexts/ResultChangeContext"; const Page: NextPage = () => { const { locale } = useRouter(); const t = locale === "ja" ? ja : en; - const { resultChange } = useResultChange(); + const [isSortedAscending, setIsSortedAscending] = useState(true); const [bingoNumbers, setBingoNumbers] = useState< SubscribeListNumbersSubscription["numbers"] >([]); @@ -33,13 +32,17 @@ const Page: NextPage = () => { const sortFirstBingoNumber = sortCopiedArray.sort((a, b) => a.number - b.number).shift()?.number ?? 0; - const displayBingoNumbers = resultChange + const displayBingoNumbers = isSortedAscending ? { large: firstBingoNumber, list: copiedArray.reverse() } : { large: sortFirstBingoNumber, list: sortCopiedArray.slice(1) }; return ( <> - +
From 4d7ed2496c78c01669d4fc76e5125624ecf54158 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 16:18:48 +0900 Subject: [PATCH 27/51] =?UTF-8?q?[fix]=20NumberCardLarge=E5=86=85=E3=81=AE?= =?UTF-8?q?=E5=9E=8B=E5=AE=9A=E7=BE=A9=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/common/NumberCardLarge/NumberCardLarge.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/view-user/src/components/common/NumberCardLarge/NumberCardLarge.tsx b/view-user/src/components/common/NumberCardLarge/NumberCardLarge.tsx index 26cf70a8..1d72eac3 100644 --- a/view-user/src/components/common/NumberCardLarge/NumberCardLarge.tsx +++ b/view-user/src/components/common/NumberCardLarge/NumberCardLarge.tsx @@ -1,14 +1,15 @@ import React from "react"; import styles from "./NumberCardLarge.module.css"; +import { SubscribeListNumbersSubscription } from "@/type/graphql"; interface NumberCardLargeProps { - bingoNumber: number; + bingoNumber: SubscribeListNumbersSubscription["numbers"][number]; } const NumberCardLarge = (props: NumberCardLargeProps) => { return (
-
{props.bingoNumber}
+
{props.bingoNumber.number}
); }; From bd7ecce6a9e16ed35bd3b563cf10862fb145d94e Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 16:19:36 +0900 Subject: [PATCH 28/51] =?UTF-8?q?[fix]=20=E3=83=9A=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=91=E3=82=B9=E3=81=AE=E6=B8=A1=E3=81=97=E6=96=B9=EF=BC=86?= =?UTF-8?q?=E5=9E=8B=E5=AE=9A=E7=BE=A9=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/pages/index.tsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/view-user/src/pages/index.tsx b/view-user/src/pages/index.tsx index ca655c16..27d261f0 100644 --- a/view-user/src/pages/index.tsx +++ b/view-user/src/pages/index.tsx @@ -11,7 +11,7 @@ import { SubscribeListNumbersDocument } from "@/type/graphql"; import type { SubscribeListNumbersSubscription } from "@/type/graphql"; const Page: NextPage = () => { - const { locale } = useRouter(); + const { pathname: pageName, locale } = useRouter(); const t = locale === "ja" ? ja : en; const [isSortedAscending, setIsSortedAscending] = useState(true); const [bingoNumbers, setBingoNumbers] = useState< @@ -26,11 +26,18 @@ const Page: NextPage = () => { } }, [data]); + const defaultBingoNumber = { + number: 0, + id: 0, + createdAt: new Date(), + updatedAt: new Date(), + }; const copiedArray = [...bingoNumbers]; const sortCopiedArray = [...bingoNumbers]; - const firstBingoNumber = copiedArray.pop()?.number ?? 0; + const firstBingoNumber = copiedArray.pop() ?? defaultBingoNumber; const sortFirstBingoNumber = - sortCopiedArray.sort((a, b) => a.number - b.number).shift()?.number ?? 0; + sortCopiedArray.sort((a, b) => a.number - b.number).shift() ?? + defaultBingoNumber; const displayBingoNumbers = isSortedAscending ? { large: firstBingoNumber, list: copiedArray.reverse() } @@ -39,7 +46,7 @@ const Page: NextPage = () => { return ( <> From 5b7b3105ef5cb2b0a522805232ab50a19e899fec Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 16:31:56 +0900 Subject: [PATCH 29/51] =?UTF-8?q?[feat]=20Barrel=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/index.ts | 2 ++ view-user/src/locales/index.ts | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 view-user/src/components/index.ts create mode 100644 view-user/src/locales/index.ts diff --git a/view-user/src/components/index.ts b/view-user/src/components/index.ts new file mode 100644 index 00000000..dc3e2bfc --- /dev/null +++ b/view-user/src/components/index.ts @@ -0,0 +1,2 @@ +export * from "./common"; +export { default as Layout } from "./Layout/Layout"; diff --git a/view-user/src/locales/index.ts b/view-user/src/locales/index.ts new file mode 100644 index 00000000..c906d68c --- /dev/null +++ b/view-user/src/locales/index.ts @@ -0,0 +1,2 @@ +export * from "./ja"; +export * from "./en"; From 1513db44685ffb18400cd1332a07180ec0bf8350 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 16:32:11 +0900 Subject: [PATCH 30/51] =?UTF-8?q?[fix]=20Import=E3=82=92=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/pages/index.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/view-user/src/pages/index.tsx b/view-user/src/pages/index.tsx index 27d261f0..9b198663 100644 --- a/view-user/src/pages/index.tsx +++ b/view-user/src/pages/index.tsx @@ -1,14 +1,12 @@ import type { NextPage } from "next"; -import React, { useEffect, useState } from "react"; import { useRouter } from "next/router"; +import React, { useEffect, useState } from "react"; import styles from "@/styles/Home.module.css"; -import { NumberCardLarge, NumberCardList } from "@/components/common"; -import Layout from "@/components/Layout"; -import { ja } from "../locales/ja"; -import { en } from "../locales/en"; +import { ja, en } from "@/locales"; import { useSubscription } from "@apollo/client"; import { SubscribeListNumbersDocument } from "@/type/graphql"; import type { SubscribeListNumbersSubscription } from "@/type/graphql"; +import { Layout, NumberCardLarge, NumberCardList } from "@/components"; const Page: NextPage = () => { const { pathname: pageName, locale } = useRouter(); From 0da0ea975b11e913e3f9c6cc16b8ac14c565079b Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 17:28:04 +0900 Subject: [PATCH 31/51] =?UTF-8?q?[fix]=20Loading=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=8D=E3=83=B3=E3=83=88=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/common/Loading/Loading.module.css | 15 +++++++++------ .../src/components/common/Loading/Loading.tsx | 6 ++++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/view-user/src/components/common/Loading/Loading.module.css b/view-user/src/components/common/Loading/Loading.module.css index 11569565..45f6f5a9 100644 --- a/view-user/src/components/common/Loading/Loading.module.css +++ b/view-user/src/components/common/Loading/Loading.module.css @@ -1,11 +1,13 @@ .overlay { + position: fixed; + top: 0; + left: 0; width: 100%; height: 100%; - z-index: 10; - position: absolute; display: flex; - align-items: center; justify-content: center; + align-items: center; + z-index: 1000; } .container { @@ -22,8 +24,9 @@ } .logo { - align-items: center; - width: 50vw; + width: 33vw; + height: 13vw; + position: relative; } .loader, @@ -32,7 +35,7 @@ } .loader { - margin: 60px auto; + margin: 7vw auto; font-size: 10vw; position: relative; text-indent: -9999em; diff --git a/view-user/src/components/common/Loading/Loading.tsx b/view-user/src/components/common/Loading/Loading.tsx index ae9b3892..5e38bf63 100644 --- a/view-user/src/components/common/Loading/Loading.tsx +++ b/view-user/src/components/common/Loading/Loading.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import Image from "next/image"; import styles from "./Loading.module.css"; import { AiOutlineLoading3Quarters } from "react-icons/ai"; @@ -6,7 +6,9 @@ const Loading = () => { return (
- logo +
+ logo +
From 1dafb7c03ef7ebf3c286322f9d71ac0c931896ad Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 26 Aug 2024 17:28:51 +0900 Subject: [PATCH 32/51] =?UTF-8?q?[feat]=20Loading=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=8D=E3=83=B3=E3=83=88=E3=82=92=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/pages/index.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/view-user/src/pages/index.tsx b/view-user/src/pages/index.tsx index 9b198663..1f0bcb03 100644 --- a/view-user/src/pages/index.tsx +++ b/view-user/src/pages/index.tsx @@ -6,7 +6,7 @@ import { ja, en } from "@/locales"; import { useSubscription } from "@apollo/client"; import { SubscribeListNumbersDocument } from "@/type/graphql"; import type { SubscribeListNumbersSubscription } from "@/type/graphql"; -import { Layout, NumberCardLarge, NumberCardList } from "@/components"; +import { Layout, Loading, NumberCardLarge, NumberCardList } from "@/components"; const Page: NextPage = () => { const { pathname: pageName, locale } = useRouter(); @@ -15,7 +15,7 @@ const Page: NextPage = () => { const [bingoNumbers, setBingoNumbers] = useState< SubscribeListNumbersSubscription["numbers"] >([]); - const { data } = useSubscription(SubscribeListNumbersDocument); + const { data, loading } = useSubscription(SubscribeListNumbersDocument); // Subscription handling useEffect useEffect(() => { @@ -43,6 +43,7 @@ const Page: NextPage = () => { return ( <> + {loading && } Date: Tue, 27 Aug 2024 04:00:48 +0900 Subject: [PATCH 33/51] =?UTF-8?q?[fix]=20locale=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/locales/en.ts | 20 +++++++++++++------- view-user/src/locales/ja.ts | 20 +++++++++++++------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/view-user/src/locales/en.ts b/view-user/src/locales/en.ts index c00096f5..341110d9 100644 --- a/view-user/src/locales/en.ts +++ b/view-user/src/locales/en.ts @@ -1,9 +1,15 @@ export const en = { - PRIZE_BUTTON: "Prize", - NUMBER_BUTTON: "Number", - SUB_TITLE_NUMBER: "BINGO Number", - SUB_TITLE_PRIZE: "Prize List", - NUMBER_ORDER_BUTTON: "Num Order", - LOTTERY_ORDER_BUTTON: "Lott Order", - WINNING_OVERRAY: "Won!", + reachModal: { + title: "Did you reach?", + yes: "Yes", + no: "No", + }, + settingsModal: { + languageSelection: "Language Selection", + sortOrder: "Sort Order", + japanese: "Japanese", + english: "English", + drawOrder: "Draw Order", + ascending: "Ascending", + }, }; diff --git a/view-user/src/locales/ja.ts b/view-user/src/locales/ja.ts index 54058951..14efc02e 100644 --- a/view-user/src/locales/ja.ts +++ b/view-user/src/locales/ja.ts @@ -1,9 +1,15 @@ export const ja = { - PRIZE_BUTTON: "景品", - NUMBER_BUTTON: "番号一覧", - SUB_TITLE_NUMBER: "抽選された番号", - SUB_TITLE_PRIZE: "景品一覧", - NUMBER_ORDER_BUTTON: "番号順", - LOTTERY_ORDER_BUTTON: "抽選順", - WINNING_OVERRAY: "当選!", + reachModal: { + title: "リーチしましたか?", + yes: "はい", + no: "いいえ", + }, + settingsModal: { + languageSelection: "言語の選択", + sortOrder: "番号の並び順", + japanese: "日本語", + english: "English", + drawOrder: "抽選順", + ascending: "昇順", + }, }; From a3302f7ec9622bd057afe9e9e253159246566589 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Tue, 27 Aug 2024 04:01:31 +0900 Subject: [PATCH 34/51] =?UTF-8?q?[fix]=20IconFramework=E3=81=AEinversion?= =?UTF-8?q?=E3=82=92=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/common/IconFramework/IconFramework.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/view-user/src/components/common/IconFramework/IconFramework.tsx b/view-user/src/components/common/IconFramework/IconFramework.tsx index aaa35622..9953a22f 100644 --- a/view-user/src/components/common/IconFramework/IconFramework.tsx +++ b/view-user/src/components/common/IconFramework/IconFramework.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode, use, useState } from "react"; +import React, { ReactNode, useEffect, useState } from "react"; import styles from "./IconFramework.module.css"; import classNames from "classnames"; @@ -15,6 +15,10 @@ const IconFramework = (props: IconFrameworkProps) => { props.inversion ?? false, ); + useEffect(() => { + setColorInversion(props.inversion ?? false); + }, [props.inversion]); + const handleClick = () => { setColorInversion(!colorInversion); if (props.onClick) { From 5c4d6c1d91a3e7c54a8763df5362a16006880c32 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Tue, 27 Aug 2024 04:02:42 +0900 Subject: [PATCH 35/51] =?UTF-8?q?[feat]=20SettingsIcon=E3=81=AB=E3=83=A2?= =?UTF-8?q?=E3=83=BC=E3=83=80=E3=83=AB=E9=96=8B=E9=96=89=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/SettingsIcon/SettingsIcon.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx b/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx index 5fe46676..ee581650 100644 --- a/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx +++ b/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx @@ -1,24 +1,36 @@ import React, { useState } from "react"; import { IconFramework } from "@/components/common"; import { IoIosSettings } from "react-icons/io"; +import { useEffect } from "react"; interface SettingsIconProps { onClick?: () => void; + isOpen: boolean; + setIsSettingsModalOpen?: React.Dispatch>; } const SettingsIcon = (props: SettingsIconProps) => { - const [isOpen, setIsOpen] = useState(false); + const [colorInversion, setColorInversion] = useState(false); const handleClick = () => { if (props.onClick) { props.onClick(); } + setColorInversion(!colorInversion); + props.setIsSettingsModalOpen(!props.isOpen); }; + useEffect(() => { + if (!props.isOpen) { + setColorInversion(false); + } + }, [props.isOpen]); + return ( } text="Settings" outline + inversion={colorInversion} onClick={() => handleClick()} /> ); From cd48e9fc939037fe8c7412ccef74d461ef0f8462 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Tue, 27 Aug 2024 04:03:31 +0900 Subject: [PATCH 36/51] =?UTF-8?q?[fix]=20ToggleButton=E5=86=85=E3=81=AE?= =?UTF-8?q?=E7=8A=B6=E6=85=8B=E7=AE=A1=E7=90=86=E6=B3=95=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/ToggleButton/ToggleButton.tsx | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/view-user/src/components/common/ToggleButton/ToggleButton.tsx b/view-user/src/components/common/ToggleButton/ToggleButton.tsx index c6f3102c..a4919965 100644 --- a/view-user/src/components/common/ToggleButton/ToggleButton.tsx +++ b/view-user/src/components/common/ToggleButton/ToggleButton.tsx @@ -1,28 +1,20 @@ -import React, { useState } from "react"; +import React from "react"; import { motion } from "framer-motion"; import styles from "./ToggleButton.module.css"; interface ToggleButtonProps { children: [React.ReactNode, React.ReactNode]; - onClick?: () => void; + isActive: boolean; + onClick: () => void; } const ToggleButton = (props: ToggleButtonProps) => { - const [isActive, setIsActive] = useState(false); - - const toggleState = () => { - setIsActive(!isActive); - if (props.onClick) { - props.onClick(); - } - }; - return ( -
+
{ }} /> -
From bfe3e162ea966098eb5335012366a35b8b82e5ae Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Tue, 27 Aug 2024 04:04:21 +0900 Subject: [PATCH 37/51] =?UTF-8?q?[feat]=20SettingsModal=E3=81=AE=E5=AE=9F?= =?UTF-8?q?=E8=A3=85=EF=BC=86=E5=A4=9A=E8=A8=80=E8=AA=9E=E5=8C=96=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/Layout/Layout.module.css | 25 +++++- view-user/src/components/Layout/Layout.tsx | 85 +++++++++++++++---- view-user/src/pages/index.tsx | 9 +- 3 files changed, 100 insertions(+), 19 deletions(-) diff --git a/view-user/src/components/Layout/Layout.module.css b/view-user/src/components/Layout/Layout.module.css index 277ced20..d7105aaa 100644 --- a/view-user/src/components/Layout/Layout.module.css +++ b/view-user/src/components/Layout/Layout.module.css @@ -24,5 +24,28 @@ } .reachModal button { - margin-top: 1.5vw; + margin-top: 3vw; +} + +.settingsModal, +.settingsModal > div { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.settingsModal { + gap: 9vw; +} + +.settingsModal p { + font-family: "Noto Sans JP"; + font-size: 6vw; + font-style: normal; + font-weight: 700; + line-height: normal; + color: var(--Main-Color, #ff3342); + text-align: center; + margin-bottom: 3.5vw; } diff --git a/view-user/src/components/Layout/Layout.tsx b/view-user/src/components/Layout/Layout.tsx index aa371370..d02dc850 100644 --- a/view-user/src/components/Layout/Layout.tsx +++ b/view-user/src/components/Layout/Layout.tsx @@ -1,4 +1,5 @@ -import React, { useState, useEffect, useRef, useLayoutEffect } from "react"; +import { useState, useEffect, useRef, useLayoutEffect } from "react"; +import { useRouter } from "next/router"; import styles from "./Layout.module.css"; import { ReachIcon, @@ -11,7 +12,9 @@ import { Header, Modal, Button, + ToggleButton, } from "@/components/common"; +import { ja, en } from "@/locales"; const images = [ { src: "/ReactionIcon/crap.png", alt: "crap icon" }, @@ -29,11 +32,18 @@ interface LayoutProps { pageName: string; isSortedAscending?: boolean; setIsSortedAscending?: (value: boolean) => void; + language: string; + setLanguage: (value: string) => void; } const Layout = (props: LayoutProps) => { + const router = useRouter(); + const t = props.language === "ja" ? ja : en; const [isReactionModalOpen, setIsReactionModalOpen] = useState(false); + const [isSettingsModalOpen, setIsSettingsModalOpen] = + useState(false); + const [isSortOrderActive, setIsSortOrderActive] = useState(false); const [isReachModalOpen, setIsReachModalOpen] = useState(false); const [isReachIconVisible, setReachIconVisible] = useState(true); const [navBarHeight, setNavBarHeight] = useState(); @@ -68,6 +78,12 @@ const Layout = (props: LayoutProps) => { if (props.setIsSortedAscending) { props.setIsSortedAscending(!props.isSortedAscending); } + setIsSortOrderActive(!isSortOrderActive); + }; + + const toggleLanguage = () => { + const newLocale = props.language === "ja" ? "en" : "ja"; + router.push(router.pathname, router.asPath, { locale: newLocale }); }; const Icons = (pageName: string) => { @@ -89,7 +105,11 @@ const Layout = (props: LayoutProps) => { onClick={handleReachIconClick} /> ), - , + , ]; break; case "/prizes": @@ -108,7 +128,11 @@ const Layout = (props: LayoutProps) => { key="reaction" /> ), - , + , ]; break; default: @@ -127,7 +151,11 @@ const Layout = (props: LayoutProps) => { onClick={handleReachIconClick} /> ), - , + , ]; } return icons.filter(Boolean); @@ -144,19 +172,44 @@ const Layout = (props: LayoutProps) => { images={images} /> )} - {isReachModalOpen && ( - -
-

リーチしましたか?

- - + +
+

{t.reachModal.title}

+ + +
+
+ +
+
+

{t.settingsModal.languageSelection}

+ + {t.settingsModal.japanese} + {t.settingsModal.english} +
- - )} +
+

{t.settingsModal.sortOrder}

+ + {t.settingsModal.drawOrder} + {t.settingsModal.ascending} + +
+
+
{props.children}
diff --git a/view-user/src/pages/index.tsx b/view-user/src/pages/index.tsx index 1f0bcb03..b8e29ce8 100644 --- a/view-user/src/pages/index.tsx +++ b/view-user/src/pages/index.tsx @@ -2,7 +2,6 @@ import type { NextPage } from "next"; import { useRouter } from "next/router"; import React, { useEffect, useState } from "react"; import styles from "@/styles/Home.module.css"; -import { ja, en } from "@/locales"; import { useSubscription } from "@apollo/client"; import { SubscribeListNumbersDocument } from "@/type/graphql"; import type { SubscribeListNumbersSubscription } from "@/type/graphql"; @@ -10,7 +9,7 @@ import { Layout, Loading, NumberCardLarge, NumberCardList } from "@/components"; const Page: NextPage = () => { const { pathname: pageName, locale } = useRouter(); - const t = locale === "ja" ? ja : en; + const [language, setLanguage] = useState(locale || "ja"); const [isSortedAscending, setIsSortedAscending] = useState(true); const [bingoNumbers, setBingoNumbers] = useState< SubscribeListNumbersSubscription["numbers"] @@ -24,6 +23,10 @@ const Page: NextPage = () => { } }, [data]); + useEffect(() => { + setLanguage(locale || "ja"); + }, [locale]); + const defaultBingoNumber = { number: 0, id: 0, @@ -48,6 +51,8 @@ const Page: NextPage = () => { pageName={pageName} isSortedAscending={isSortedAscending} setIsSortedAscending={setIsSortedAscending} + language={language} + setLanguage={setLanguage} >
From dc62acdcb85f1716725e56f7e5bf6a9cad19a02c Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Wed, 28 Aug 2024 03:09:16 +0900 Subject: [PATCH 38/51] =?UTF-8?q?[fix]=20=E6=98=87=E9=A0=86=E6=99=82?= =?UTF-8?q?=E3=81=AE=E8=A1=A8=E7=A4=BA=E3=82=92=E4=BF=AE=E6=AD=A3=EF=BC=86?= =?UTF-8?q?=E8=A8=80=E8=AA=9E=E8=A8=AD=E5=AE=9A=E3=81=AE=E5=86=8D=E3=83=AC?= =?UTF-8?q?=E3=83=B3=E3=83=80=E3=83=AA=E3=83=B3=E3=82=B0=E3=82=92=E9=98=B2?= =?UTF-8?q?=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/pages/index.tsx | 63 ++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/view-user/src/pages/index.tsx b/view-user/src/pages/index.tsx index b8e29ce8..549e2116 100644 --- a/view-user/src/pages/index.tsx +++ b/view-user/src/pages/index.tsx @@ -1,12 +1,38 @@ import type { NextPage } from "next"; import { useRouter } from "next/router"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useCallback } from "react"; import styles from "@/styles/Home.module.css"; import { useSubscription } from "@apollo/client"; import { SubscribeListNumbersDocument } from "@/type/graphql"; import type { SubscribeListNumbersSubscription } from "@/type/graphql"; import { Layout, Loading, NumberCardLarge, NumberCardList } from "@/components"; +const defaultBingoNumber = { + number: 0, + id: 0, + createdAt: new Date(), + updatedAt: new Date(), +}; + +const getFirstBingoNumber = ( + bingoNumbers: SubscribeListNumbersSubscription["numbers"], +) => bingoNumbers[bingoNumbers.length - 1] ?? defaultBingoNumber; + +const getSortedBingoNumber = ( + bingoNumbers: SubscribeListNumbersSubscription["numbers"], +) => [...bingoNumbers].sort((a, b) => a.number - b.number); + +const getDisplayBingoNumbers = ( + isSortedAscending: boolean, + bingoNumbers: SubscribeListNumbersSubscription["numbers"], +) => { + const firstBingoNumber = getFirstBingoNumber(bingoNumbers); + const sortedBingoNumber = getSortedBingoNumber(bingoNumbers); + return isSortedAscending + ? { large: firstBingoNumber, list: bingoNumbers.slice(0, -1).reverse() } + : { list: sortedBingoNumber }; +}; + const Page: NextPage = () => { const { pathname: pageName, locale } = useRouter(); const [language, setLanguage] = useState(locale || "ja"); @@ -16,33 +42,28 @@ const Page: NextPage = () => { >([]); const { data, loading } = useSubscription(SubscribeListNumbersDocument); - // Subscription handling useEffect - useEffect(() => { + const updateBingoNumbers = useCallback(() => { if (data) { setBingoNumbers(data.numbers); } }, [data]); - useEffect(() => { + const updateLanguage = useCallback(() => { setLanguage(locale || "ja"); }, [locale]); - const defaultBingoNumber = { - number: 0, - id: 0, - createdAt: new Date(), - updatedAt: new Date(), - }; - const copiedArray = [...bingoNumbers]; - const sortCopiedArray = [...bingoNumbers]; - const firstBingoNumber = copiedArray.pop() ?? defaultBingoNumber; - const sortFirstBingoNumber = - sortCopiedArray.sort((a, b) => a.number - b.number).shift() ?? - defaultBingoNumber; + useEffect(() => { + updateBingoNumbers(); + }, [updateBingoNumbers]); + + useEffect(() => { + updateLanguage(); + }, [updateLanguage]); - const displayBingoNumbers = isSortedAscending - ? { large: firstBingoNumber, list: copiedArray.reverse() } - : { large: sortFirstBingoNumber, list: sortCopiedArray.slice(1) }; + const displayBingoNumbers = getDisplayBingoNumbers( + isSortedAscending, + bingoNumbers, + ); return ( <> @@ -55,7 +76,9 @@ const Page: NextPage = () => { setLanguage={setLanguage} >
- + {isSortedAscending && displayBingoNumbers.large && ( + + )}
From d094cd1c28c10171426d761af280fb433d68596b Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 29 Aug 2024 02:30:12 +0900 Subject: [PATCH 39/51] =?UTF-8?q?[fix]=20=E5=9E=8B=E3=81=AE=E9=9B=86?= =?UTF-8?q?=E7=B4=84&=E5=88=9D=E6=9C=9F=E5=80=A4=E3=81=AE=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=8F=9B=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/pages/index.tsx | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/view-user/src/pages/index.tsx b/view-user/src/pages/index.tsx index 549e2116..6608bdb7 100644 --- a/view-user/src/pages/index.tsx +++ b/view-user/src/pages/index.tsx @@ -7,24 +7,17 @@ import { SubscribeListNumbersDocument } from "@/type/graphql"; import type { SubscribeListNumbersSubscription } from "@/type/graphql"; import { Layout, Loading, NumberCardLarge, NumberCardList } from "@/components"; -const defaultBingoNumber = { - number: 0, - id: 0, - createdAt: new Date(), - updatedAt: new Date(), -}; +type BingoNumbers = SubscribeListNumbersSubscription["numbers"]; -const getFirstBingoNumber = ( - bingoNumbers: SubscribeListNumbersSubscription["numbers"], -) => bingoNumbers[bingoNumbers.length - 1] ?? defaultBingoNumber; +const getFirstBingoNumber = (bingoNumbers: BingoNumbers) => + bingoNumbers[bingoNumbers.length - 1]; -const getSortedBingoNumber = ( - bingoNumbers: SubscribeListNumbersSubscription["numbers"], -) => [...bingoNumbers].sort((a, b) => a.number - b.number); +const getSortedBingoNumber = (bingoNumbers: BingoNumbers) => + [...bingoNumbers].sort((a, b) => a.number - b.number); const getDisplayBingoNumbers = ( isSortedAscending: boolean, - bingoNumbers: SubscribeListNumbersSubscription["numbers"], + bingoNumbers: BingoNumbers, ) => { const firstBingoNumber = getFirstBingoNumber(bingoNumbers); const sortedBingoNumber = getSortedBingoNumber(bingoNumbers); @@ -37,9 +30,14 @@ const Page: NextPage = () => { const { pathname: pageName, locale } = useRouter(); const [language, setLanguage] = useState(locale || "ja"); const [isSortedAscending, setIsSortedAscending] = useState(true); - const [bingoNumbers, setBingoNumbers] = useState< - SubscribeListNumbersSubscription["numbers"] - >([]); + const [bingoNumbers, setBingoNumbers] = useState([ + { + number: 0, + id: 0, + createdAt: new Date(), + updatedAt: new Date(), + }, + ]); const { data, loading } = useSubscription(SubscribeListNumbersDocument); const updateBingoNumbers = useCallback(() => { From 3892bc85fd8184f02995bf9e88ad2d0eef6ba84d Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 29 Aug 2024 23:15:32 +0900 Subject: [PATCH 40/51] =?UTF-8?q?[fix]=20Docker=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .docker/api.Dockerfile | 3 +++ docker-compose.prod.yml | 46 +++++++++++++++++++++++++++++++++-------- docker-compose.yml | 16 +++----------- 3 files changed, 43 insertions(+), 22 deletions(-) create mode 100644 .docker/api.Dockerfile diff --git a/.docker/api.Dockerfile b/.docker/api.Dockerfile new file mode 100644 index 00000000..ac07f41a --- /dev/null +++ b/.docker/api.Dockerfile @@ -0,0 +1,3 @@ +FROM hasura/graphql-engine:v2.36.6@sha256:3fc234510962e66d5ca7db16734b8796a16fb729953915861953e974f976f30f +WORKDIR /hasura/api +RUN curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 33772a72..e4ba9d27 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -6,6 +6,24 @@ services: volumes: ["./cloudflare/prod:/home/nonroot/.cloudflared"] command: tunnel run + db: + image: postgres:12 + container_name: "bingo_db" + volumes: + - db-data:/var/lib/postgresql/data + environment: + POSTGRES_DB: bingo_db + POSTGRES_USER: bingo + POSTGRES_PASSWORD: password + POSTGRES_HOST_AUTH_METHOD: trust + healthcheck: + test: + - "CMD-SHELL" + - "pg_isready" + interval: 10s + timeout: 5s + retries: 5 + api: # hasura build: context: . @@ -16,22 +34,32 @@ services: - ./settings/bingo-prod.env view-user: - build: - context: . - dockerfile: .docker/view-user.Dockerfile + image: node:18.17.0-alpine@sha256:58878e9e1ed3911bdd675d576331ed8838fc851607aed3bb91e25dfaffab3267 container_name: "view-user" - volumes: [./view-user:/app] + volumes: + - ./view-user:/app + working_dir: /app command: sh -c "npm install && npm run build && npm run start" + ports: + - "3000:3000" env_file: - - ./settings/bingo-prod.env + - ./settings/bingo.env + stdin_open: true + tty: true view-admin: - build: - context: . - dockerfile: .docker/view-admin.Dockerfile + image: node:18.17.0-alpine@sha256:58878e9e1ed3911bdd675d576331ed8838fc851607aed3bb91e25dfaffab3267 container_name: "view-admin" volumes: - ./view-admin:/app + working_dir: /app command: sh -c "npm install && npm run build && npm run start" + ports: + - "3001:3000" env_file: - - ./settings/admin-prod.env + - ./settings/admin.env + stdin_open: true + tty: true + +volumes: + db-data: diff --git a/docker-compose.yml b/docker-compose.yml index 9b23ffa1..6cee13b8 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,26 +18,16 @@ services: retries: 5 api: # hasura - image: hasura/graphql-engine:v2.36.6@sha256:3fc234510962e66d5ca7db16734b8796a16fb729953915861953e974f976f30f + build: + context: . + dockerfile: .docker/api.Dockerfile container_name: "bingo_api" ports: - "8080:8080" volumes: - ./api:/hasura/api - working_dir: /hasura/api env_file: - ./settings/bingo.env - environment: - HASURA_GRAPHQL_ENABLE_CONSOLE: true - HASURA_GRAPHQL_DATABASE_URL: "postgres://bingo:password@db:5432/bingo_db" - HASURA_GRAPHQL_DEV_MODE: true - HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log - HASURA_GRAPHQL_EXPERIMENTAL_FEATURES: "naming_convention" - entrypoint: > - sh -c " - curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash && - graphql-engine serve - " view-user: image: node:18.17.0-alpine@sha256:58878e9e1ed3911bdd675d576331ed8838fc851607aed3bb91e25dfaffab3267 From 0154308973e629a9c7ca462aef8959f731d40598 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 29 Aug 2024 23:23:14 +0900 Subject: [PATCH 41/51] [fix] Remove unused CSS styles in BingoResult module --- .../common/BingoResult/BingoResult.module.css | 144 ------------------ .../common/BingoResult/BingoResult.tsx | 94 ------------ .../components/common/BingoResult/index.ts | 2 - view-user/src/pages/test/index.tsx | 65 -------- 4 files changed, 305 deletions(-) delete mode 100644 view-user/src/components/common/BingoResult/BingoResult.module.css delete mode 100644 view-user/src/components/common/BingoResult/BingoResult.tsx delete mode 100644 view-user/src/components/common/BingoResult/index.ts delete mode 100644 view-user/src/pages/test/index.tsx diff --git a/view-user/src/components/common/BingoResult/BingoResult.module.css b/view-user/src/components/common/BingoResult/BingoResult.module.css deleted file mode 100644 index b68a6fce..00000000 --- a/view-user/src/components/common/BingoResult/BingoResult.module.css +++ /dev/null @@ -1,144 +0,0 @@ -.content_wrapper { - padding: 1.5rem; -} - -.container { - border-radius: 0.5rem; - padding: 2rem; - display: flex; - flex-direction: column; - gap: 1rem; - background: rgba(255, 255, 255, 0.50); -} - -.frame_title { - display: flex; - justify-content: center; - gap: 0.5rem; - font-size: clamp(1rem, calc(100vw / 20 ) , 3rem); - font-weight: bold; - color: #07033E; -} - -.frame_title_button { - display: flex; - align-items: center; - justify-content: center; - gap: 0.5rem; -} - -.card_frame { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - gap: 5vw; -} - -.large_card { - display: flex; - justify-content: center; - align-items: center; - width: 64vw; - height: 64vw; - border-radius: 0.5rem; - border: 0px solid #333; - background-color: #FF6591; - filter: drop-shadow(0px 3px 4px rgba(155, 104, 159, 0.71)); - font-size: clamp(1rem, 100vw / 3 , 10rem); - font-weight: bold; - color: #FFF; - text-shadow : - 3px 3px 1px #333333, - -3px 3px 1px #333333, - 3px -3px 1px #333333, - -3px -3px 1px #333333, - 3px 0px 1px #333333, - 0px 3px 1px #333333, - -3px 0px 1px #333333, - 0px -3px 1px #333333; -} - -.small_card_frame { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 4vw; -} - -.small_card { - display: flex; - justify-content: center; - align-items: center; - width: 22vw; - height: 22vw; - border-radius: 0.5rem; - border: 0px solid #333; - background-color: #FF6591; - filter: drop-shadow(0px 3px 4px rgba(155, 104, 159, 0.71)); - font-size: clamp(24px, calc(100vw / 9 ) , 68px); - font-weight: bold; - color: #FFF; - text-shadow: rgb(7, 3, 62) 2px 0px 0px, rgb(7, 3, 62) 1.75517px 0.958851px 0px, rgb(7, 3, 62) 1.0806px 1.68294px 0px, rgb(7, 3, 62) 0.141474px 1.99499px 0px, rgb(7, 3, 62) -0.832294px 1.81859px 0px, rgb(7, 3, 62) -1.60229px 1.19694px 0px, rgb(7, 3, 62) -1.97998px 0.28224px 0px, rgb(7, 3, 62) -1.87291px -0.701566px 0px, rgb(7, 3, 62) -1.30729px -1.5136px 0px, rgb(7, 3, 62) -0.421592px -1.95506px 0px, rgb(7, 3, 62) 0.567324px -1.91785px 0px, rgb(7, 3, 62) 1.41734px -1.41108px 0px, rgb(7, 3, 62) 1.92034px -0.558831px 0px; -} - -@media (max-width: 400px) { - .frame_title { - gap: 0.4rem; - } - - .container { - gap: 1rem; - } - - .content_wrapper { - padding: 1rem; - } -} - -@media (min-width: 820px) { - .large_card { - display: flex; - justify-content: center; - align-items: center; - width: 45vw; - height: 45vw; - border-radius: 0.5rem; - border: 0px solid #333; - background-color: #FF6591; - filter: drop-shadow(0px 3px 4px rgba(155, 104, 159, 0.71)); - font-size: clamp(1rem, 100vw / 3 , 10rem); - font-weight: bold; - color: #FFF; - text-shadow : - 3px 3px 2px #333333, - -3px 3px 2px #333333, - 3px -3px 2px #333333, - -3px -3px 2px #333333, - 3px 0px 2px #333333, - 0px 3px 2px #333333, - -3px 0px 2px #333333, - 0px -3px 2px #333333; - } - - .small_card_frame { - display: grid; - grid-template-columns: repeat(5, 1fr); - gap: 3.5vw; - } - - .small_card { - display: flex; - justify-content: center; - align-items: center; - width: 14vw; - height: 14vw; - border-radius: 0.5rem; - border: 0px solid #333; - background-color: #FF6591; - filter: drop-shadow(0px 3px 4px rgba(155, 104, 159, 0.71)); - font-size: clamp(24px, calc(100vw / 9 ) , 68px); - font-weight: bold; - color: #FFF; - text-shadow: rgb(7, 3, 62) 2px 0px 0px, rgb(7, 3, 62) 1.75517px 0.958851px 0px, rgb(7, 3, 62) 1.0806px 1.68294px 0px, rgb(7, 3, 62) 0.141474px 1.99499px 0px, rgb(7, 3, 62) -0.832294px 1.81859px 0px, rgb(7, 3, 62) -1.60229px 1.19694px 0px, rgb(7, 3, 62) -1.97998px 0.28224px 0px, rgb(7, 3, 62) -1.87291px -0.701566px 0px, rgb(7, 3, 62) -1.30729px -1.5136px 0px, rgb(7, 3, 62) -0.421592px -1.95506px 0px, rgb(7, 3, 62) 0.567324px -1.91785px 0px, rgb(7, 3, 62) 1.41734px -1.41108px 0px, rgb(7, 3, 62) 1.92034px -0.558831px 0px; - } -} diff --git a/view-user/src/components/common/BingoResult/BingoResult.tsx b/view-user/src/components/common/BingoResult/BingoResult.tsx deleted file mode 100644 index 659c0740..00000000 --- a/view-user/src/components/common/BingoResult/BingoResult.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import React, { useState } from "react"; -import Image from "next/image"; -import styles from "./BingoResult.module.css"; -import { BingoIcon, Button } from "@/components/common"; -import { useRouter } from "next/router"; -import { ja } from "@/locales/ja"; -import { en } from "@/locales/en"; -import type { SubscribeListNumbersSubscription } from "@/type/graphql"; -interface BingoResultProps { - bingoResultNumber: SubscribeListNumbersSubscription["numbers"]; -} - -export const BingoResult = (props: BingoResultProps) => { - const { locale } = useRouter(); - const t = locale === "ja" ? ja : en; - const [resultChange, setResultChange] = useState(true); - const copiedArray = [...props.bingoResultNumber]; - const sortCopiedArray = [...props.bingoResultNumber]; - const firstBingoNumber = copiedArray.pop(); - const sortFirstBingoNumber = sortCopiedArray - .sort((a, b) => a.number - b.number) - .shift(); - - function ResultNumber() { - if (resultChange) { - return ( - <> -
-
{firstBingoNumber?.number}
-
- {[...props.bingoResultNumber] - .slice(0, -1) - .reverse() - .map((num, index) => ( -
-
{num.number}
-
- ))} -
-
- - ); - } else { - return ( - <> -
-
- {sortFirstBingoNumber?.number} -
-
- {[...props.bingoResultNumber] - .sort((a, b) => a.number - b.number) - .slice(1) - .map((num, index) => ( -
-
{num.number}
-
- ))} -
-
- - ); - } - } - - return ( -
-
-
- BingoCard -

{t.SUB_TITLE_NUMBER}

-
- -
-
-
- -
-
-
- ); -}; - -export default BingoResult; diff --git a/view-user/src/components/common/BingoResult/index.ts b/view-user/src/components/common/BingoResult/index.ts deleted file mode 100644 index 76a13430..00000000 --- a/view-user/src/components/common/BingoResult/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// "BingoResult"ディレクトリ内のモジュール"BingoResult.tsx"をdefaultとして再エクスポートする. -export { default } from "./BingoResult"; diff --git a/view-user/src/pages/test/index.tsx b/view-user/src/pages/test/index.tsx deleted file mode 100644 index ef5f01c9..00000000 --- a/view-user/src/pages/test/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React, { useState } from "react"; -import { - NumberCardList, - ReactionStampModal, - ToggleButton, - ReachIcon, - PrizeCardList, - PrizeCard, - NavigationBar, - PrizesIcon, - ReachCount, -} from "@/components/common"; -import Layout from "@/components/Layout"; -import { BingoNumber, BingoPrize, PrizeImage } from "@/type/common"; -import { useRouter } from "next/router"; - -const testBingoNumbers: BingoNumber[] = [ - { id: 1, number: 1, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 2, number: 2, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 3, number: 3, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 4, number: 4, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 5, number: 5, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 6, number: 6, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 7, number: 7, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 8, number: 8, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 9, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 10, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 11, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 12, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 13, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 14, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 15, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 16, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 17, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 18, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 19, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 20, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, - { id: 21, number: 9, createdAt: "2024-08-01", updatedAt: "2024-08-01" }, -]; - -const testNumber: number = 8; - -const HomePage: React.FC = () => { - const router = useRouter(); - const pageName = router.pathname; - - return ( -
- {/* */} - {/* */} - {/* - {isModalOpen && ( - - )} */} - {/* */} - {/* */} - - - - {/* */} -
- ); -}; - -export default HomePage; From 5f97d3cd271b77f3e4b577cddc04bc9b70a75247 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 29 Aug 2024 23:23:20 +0900 Subject: [PATCH 42/51] fix: Remove unused CSS styles in BingoResult module --- view-admin/codegen.ts | 3 ++- view-user/codegen.ts | 3 ++- view-user/src/components/Layout/Layout.tsx | 4 ++-- view-user/src/components/common/PrizeCard/PrizeCard.tsx | 5 ++--- .../src/components/common/PrizeCardList/PrizeCardList.tsx | 4 ++-- view-user/src/components/common/PrizeResult/PrizeResult.tsx | 6 ++---- .../src/components/common/SettingsIcon/SettingsIcon.tsx | 4 +++- view-user/src/components/common/index.ts | 1 - 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/view-admin/codegen.ts b/view-admin/codegen.ts index d7ab96a6..645dd838 100644 --- a/view-admin/codegen.ts +++ b/view-admin/codegen.ts @@ -9,7 +9,8 @@ const config: CodegenConfig = { { "http://api:8080/v1/graphql": { headers: { - "x-hasura-admin-secret": process.env.HASURA_GRAPHQL_ADMIN_SECRET, + "x-hasura-admin-secret": + process.env.HASURA_GRAPHQL_ADMIN_SECRET || "", }, }, }, diff --git a/view-user/codegen.ts b/view-user/codegen.ts index d7ab96a6..645dd838 100644 --- a/view-user/codegen.ts +++ b/view-user/codegen.ts @@ -9,7 +9,8 @@ const config: CodegenConfig = { { "http://api:8080/v1/graphql": { headers: { - "x-hasura-admin-secret": process.env.HASURA_GRAPHQL_ADMIN_SECRET, + "x-hasura-admin-secret": + process.env.HASURA_GRAPHQL_ADMIN_SECRET || "", }, }, }, diff --git a/view-user/src/components/Layout/Layout.tsx b/view-user/src/components/Layout/Layout.tsx index d02dc850..9c47c724 100644 --- a/view-user/src/components/Layout/Layout.tsx +++ b/view-user/src/components/Layout/Layout.tsx @@ -32,8 +32,8 @@ interface LayoutProps { pageName: string; isSortedAscending?: boolean; setIsSortedAscending?: (value: boolean) => void; - language: string; - setLanguage: (value: string) => void; + language?: string; + setLanguage?: (value: string) => void; } const Layout = (props: LayoutProps) => { diff --git a/view-user/src/components/common/PrizeCard/PrizeCard.tsx b/view-user/src/components/common/PrizeCard/PrizeCard.tsx index 5c999c7a..2d86a83f 100644 --- a/view-user/src/components/common/PrizeCard/PrizeCard.tsx +++ b/view-user/src/components/common/PrizeCard/PrizeCard.tsx @@ -2,9 +2,8 @@ import React from "react"; import styles from "./PrizeCard.module.css"; import type { GetListPrizesQuery } from "@/type/graphql"; import { useRouter } from "next/router"; -import { ja } from "@/locales/ja"; -import { en } from "@/locales/en"; import classNames from "classnames"; +import { en, ja } from "@/locales"; interface PrizeCardProps { BingoPrize: GetListPrizesQuery["prizes"][number]; @@ -46,7 +45,7 @@ const PrizeCard = (props: PrizeCardProps) => {
{bingoPrize.isWon && (
-

{t.WINNING_OVERRAY}

+

)}
diff --git a/view-user/src/components/common/PrizeCardList/PrizeCardList.tsx b/view-user/src/components/common/PrizeCardList/PrizeCardList.tsx index e721d964..6480c154 100644 --- a/view-user/src/components/common/PrizeCardList/PrizeCardList.tsx +++ b/view-user/src/components/common/PrizeCardList/PrizeCardList.tsx @@ -1,10 +1,10 @@ import React from "react"; import styles from "./PrizeCardList.module.css"; import PrizeCard from "../PrizeCard"; -import { BingoPrize } from "@/type/common"; +import { GetListPrizesQuery } from "@/type/graphql"; interface PrizeCardListProps { - BingoPrize: BingoPrize[]; + BingoPrize: GetListPrizesQuery["prizes"]; } const PrizeCardList = (props: PrizeCardListProps) => { diff --git a/view-user/src/components/common/PrizeResult/PrizeResult.tsx b/view-user/src/components/common/PrizeResult/PrizeResult.tsx index 6a3b31ff..ecad9a53 100644 --- a/view-user/src/components/common/PrizeResult/PrizeResult.tsx +++ b/view-user/src/components/common/PrizeResult/PrizeResult.tsx @@ -2,8 +2,7 @@ import React, { useState, useEffect } from "react"; import styles from "./PrizeResult.module.css"; import Image from "next/image"; import { useRouter } from "next/router"; -import { ja } from "@/locales/ja"; -import { en } from "@/locales/en"; +import { ja, en } from "@/locales"; import { GetListPrizesQuery } from "@/type/graphql"; interface PrizeResultProps { @@ -55,7 +54,6 @@ export const PrizeResult = (props: PrizeResultProps) => {
GiftBox - {t.SUB_TITLE_PRIZE}
{!hasValidData &&
} {hasValidData && ( @@ -104,7 +102,7 @@ export const PrizeResult = (props: PrizeResultProps) => {
{prize.isWon && (
-

{t.WINNING_OVERRAY}

+

)}
diff --git a/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx b/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx index ee581650..1b57f410 100644 --- a/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx +++ b/view-user/src/components/common/SettingsIcon/SettingsIcon.tsx @@ -16,7 +16,9 @@ const SettingsIcon = (props: SettingsIconProps) => { props.onClick(); } setColorInversion(!colorInversion); - props.setIsSettingsModalOpen(!props.isOpen); + if (props.setIsSettingsModalOpen) { + props.setIsSettingsModalOpen(!props.isOpen); + } }; useEffect(() => { diff --git a/view-user/src/components/common/index.ts b/view-user/src/components/common/index.ts index b3c9d285..2ed45022 100644 --- a/view-user/src/components/common/index.ts +++ b/view-user/src/components/common/index.ts @@ -2,7 +2,6 @@ // "Header"ディレクトリ全体をインポートし、内部のモジュールにアクセスできるようにする。 // デフォルトエクスポートを再エクスポートする目的は、モジュールを使うときのimport文をシンプルにするため。 export { default as Header } from "./Header"; -export { default as BingoResult } from "./BingoResult"; export { default as Modal } from "./Modal"; export { default as Button } from "./Button"; export { default as BingoIcon } from "./BingoIcon"; From 152b2d38f2cc1e4d5fedb8644a5a2a32094dd43f Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 29 Aug 2024 23:31:33 +0900 Subject: [PATCH 43/51] chore: Update npm dependency to latest stable version --- .github/workflows/auto-prettier-admin.yml | 15 +++------------ .github/workflows/auto-prettier-user.yml | 3 ++- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/auto-prettier-admin.yml b/.github/workflows/auto-prettier-admin.yml index 86c33ba2..549e7bfa 100755 --- a/.github/workflows/auto-prettier-admin.yml +++ b/.github/workflows/auto-prettier-admin.yml @@ -20,25 +20,15 @@ jobs: - run: npm install working-directory: view-admin - # - name: prettier format - # run: npm run format - # working-directory: view-user - - name: lint run: npm run lint:fix working-directory: view-admin - # - uses: stefanzweifel/git-auto-commit-action@v3.0.0 - # with: - # branch: develop - # commit_message: formatted by workflow - # commit_options: '--no-verify' - lint_check: runs-on: ubuntu-latest strategy: matrix: - node-version: [20] + node-version: [20.3.1] permissions: contents: read pull-requests: write @@ -50,9 +40,10 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: "npm" - cache-dependency-path: ./view-admin/package-lock.json + cache-dependency-path: view-admin/package-lock.json - name: Install Dependencies run: npm ci + working-directory: view-admin - name: Run ESLint Reviewdog uses: reviewdog/action-eslint@v1 diff --git a/.github/workflows/auto-prettier-user.yml b/.github/workflows/auto-prettier-user.yml index b5ab3965..0b8844fc 100755 --- a/.github/workflows/auto-prettier-user.yml +++ b/.github/workflows/auto-prettier-user.yml @@ -50,9 +50,10 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: "npm" - cache-dependency-path: ./view-user/package-lock.json + cache-dependency-path: view-user/package-lock.json - name: Install Dependencies run: npm ci + working-directory: view-user - name: Run ESLint Reviewdog uses: reviewdog/action-eslint@v1 From 426aac9ddf3aa9107ddc38a209f8370eb25540da Mon Sep 17 00:00:00 2001 From: i2_yosuke Date: Thu, 29 Aug 2024 14:14:26 +0900 Subject: [PATCH 44/51] =?UTF-8?q?[feat]=20reach=5Flogs=E3=83=86=E3=83=BC?= =?UTF-8?q?=E3=83=96=E3=83=AB=E3=81=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../default/tables/public_reach_logs.yaml | 3 +++ .../databases/default/tables/tables.yaml | 1 + .../default/1720521696814_auto/up.sql | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 api/metadata/databases/default/tables/public_reach_logs.yaml diff --git a/api/metadata/databases/default/tables/public_reach_logs.yaml b/api/metadata/databases/default/tables/public_reach_logs.yaml new file mode 100644 index 00000000..edd25548 --- /dev/null +++ b/api/metadata/databases/default/tables/public_reach_logs.yaml @@ -0,0 +1,3 @@ +table: + name: reach_logs + schema: public diff --git a/api/metadata/databases/default/tables/tables.yaml b/api/metadata/databases/default/tables/tables.yaml index 967344c9..b8c4715d 100644 --- a/api/metadata/databases/default/tables/tables.yaml +++ b/api/metadata/databases/default/tables/tables.yaml @@ -1,3 +1,4 @@ - "!include public_images.yaml" - "!include public_numbers.yaml" - "!include public_prizes.yaml" +- "!include public_reach_logs.yaml" diff --git a/api/migrations/default/1720521696814_auto/up.sql b/api/migrations/default/1720521696814_auto/up.sql index a84ed6c8..a2ed8847 100644 --- a/api/migrations/default/1720521696814_auto/up.sql +++ b/api/migrations/default/1720521696814_auto/up.sql @@ -65,14 +65,32 @@ CREATE SEQUENCE public.prizes_id_seq NO MAXVALUE CACHE 1; ALTER SEQUENCE public.prizes_id_seq OWNED BY public.prizes.id; +CREATE TABLE public.reach_logs ( + id integer NOT NULL, + status boolean DEFAULT false NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + reach_num integer DEFAULT 0 NOT NULL +); +COMMENT ON TABLE public.reach_logs IS 'リーチ数を記録するテーブル'; +CREATE SEQUENCE public.reach_log_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; +ALTER SEQUENCE public.reach_log_id_seq OWNED BY public.reach_logs.id; ALTER TABLE ONLY public.images ALTER COLUMN id SET DEFAULT nextval('public.images_id_seq'::regclass); ALTER TABLE ONLY public.numbers ALTER COLUMN id SET DEFAULT nextval('public.numbers_id_seq'::regclass); ALTER TABLE ONLY public.prizes ALTER COLUMN id SET DEFAULT nextval('public.prizes_id_seq'::regclass); +ALTER TABLE ONLY public.reach_logs ALTER COLUMN id SET DEFAULT nextval('public.reach_log_id_seq'::regclass); ALTER TABLE ONLY public.images ADD CONSTRAINT images_pkey PRIMARY KEY (id); ALTER TABLE ONLY public.numbers ADD CONSTRAINT numbers_pkey PRIMARY KEY (id); ALTER TABLE ONLY public.prizes ADD CONSTRAINT prizes_pkey PRIMARY KEY (id); +ALTER TABLE ONLY public.reach_logs + ADD CONSTRAINT reach_log_pkey PRIMARY KEY (id); ALTER TABLE ONLY public.prizes ADD CONSTRAINT prizes_image_id_fkey FOREIGN KEY (image_id) REFERENCES public.images(id) ON UPDATE RESTRICT ON DELETE RESTRICT; From 61903163a991c3ce12837cf6350b63597ac12f53 Mon Sep 17 00:00:00 2001 From: i2_yosuke Date: Thu, 29 Aug 2024 22:52:14 +0900 Subject: [PATCH 45/51] =?UTF-8?q?[feat]=20codegen=E3=81=A7=E3=83=89?= =?UTF-8?q?=E3=82=AD=E3=83=A5=E3=83=A1=E3=83=B3=E3=83=88=E3=81=AE=E4=BD=9C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/gql/reach_logs.gql | 31 +++ view-user/src/type/graphql.ts | 432 +++++++++++++++++++++++++++++++ 2 files changed, 463 insertions(+) create mode 100644 view-user/src/gql/reach_logs.gql diff --git a/view-user/src/gql/reach_logs.gql b/view-user/src/gql/reach_logs.gql new file mode 100644 index 00000000..2f27b244 --- /dev/null +++ b/view-user/src/gql/reach_logs.gql @@ -0,0 +1,31 @@ +# リーチログの最新のreachNumを取得(Get) +query GetOneLatestReachLog { + reachLogs(orderBy: { createdAt: DESC }, limit: 1) { + reachNum + } +} + +# 指定したタイプスタンプ以降のリーチログを全て取得(Get) +query GetListReachLogsAfterTimestamp($timestamp: timestamptz!) { + reachLogs( + where: { createdAt: { _gt: $timestamp } } + orderBy: { createdAt: ASC } + ) { + id + status + createdAt + reachNum + } +} + +# リーチログの追加(Create) +mutation CreateOneReachRecord($status: Boolean!, $reachNum: Int!) { + insertReachLogsOne( + object: { status: $status, reachNum: $reachNum, createdAt: "now()" } + ) { + id + status + createdAt + reachNum + } +} diff --git a/view-user/src/type/graphql.ts b/view-user/src/type/graphql.ts index 88e6dbd6..214c3c0e 100644 --- a/view-user/src/type/graphql.ts +++ b/view-user/src/type/graphql.ts @@ -874,6 +874,233 @@ export type PrizesVarianceFields = { imageId?: Maybe; }; +/** リーチ数を記録するテーブル */ +export type ReachLogs = { + __typename?: "ReachLogs"; + createdAt: Scalars["timestamptz"]["output"]; + id: Scalars["Int"]["output"]; + reachNum: Scalars["Int"]["output"]; + status: Scalars["Boolean"]["output"]; +}; + +/** aggregated selection of "reach_logs" */ +export type ReachLogsAggregate = { + __typename?: "ReachLogsAggregate"; + aggregate?: Maybe; + nodes: Array; +}; + +/** aggregate fields of "reach_logs" */ +export type ReachLogsAggregateFields = { + __typename?: "ReachLogsAggregateFields"; + avg?: Maybe; + count: Scalars["Int"]["output"]; + max?: Maybe; + min?: Maybe; + stddev?: Maybe; + stddevPop?: Maybe; + stddevSamp?: Maybe; + sum?: Maybe; + varPop?: Maybe; + varSamp?: Maybe; + variance?: Maybe; +}; + +/** aggregate fields of "reach_logs" */ +export type ReachLogsAggregateFieldsCountArgs = { + columns?: InputMaybe>; + distinct?: InputMaybe; +}; + +/** aggregate avg on columns */ +export type ReachLogsAvgFields = { + __typename?: "ReachLogsAvgFields"; + id?: Maybe; + reachNum?: Maybe; +}; + +/** Boolean expression to filter rows from the table "reach_logs". All fields are combined with a logical 'AND'. */ +export type ReachLogsBoolExp = { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + createdAt?: InputMaybe; + id?: InputMaybe; + reachNum?: InputMaybe; + status?: InputMaybe; +}; + +/** unique or primary key constraints on table "reach_logs" */ +export enum ReachLogsConstraint { + /** unique or primary key constraint on columns "id" */ + reachLogPkey = "reach_log_pkey", +} + +/** input type for incrementing numeric columns in table "reach_logs" */ +export type ReachLogsIncInput = { + id?: InputMaybe; + reachNum?: InputMaybe; +}; + +/** input type for inserting data into table "reach_logs" */ +export type ReachLogsInsertInput = { + createdAt?: InputMaybe; + id?: InputMaybe; + reachNum?: InputMaybe; + status?: InputMaybe; +}; + +/** aggregate max on columns */ +export type ReachLogsMaxFields = { + __typename?: "ReachLogsMaxFields"; + createdAt?: Maybe; + id?: Maybe; + reachNum?: Maybe; +}; + +/** aggregate min on columns */ +export type ReachLogsMinFields = { + __typename?: "ReachLogsMinFields"; + createdAt?: Maybe; + id?: Maybe; + reachNum?: Maybe; +}; + +/** response of any mutation on the table "reach_logs" */ +export type ReachLogsMutationResponse = { + __typename?: "ReachLogsMutationResponse"; + /** number of rows affected by the mutation */ + affectedRows: Scalars["Int"]["output"]; + /** data from the rows affected by the mutation */ + returning: Array; +}; + +/** on_conflict condition type for table "reach_logs" */ +export type ReachLogsOnConflict = { + constraint: ReachLogsConstraint; + updateColumns?: Array; + where?: InputMaybe; +}; + +/** Ordering options when selecting data from "reach_logs". */ +export type ReachLogsOrderBy = { + createdAt?: InputMaybe; + id?: InputMaybe; + reachNum?: InputMaybe; + status?: InputMaybe; +}; + +/** primary key columns input for table: reach_logs */ +export type ReachLogsPkColumnsInput = { + id: Scalars["Int"]["input"]; +}; + +/** select columns of table "reach_logs" */ +export enum ReachLogsSelectColumn { + /** column name */ + createdAt = "createdAt", + /** column name */ + id = "id", + /** column name */ + reachNum = "reachNum", + /** column name */ + status = "status", +} + +/** input type for updating data in table "reach_logs" */ +export type ReachLogsSetInput = { + createdAt?: InputMaybe; + id?: InputMaybe; + reachNum?: InputMaybe; + status?: InputMaybe; +}; + +/** aggregate stddev on columns */ +export type ReachLogsStddevFields = { + __typename?: "ReachLogsStddevFields"; + id?: Maybe; + reachNum?: Maybe; +}; + +/** aggregate stddevPop on columns */ +export type ReachLogsStddevPopFields = { + __typename?: "ReachLogsStddevPopFields"; + id?: Maybe; + reachNum?: Maybe; +}; + +/** aggregate stddevSamp on columns */ +export type ReachLogsStddevSampFields = { + __typename?: "ReachLogsStddevSampFields"; + id?: Maybe; + reachNum?: Maybe; +}; + +/** Streaming cursor of the table "reach_logs" */ +export type ReachLogsStreamCursorInput = { + /** Stream column input with initial value */ + initialValue: ReachLogsStreamCursorValueInput; + /** cursor ordering */ + ordering?: InputMaybe; +}; + +/** Initial value of the column from where the streaming should start */ +export type ReachLogsStreamCursorValueInput = { + createdAt?: InputMaybe; + id?: InputMaybe; + reachNum?: InputMaybe; + status?: InputMaybe; +}; + +/** aggregate sum on columns */ +export type ReachLogsSumFields = { + __typename?: "ReachLogsSumFields"; + id?: Maybe; + reachNum?: Maybe; +}; + +/** update columns of table "reach_logs" */ +export enum ReachLogsUpdateColumn { + /** column name */ + createdAt = "createdAt", + /** column name */ + id = "id", + /** column name */ + reachNum = "reachNum", + /** column name */ + status = "status", +} + +export type ReachLogsUpdates = { + /** increments the numeric columns with given value of the filtered values */ + _inc?: InputMaybe; + /** sets the columns of the filtered rows to the given values */ + _set?: InputMaybe; + /** filter the rows which have to be updated */ + where: ReachLogsBoolExp; +}; + +/** aggregate varPop on columns */ +export type ReachLogsVarPopFields = { + __typename?: "ReachLogsVarPopFields"; + id?: Maybe; + reachNum?: Maybe; +}; + +/** aggregate varSamp on columns */ +export type ReachLogsVarSampFields = { + __typename?: "ReachLogsVarSampFields"; + id?: Maybe; + reachNum?: Maybe; +}; + +/** aggregate variance on columns */ +export type ReachLogsVarianceFields = { + __typename?: "ReachLogsVarianceFields"; + id?: Maybe; + reachNum?: Maybe; +}; + /** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ export type StringComparisonExp = { _eq?: InputMaybe; @@ -935,6 +1162,10 @@ export type MutationRoot = { deletePrizes?: Maybe; /** delete single row from the table: "prizes" */ deletePrizesByPk?: Maybe; + /** delete data from the table: "reach_logs" */ + deleteReachLogs?: Maybe; + /** delete single row from the table: "reach_logs" */ + deleteReachLogsByPk?: Maybe; /** insert data into the table: "images" */ insertImages?: Maybe; /** insert a single row into the table: "images" */ @@ -947,6 +1178,10 @@ export type MutationRoot = { insertPrizes?: Maybe; /** insert a single row into the table: "prizes" */ insertPrizesOne?: Maybe; + /** insert data into the table: "reach_logs" */ + insertReachLogs?: Maybe; + /** insert a single row into the table: "reach_logs" */ + insertReachLogsOne?: Maybe; /** update data of the table: "images" */ updateImages?: Maybe; /** update single row of the table: "images" */ @@ -965,6 +1200,12 @@ export type MutationRoot = { updatePrizesByPk?: Maybe; /** update multiples rows of table: "prizes" */ updatePrizesMany?: Maybe>>; + /** update data of the table: "reach_logs" */ + updateReachLogs?: Maybe; + /** update single row of the table: "reach_logs" */ + updateReachLogsByPk?: Maybe; + /** update multiples rows of table: "reach_logs" */ + updateReachLogsMany?: Maybe>>; }; /** mutation root */ @@ -997,6 +1238,16 @@ export type MutationRootDeletePrizesByPkArgs = { id: Scalars["Int"]["input"]; }; +/** mutation root */ +export type MutationRootDeleteReachLogsArgs = { + where: ReachLogsBoolExp; +}; + +/** mutation root */ +export type MutationRootDeleteReachLogsByPkArgs = { + id: Scalars["Int"]["input"]; +}; + /** mutation root */ export type MutationRootInsertImagesArgs = { objects: Array; @@ -1033,6 +1284,18 @@ export type MutationRootInsertPrizesOneArgs = { onConflict?: InputMaybe; }; +/** mutation root */ +export type MutationRootInsertReachLogsArgs = { + objects: Array; + onConflict?: InputMaybe; +}; + +/** mutation root */ +export type MutationRootInsertReachLogsOneArgs = { + object: ReachLogsInsertInput; + onConflict?: InputMaybe; +}; + /** mutation root */ export type MutationRootUpdateImagesArgs = { _inc?: InputMaybe; @@ -1090,6 +1353,25 @@ export type MutationRootUpdatePrizesManyArgs = { updates: Array; }; +/** mutation root */ +export type MutationRootUpdateReachLogsArgs = { + _inc?: InputMaybe; + _set?: InputMaybe; + where: ReachLogsBoolExp; +}; + +/** mutation root */ +export type MutationRootUpdateReachLogsByPkArgs = { + _inc?: InputMaybe; + _set?: InputMaybe; + pkColumns: ReachLogsPkColumnsInput; +}; + +/** mutation root */ +export type MutationRootUpdateReachLogsManyArgs = { + updates: Array; +}; + export type QueryRoot = { __typename?: "query_root"; /** fetch data from the table: "images" */ @@ -1110,6 +1392,12 @@ export type QueryRoot = { prizesAggregate: PrizesAggregate; /** fetch data from the table: "prizes" using primary key columns */ prizesByPk?: Maybe; + /** fetch data from the table: "reach_logs" */ + reachLogs: Array; + /** fetch aggregated fields from the table: "reach_logs" */ + reachLogsAggregate: ReachLogsAggregate; + /** fetch data from the table: "reach_logs" using primary key columns */ + reachLogsByPk?: Maybe; }; export type QueryRootImagesArgs = { @@ -1172,6 +1460,26 @@ export type QueryRootPrizesByPkArgs = { id: Scalars["Int"]["input"]; }; +export type QueryRootReachLogsArgs = { + distinctOn?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryRootReachLogsAggregateArgs = { + distinctOn?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryRootReachLogsByPkArgs = { + id: Scalars["Int"]["input"]; +}; + export type SubscriptionRoot = { __typename?: "subscription_root"; /** fetch data from the table: "images" */ @@ -1198,6 +1506,14 @@ export type SubscriptionRoot = { prizesByPk?: Maybe; /** fetch data from the table in a streaming manner: "prizes" */ prizesStream: Array; + /** fetch data from the table: "reach_logs" */ + reachLogs: Array; + /** fetch aggregated fields from the table: "reach_logs" */ + reachLogsAggregate: ReachLogsAggregate; + /** fetch data from the table: "reach_logs" using primary key columns */ + reachLogsByPk?: Maybe; + /** fetch data from the table in a streaming manner: "reach_logs" */ + reachLogsStream: Array; }; export type SubscriptionRootImagesArgs = { @@ -1278,6 +1594,32 @@ export type SubscriptionRootPrizesStreamArgs = { where?: InputMaybe; }; +export type SubscriptionRootReachLogsArgs = { + distinctOn?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type SubscriptionRootReachLogsAggregateArgs = { + distinctOn?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type SubscriptionRootReachLogsByPkArgs = { + id: Scalars["Int"]["input"]; +}; + +export type SubscriptionRootReachLogsStreamArgs = { + batchSize: Scalars["Int"]["input"]; + cursor: Array>; + where?: InputMaybe; +}; + export type CreateOneImageMutationVariables = Exact<{ bucketName: Scalars["String"]["input"]; fileName: Scalars["String"]["input"]; @@ -1464,6 +1806,46 @@ export type UpdateOnePrizeIsWonMutation = { } | null; }; +export type GetOneLatestReachLogQueryVariables = Exact<{ + [key: string]: never; +}>; + +export type GetOneLatestReachLogQuery = { + __typename?: "query_root"; + reachLogs: Array<{ __typename?: "ReachLogs"; reachNum: number }>; +}; + +export type GetListReachLogsAfterTimestampQueryVariables = Exact<{ + timestamp: Scalars["timestamptz"]["input"]; +}>; + +export type GetListReachLogsAfterTimestampQuery = { + __typename?: "query_root"; + reachLogs: Array<{ + __typename?: "ReachLogs"; + id: number; + status: boolean; + createdAt: any; + reachNum: number; + }>; +}; + +export type CreateOneReachRecordMutationVariables = Exact<{ + status: Scalars["Boolean"]["input"]; + reachNum: Scalars["Int"]["input"]; +}>; + +export type CreateOneReachRecordMutation = { + __typename?: "mutation_root"; + insertReachLogsOne?: { + __typename?: "ReachLogs"; + id: number; + status: boolean; + createdAt: any; + reachNum: number; + } | null; +}; + export const CreateOneImageDocument = gql` mutation CreateOneImage( $bucketName: String! @@ -1725,3 +2107,53 @@ export type UpdateOnePrizeIsWonMutationOptions = Apollo.BaseMutationOptions< UpdateOnePrizeIsWonMutation, UpdateOnePrizeIsWonMutationVariables >; +export const GetOneLatestReachLogDocument = gql` + query GetOneLatestReachLog { + reachLogs(orderBy: { createdAt: DESC }, limit: 1) { + reachNum + } + } +`; +export type GetOneLatestReachLogQueryResult = Apollo.QueryResult< + GetOneLatestReachLogQuery, + GetOneLatestReachLogQueryVariables +>; +export const GetListReachLogsAfterTimestampDocument = gql` + query GetListReachLogsAfterTimestamp($timestamp: timestamptz!) { + reachLogs( + where: { createdAt: { _gt: $timestamp } } + orderBy: { createdAt: ASC } + ) { + id + status + createdAt + reachNum + } + } +`; +export type GetListReachLogsAfterTimestampQueryResult = Apollo.QueryResult< + GetListReachLogsAfterTimestampQuery, + GetListReachLogsAfterTimestampQueryVariables +>; +export const CreateOneReachRecordDocument = gql` + mutation CreateOneReachRecord($status: Boolean!, $reachNum: Int!) { + insertReachLogsOne( + object: { status: $status, reachNum: $reachNum, createdAt: "now()" } + ) { + id + status + createdAt + reachNum + } + } +`; +export type CreateOneReachRecordMutationFn = Apollo.MutationFunction< + CreateOneReachRecordMutation, + CreateOneReachRecordMutationVariables +>; +export type CreateOneReachRecordMutationResult = + Apollo.MutationResult; +export type CreateOneReachRecordMutationOptions = Apollo.BaseMutationOptions< + CreateOneReachRecordMutation, + CreateOneReachRecordMutationVariables +>; From 64c8d638ee640ed539ce0f55e5a92d71496352d6 Mon Sep 17 00:00:00 2001 From: i2_yosuke Date: Thu, 29 Aug 2024 22:53:27 +0900 Subject: [PATCH 46/51] =?UTF-8?q?[feat]=20layout=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=8D=E3=83=B3=E3=83=88=E3=81=A7handleRea?= =?UTF-8?q?chIconClick=E3=81=A8api=E3=82=92=E7=B9=8B=E3=81=8E=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/Layout/Layout.tsx | 40 +++++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/view-user/src/components/Layout/Layout.tsx b/view-user/src/components/Layout/Layout.tsx index 9c47c724..7aee3ece 100644 --- a/view-user/src/components/Layout/Layout.tsx +++ b/view-user/src/components/Layout/Layout.tsx @@ -1,3 +1,13 @@ +import { useLazyQuery, useMutation } from "@apollo/client"; +import { + CreateOneReachRecordDocument, + GetOneLatestReachLogDocument, +} from "@/type/graphql"; +import type { + CreateOneReachRecordMutationVariables, + CreateOneReachRecordMutation, + GetOneLatestReachLogQuery, +} from "@/type/graphql"; import { useState, useEffect, useRef, useLayoutEffect } from "react"; import { useRouter } from "next/router"; import styles from "./Layout.module.css"; @@ -50,6 +60,14 @@ const Layout = (props: LayoutProps) => { const navRef = useRef(null); const position: string = isReachIconVisible ? "29%" : "50%"; + const [getLatestReachLog, { data: latestReachLogData }] = + useLazyQuery(GetOneLatestReachLogDocument); + + const [createOneReachRecord] = useMutation< + CreateOneReachRecordMutation, + CreateOneReachRecordMutationVariables + >(CreateOneReachRecordDocument); + // navBarの高さをstring型で渡す useLayoutEffect(() => { if (navRef.current) { @@ -66,12 +84,24 @@ const Layout = (props: LayoutProps) => { } }, []); - const handleReachIconClick = () => { - // todo リーチカウントAPIと繋ぎ込み + const handleReachIconClick = async () => { + try { + const { data } = await getLatestReachLog(); + const latestReachLogNumber = data?.reachLogs[0]?.reachNum || 0; + console.log(latestReachLogNumber); + await createOneReachRecord({ + variables: { + status: true, + reachNum: latestReachLogNumber + 1, + }, + }); - setReachIconVisible(false); - localStorage.setItem("isReachIconVisible", "false"); - setIsReachModalOpen(!isReachModalOpen); + setReachIconVisible(false); + localStorage.setItem("isReachIconVisible", "false"); + setIsReachModalOpen(!isReachModalOpen); + } catch (error) { + console.error("Failed to record reach:", error); + } }; const toggleSortOrder = () => { From 90d0dcb285175ed5917fc054834a61c375f6c347 Mon Sep 17 00:00:00 2001 From: i2_yosuke Date: Thu, 29 Aug 2024 23:23:40 +0900 Subject: [PATCH 47/51] =?UTF-8?q?[fix]=20handleReachIconClick=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E5=86=85=E3=81=AEconsole.log()=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-user/src/components/Layout/Layout.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/view-user/src/components/Layout/Layout.tsx b/view-user/src/components/Layout/Layout.tsx index 7aee3ece..ec2067de 100644 --- a/view-user/src/components/Layout/Layout.tsx +++ b/view-user/src/components/Layout/Layout.tsx @@ -88,7 +88,6 @@ const Layout = (props: LayoutProps) => { try { const { data } = await getLatestReachLog(); const latestReachLogNumber = data?.reachLogs[0]?.reachNum || 0; - console.log(latestReachLogNumber); await createOneReachRecord({ variables: { status: true, From 495150a39209621562cfcc3573c2ed72f480a949 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 29 Aug 2024 23:39:48 +0900 Subject: [PATCH 48/51] chore: Update environment file paths for production deployment --- docker-compose.prod.yml | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index e4ba9d27..fcfb1367 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -5,24 +5,6 @@ services: container_name: "cloudflare" volumes: ["./cloudflare/prod:/home/nonroot/.cloudflared"] command: tunnel run - - db: - image: postgres:12 - container_name: "bingo_db" - volumes: - - db-data:/var/lib/postgresql/data - environment: - POSTGRES_DB: bingo_db - POSTGRES_USER: bingo - POSTGRES_PASSWORD: password - POSTGRES_HOST_AUTH_METHOD: trust - healthcheck: - test: - - "CMD-SHELL" - - "pg_isready" - interval: 10s - timeout: 5s - retries: 5 api: # hasura build: @@ -43,7 +25,7 @@ services: ports: - "3000:3000" env_file: - - ./settings/bingo.env + - ./settings/bingo-prod.env stdin_open: true tty: true @@ -57,9 +39,6 @@ services: ports: - "3001:3000" env_file: - - ./settings/admin.env + - ./settings/admin-prod.env stdin_open: true tty: true - -volumes: - db-data: From c9b94b5be0678e1e225c42e9e77dd2d7add16e07 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 29 Aug 2024 23:49:04 +0900 Subject: [PATCH 49/51] chore: Update environment file paths for production deployment --- docker-compose.prod.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index fcfb1367..4b39ac6a 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -5,7 +5,6 @@ services: container_name: "cloudflare" volumes: ["./cloudflare/prod:/home/nonroot/.cloudflared"] command: tunnel run - api: # hasura build: context: . From 52a28d9950627fea92226d72c8ad0a8a3a0160b1 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 29 Aug 2024 23:50:40 +0900 Subject: [PATCH 50/51] chore: Update npm start command for production deployment --- docker-compose.prod.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 4b39ac6a..0f0627a7 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -5,6 +5,7 @@ services: container_name: "cloudflare" volumes: ["./cloudflare/prod:/home/nonroot/.cloudflared"] command: tunnel run + api: # hasura build: context: . @@ -20,7 +21,7 @@ services: volumes: - ./view-user:/app working_dir: /app - command: sh -c "npm install && npm run build && npm run start" + command: sh -c "npm run start" ports: - "3000:3000" env_file: @@ -34,7 +35,7 @@ services: volumes: - ./view-admin:/app working_dir: /app - command: sh -c "npm install && npm run build && npm run start" + command: sh -c "npm run start" ports: - "3001:3000" env_file: From ca95de71b1d6f4a22ad447ed34aab9243c477ccc Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Fri, 30 Aug 2024 12:40:26 +0000 Subject: [PATCH 51/51] =?UTF-8?q?minio=E5=86=8D=E5=B0=8E=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-admin/package-lock.json | 91 +++++++++++----------------------- view-admin/package.json | 1 + view-user/package-lock.json | 94 +++++++++++------------------------- view-user/package.json | 1 + 4 files changed, 57 insertions(+), 130 deletions(-) diff --git a/view-admin/package-lock.json b/view-admin/package-lock.json index c96e308d..554b3676 100644 --- a/view-admin/package-lock.json +++ b/view-admin/package-lock.json @@ -21,6 +21,7 @@ "formidable": "^3.5.1", "fs": "^0.0.1-security", "graphql": "^16.7.1", + "minio": "^7.1.1", "next": "^14.2.3", "next-auth": "^4.22.3", "react": "^18.3.1", @@ -3089,7 +3090,6 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "dev": true, "optional": true }, "node_modules/acorn": { @@ -3387,8 +3387,7 @@ "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" }, "node_modules/auto-bind": { "version": "4.0.0", @@ -3516,7 +3515,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", - "dev": true, "dependencies": { "readable-stream": "^3.4.0" } @@ -3544,8 +3542,7 @@ "node_modules/browser-or-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", - "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", - "dev": true + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" }, "node_modules/browserslist": { "version": "4.23.3", @@ -3613,12 +3610,11 @@ } }, "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "dev": true, + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { - "node": ">=8.0.0" + "node": "*" } }, "node_modules/busboy": { @@ -4094,7 +4090,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, "engines": { "node": ">=0.10" } @@ -4960,12 +4955,6 @@ "node": ">=0.10.0" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -5067,7 +5056,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "dev": true, "funding": [ { "type": "github", @@ -5178,7 +5166,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5886,7 +5873,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "dev": true, "engines": { "node": ">= 10" } @@ -6443,6 +6429,11 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, + "node_modules/json-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-stream/-/json-stream-1.0.0.tgz", + "integrity": "sha512-H/ZGY0nIAg3QcOwE1QN/rK/Fa7gJn7Ii5obwp6zyPO4xiPNwpIMjqy2gwjBEGqzkF/vSWEIBQCBuN19hYiL6Qg==" + }, "node_modules/json-to-pretty-yaml": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", @@ -6585,8 +6576,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -6738,7 +6728,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -6747,7 +6736,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -6784,24 +6772,23 @@ } }, "node_modules/minio": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/minio/-/minio-8.0.1.tgz", - "integrity": "sha512-FzDO6yGnqLtm8sp3mXafWtiRUOslJSSg/aI0v9YbN5vjw5KLoODKAROCyi766NIvTSxcfHBrbhCSGk1A+MOzDg==", - "dev": true, + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minio/-/minio-7.1.1.tgz", + "integrity": "sha512-HBLRFXs1CkNwAkahU+j1ilB9YS/Tmkdc6orpxVW1YN11NlEJyLjarIpBYu/inF+dj+tJIsA8PSKNnRmUNm+9qQ==", "dependencies": { "async": "^3.2.4", "block-stream2": "^2.1.0", "browser-or-node": "^2.1.1", - "buffer-crc32": "^1.0.0", - "eventemitter3": "^5.0.1", + "buffer-crc32": "^0.2.13", "fast-xml-parser": "^4.2.2", "ipaddr.js": "^2.0.1", + "json-stream": "^1.0.0", "lodash": "^4.17.21", "mime-types": "^2.1.35", "query-string": "^7.1.3", - "stream-json": "^1.8.0", "through2": "^4.0.2", "web-encoding": "^1.1.5", + "xml": "^1.0.1", "xml2js": "^0.5.0" }, "engines": { @@ -7624,7 +7611,6 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", - "dev": true, "dependencies": { "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", @@ -7712,7 +7698,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -7973,7 +7958,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -8014,8 +7998,7 @@ "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "dev": true + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "node_modules/scheduler": { "version": "0.23.2", @@ -8193,7 +8176,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "dev": true, "engines": { "node": ">=6" } @@ -8218,21 +8200,6 @@ "node": ">= 0.4" } }, - "node_modules/stream-chain": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", - "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", - "dev": true - }, - "node_modules/stream-json": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz", - "integrity": "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==", - "dev": true, - "dependencies": { - "stream-chain": "^2.2.5" - } - }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -8245,7 +8212,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "dev": true, "engines": { "node": ">=4" } @@ -8254,7 +8220,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -8436,8 +8401,7 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, "node_modules/styled-jsx": { "version": "5.1.1", @@ -8539,7 +8503,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, "dependencies": { "readable-stream": "3" } @@ -8882,7 +8845,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -8894,8 +8856,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { "version": "8.3.2", @@ -8927,7 +8888,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", - "dev": true, "dependencies": { "util": "^0.12.3" }, @@ -9133,11 +9093,15 @@ } } }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" + }, "node_modules/xml2js": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dev": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -9150,7 +9114,6 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, "engines": { "node": ">=4.0" } diff --git a/view-admin/package.json b/view-admin/package.json index 1b99d94e..3dee648d 100755 --- a/view-admin/package.json +++ b/view-admin/package.json @@ -24,6 +24,7 @@ "formidable": "^3.5.1", "fs": "^0.0.1-security", "graphql": "^16.7.1", + "minio": "^7.1.1", "next": "^14.2.3", "next-auth": "^4.22.3", "react": "^18.3.1", diff --git a/view-user/package-lock.json b/view-user/package-lock.json index 8efe66d6..431dde80 100755 --- a/view-user/package-lock.json +++ b/view-user/package-lock.json @@ -22,6 +22,7 @@ "fs": "^0.0.1-security", "graphql": "^16.7.1", "matter-js": "^0.19.0", + "minio": "^7.1.1", "next": "^14.2.3", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -3161,7 +3162,6 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "dev": true, "optional": true }, "node_modules/acorn": { @@ -3482,8 +3482,7 @@ "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/auto-bind": { "version": "4.0.0", @@ -3618,7 +3617,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", - "dev": true, "dependencies": { "readable-stream": "^3.4.0" } @@ -3646,8 +3644,7 @@ "node_modules/browser-or-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", - "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", - "dev": true + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" }, "node_modules/browserslist": { "version": "4.23.3", @@ -3715,12 +3712,11 @@ } }, "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "dev": true, + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { - "node": ">=8.0.0" + "node": "*" } }, "node_modules/busboy": { @@ -4228,7 +4224,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, "engines": { "node": ">=0.10" } @@ -5169,7 +5164,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "dev": true, "funding": [ { "type": "github", @@ -5280,7 +5274,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6044,7 +6037,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "dev": true, "engines": { "node": ">= 10" } @@ -6066,7 +6058,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -6601,6 +6592,11 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, + "node_modules/json-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-stream/-/json-stream-1.0.0.tgz", + "integrity": "sha512-H/ZGY0nIAg3QcOwE1QN/rK/Fa7gJn7Ii5obwp6zyPO4xiPNwpIMjqy2gwjBEGqzkF/vSWEIBQCBuN19hYiL6Qg==" + }, "node_modules/json-to-pretty-yaml": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", @@ -6749,8 +6745,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -6942,7 +6937,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -6951,7 +6945,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -6988,36 +6981,29 @@ } }, "node_modules/minio": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/minio/-/minio-8.0.1.tgz", - "integrity": "sha512-FzDO6yGnqLtm8sp3mXafWtiRUOslJSSg/aI0v9YbN5vjw5KLoODKAROCyi766NIvTSxcfHBrbhCSGk1A+MOzDg==", - "dev": true, + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minio/-/minio-7.1.1.tgz", + "integrity": "sha512-HBLRFXs1CkNwAkahU+j1ilB9YS/Tmkdc6orpxVW1YN11NlEJyLjarIpBYu/inF+dj+tJIsA8PSKNnRmUNm+9qQ==", "dependencies": { "async": "^3.2.4", "block-stream2": "^2.1.0", "browser-or-node": "^2.1.1", - "buffer-crc32": "^1.0.0", - "eventemitter3": "^5.0.1", + "buffer-crc32": "^0.2.13", "fast-xml-parser": "^4.2.2", "ipaddr.js": "^2.0.1", + "json-stream": "^1.0.0", "lodash": "^4.17.21", "mime-types": "^2.1.35", "query-string": "^7.1.3", - "stream-json": "^1.8.0", "through2": "^4.0.2", "web-encoding": "^1.1.5", + "xml": "^1.0.1", "xml2js": "^0.5.0" }, "engines": { "node": "^16 || ^18 || >=20" } }, - "node_modules/minio/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -7716,7 +7702,6 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", - "dev": true, "dependencies": { "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", @@ -7789,7 +7774,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8056,7 +8040,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -8097,8 +8080,7 @@ "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "dev": true + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "node_modules/scheduler": { "version": "0.23.2", @@ -8284,7 +8266,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "dev": true, "engines": { "node": ">=6" } @@ -8298,21 +8279,6 @@ "tslib": "^2.0.3" } }, - "node_modules/stream-chain": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", - "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", - "dev": true - }, - "node_modules/stream-json": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz", - "integrity": "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==", - "dev": true, - "dependencies": { - "stream-chain": "^2.2.5" - } - }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -8325,7 +8291,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "dev": true, "engines": { "node": ">=4" } @@ -8334,7 +8299,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -8521,8 +8485,7 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, "node_modules/styled-jsx": { "version": "5.1.1", @@ -8651,7 +8614,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, "dependencies": { "readable-stream": "3" } @@ -8982,7 +8944,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -8994,8 +8955,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/value-or-promise": { "version": "1.0.12", @@ -9019,7 +8979,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", - "dev": true, "dependencies": { "util": "^0.12.3" }, @@ -9264,7 +9223,7 @@ "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "optional": true, + "devOptional": true, "peer": true, "engines": { "node": ">=8.3.0" @@ -9282,11 +9241,15 @@ } } }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" + }, "node_modules/xml2js": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dev": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -9299,7 +9262,6 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, "engines": { "node": ">=4.0" } diff --git a/view-user/package.json b/view-user/package.json index cbade997..b53577ad 100755 --- a/view-user/package.json +++ b/view-user/package.json @@ -25,6 +25,7 @@ "fs": "^0.0.1-security", "graphql": "^16.7.1", "matter-js": "^0.19.0", + "minio": "^7.1.1", "next": "^14.2.3", "react": "^18.3.1", "react-dom": "^18.3.1",