1. 03 Jul, 2025 6 commits
  2. 02 Jul, 2025 3 commits
  3. 01 Jul, 2025 7 commits
  4. 29 Jun, 2025 1 commit
  5. 28 Jun, 2025 3 commits
  6. 27 Jun, 2025 17 commits
  7. 26 Jun, 2025 3 commits
    • 🐛 fix(redemptions-table): correct initial page index and pagination state · 0cad369f
      Summary:
      The redemption list occasionally displayed an invalid range such as “Items -9 - 0” and failed to highlight page 1 after a refresh. This was caused by the table being initialized with `currentPage = 0`.
      
      Changes:
      • update `useEffect` to load data starting from page 1 instead of page 0
      • refactor `loadRedemptions` to accept `page` (default 1) and sanitize backend‐returned pages (`<= 0` coerced to 1)
      • keep other logic unchanged
      
      Impact:
      Pagination text and page selection now show correct values on first load or refresh, eliminating negative ranges and ensuring the first page is properly highlighted.
      t0ng7u committed
    • 🐛 fix(redemptions-table): show loading indicator while refetching data · 256b9a9f
      Previously, the table did not enter the loading state after performing actions such as deleting, enabling, or disabling a redemption code. This caused a brief period where the UI appeared unresponsive while awaiting the backend response.
      
      Changes made:
      • Added `setLoading(true)` at the beginning of `loadRedemptions` to activate the loading spinner whenever data is (re)fetched.
      • Added an explanatory code comment to clarify the intent.
      
      This improves user experience by clearly indicating that the system is processing and prevents confusion during data refresh operations.
      t0ng7u committed
    • 🎁 refactor(ui/redemption): migrate EditRedemption page to Semi Form & enhance UX · f2dd64a3
      SUMMARY
      • Re-implemented `web/src/pages/Redemption/EditRedemption.js` with Semi Form components, removing legacy local-state handling.
      • Added `formApiRef` for centralized control; external “Submit” button now triggers `formApi.submitForm()`.
      • Replaced `Input/AutoComplete/DatePicker` etc. with `<Form.*>` fields, leveraging built-in validation & accessibility.
      • Field validations:
        – `name` (create only), `quota`, `count` → required with localized messages.
      • Expiration-time flow:
        – Default value `null` (no more 1970-01-01).
        – When loading data, convert 0 → null, timestamp → Date.
        – On submit, Date → unix seconds; empty → 0.
      • Responsive grid layout (`Row/Col`) for tidy alignment.
      • Added helpful `showClear` & full-width styling for inputs; quota presets retained.
      • Cleaned unused imports & handlers; fixed linter issues.
      
      RESULT
      The Redemption form now benefits from higher performance, clearer validation, and a cleaner codebase consistent with Semi Design best practices.
      t0ng7u committed