Skip to content

✨ feat(orders): make OrderContainer standalone with core and hooks support #762

@Randagio13

Description

@Randagio13

🎯 Goal

Refactor OrderContainer to be a standalone component, following the same pattern already adopted for other containers (e.g. SkusContainer β†’ <Sku>, PricesContainer, etc.).

πŸ” Context

Currently OrderContainer contains heavy business logic directly inside the component (reducer, side effects, API calls). Other containers have been refactored to delegate logic to dedicated packages:

  • packages/core β†’ pure TS utilities (no React deps)
  • packages/hooks β†’ React hooks consuming core functions
  • packages/react-components β†’ thin component wrappers around hooks

OrderContainer still relies on orderReducer, getApiOrder, createOrder, addToCart etc. defined in #reducers/OrderReducer β€” all living inside the component layer.

βœ… Tasks

  • Move order business logic (fetch, create, update, addToCart, etc.) to packages/core/src/orders/
  • Create a useOrder hook in packages/hooks/src/orders/ consuming core functions
  • Export from packages/hooks index
  • Refactor OrderContainer to use the new useOrder hook (slim component, just context provider)
  • Add unit tests for core functions
  • Add tests for useOrder hook
  • Update/deprecate docs if needed

οΏ½οΏ½ Pattern Reference

packages/core/src/skus/        ← pure TS: batch store, utils
packages/hooks/src/skus/       ← useSkus hook
packages/react-components/     ← SkusContainer (thin wrapper)

Same structure should be applied to orders.

πŸ’‘ Notes

  • Keep backward compatibility on OrderContainer props API
  • OrderStorageContext interaction must be preserved
  • OrderReducer complex include/loaded logic should be carefully migrated

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions