From be0f537dc4fe384eef09436833c6407e6482c16d Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 9 Nov 2023 15:40:16 +0700 Subject: Initial commit --- src/common/components/Authenticated/index.tsx | 14 +++++++ src/common/components/Scanner/index.tsx | 39 ++++++++++++++++++ src/common/components/Scanner/scanner.module.css | 16 ++++++++ src/common/components/ScreenContainer/index.tsx | 15 +++++++ .../ScreenContainer/screen-container.module.css | 3 ++ src/common/constants/team.ts | 13 ++++++ src/common/contexts/QueryProvider.tsx | 20 +++++++++ src/common/contexts/UIProvider.tsx | 17 ++++++++ src/common/libs/authenticate.ts | 22 ++++++++++ src/common/libs/clsxm.ts | 6 +++ src/common/libs/toast.tsx | 23 +++++++++++ src/common/stores/useAuthStore.ts | 15 +++++++ src/common/stores/useLoginStore.ts | 26 ++++++++++++ src/common/stores/useResultStore.ts | 26 ++++++++++++ src/common/stores/useStockOpnameStore.ts | 48 ++++++++++++++++++++++ src/common/styles/fonts.ts | 8 ++++ src/common/styles/globals.css | 24 +++++++++++ src/common/types/auth.ts | 6 +++ src/common/types/select.ts | 4 ++ src/common/types/stockOpname.ts | 33 +++++++++++++++ src/common/types/team.ts | 7 ++++ 21 files changed, 385 insertions(+) create mode 100644 src/common/components/Authenticated/index.tsx create mode 100644 src/common/components/Scanner/index.tsx create mode 100644 src/common/components/Scanner/scanner.module.css create mode 100644 src/common/components/ScreenContainer/index.tsx create mode 100644 src/common/components/ScreenContainer/screen-container.module.css create mode 100644 src/common/constants/team.ts create mode 100644 src/common/contexts/QueryProvider.tsx create mode 100644 src/common/contexts/UIProvider.tsx create mode 100644 src/common/libs/authenticate.ts create mode 100644 src/common/libs/clsxm.ts create mode 100644 src/common/libs/toast.tsx create mode 100644 src/common/stores/useAuthStore.ts create mode 100644 src/common/stores/useLoginStore.ts create mode 100644 src/common/stores/useResultStore.ts create mode 100644 src/common/stores/useStockOpnameStore.ts create mode 100644 src/common/styles/fonts.ts create mode 100644 src/common/styles/globals.css create mode 100644 src/common/types/auth.ts create mode 100644 src/common/types/select.ts create mode 100644 src/common/types/stockOpname.ts create mode 100644 src/common/types/team.ts (limited to 'src/common') diff --git a/src/common/components/Authenticated/index.tsx b/src/common/components/Authenticated/index.tsx new file mode 100644 index 0000000..cf7086e --- /dev/null +++ b/src/common/components/Authenticated/index.tsx @@ -0,0 +1,14 @@ +import { cookies } from 'next/headers' +import { redirect } from 'next/navigation' +import React from 'react' + +const Authenticated = ({ children }: { children: React.ReactNode }) => { + const credentialStr = cookies().get('credential')?.value + const credential: Credential | null = credentialStr ? JSON.parse(credentialStr) : null + + if (!credential) redirect('/login') + + return children +} + +export default Authenticated \ No newline at end of file diff --git a/src/common/components/Scanner/index.tsx b/src/common/components/Scanner/index.tsx new file mode 100644 index 0000000..56d2495 --- /dev/null +++ b/src/common/components/Scanner/index.tsx @@ -0,0 +1,39 @@ +import { useZxing } from "react-zxing"; +import styles from "./scanner.module.css" + +type Props = { + paused: boolean, + onScan: (string: string) => void +} + +const Scanner = (props: Props) => { + const { ref } = useZxing({ + constraints: { + video: { + facingMode: 'environment', + width: { ideal: 1280 }, + height: { ideal: 720 }, + frameRate: { ideal: 30, max: 60 } + } + }, + timeBetweenDecodingAttempts: 100, + paused: props.paused, + onDecodeResult(result) { + props.onScan(result.getText()); + }, + }) + + const restartCam = () => { + ref.current?.pause() + ref.current?.play() + } + + return ( +
+