diff options
author | Pawel Zelawski <pawel.zelawski@outlook.com> | 2025-04-10 10:55:22 +0200 |
---|---|---|
committer | Pawel Zelawski <pawel.zelawski@outlook.com> | 2025-04-10 10:55:22 +0200 |
commit | c852aa92f84d0c18b1bd7361163498a542461d45 (patch) | |
tree | feb1b34c35c4e7a2d35c70dba35b3367c7f638b0 /src/client/main.tsx | |
parent | 326caf949ec8622c04b0e3352c5eac5370f161e4 (diff) |
feat(client): implement react frontend application
- Created main entry point `src/client/main.tsx`.
- Created main `App` component `src/client/App.tsx`.
- Implemented state management (`initial`, `waiting`, `success`, `failed`) using `useState`.
- Implemented `handleStart` to call backend `/api/digiid/start` and transition to `waiting` state.
- Implemented `useEffect` hook for polling backend `/api/digiid/status/:sessionId` in `waiting` state.
- Updates UI state based on polling response (`success`/`failed`).
- Handles polling errors and cleanup.
- Implemented `handleReset` to return to `initial` state.
- Implemented views for each state:
- `initial`: Welcome message, Start button.
- `waiting`: QR code display, status message, Cancel button.
- `success`: Success message, verified address, address type, Start Over button.
- `failed`: Failure message, error details, Try Again button.
- Added client-side address type helper `getDigiByteAddressType` in `src/client/utils.ts`.
- Added basic CSS styling in `src/client/index.css` with light/dark mode support.
- Added frontend-related scripts (`dev:frontend`, `dev`, `build`, `lint`, `preview`) to `package.json`.
- Fixed linter type issue with `setInterval` return value.
Diffstat (limited to 'src/client/main.tsx')
-rw-r--r-- | src/client/main.tsx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/client/main.tsx b/src/client/main.tsx new file mode 100644 index 0000000..b895c80 --- /dev/null +++ b/src/client/main.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; +import './index.css'; // We'll create this file later for styles + +ReactDOM.createRoot(document.getElementById('root')!).render( + <React.StrictMode> + <App /> + </React.StrictMode> +);
\ No newline at end of file |