-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
The current useItem hook requires users to pass the full URL of an item, which is redundant and inconsistent with other hooks in the library:
// Current API
const { item } = useItem('https://stac-catalog.com/collections/sentinel-2/items/abc123');This design has several issues:
- Redundancy: The
StacApiProvideralready knows the base API URL, yet users must construct the full URL themselves - Error-prone: Manual URL construction can lead to mistakes (typos, wrong separators, encoding issues)
- Not portable: Hardcoded URLs make switching between environments (dev/staging/prod) difficult
- Inconsistent API:
useCollectiontakes just acollectionId, butuseItemrequires a full URL
Proposed Solution
Refactor useItem to accept collectionId and itemId parameters, then construct the URL internally using the stacApi from context:
// Proposed API
const { item } = useItem('sentinel-2', 'abc123');
// Or with an object for clarity:
const { item } = useItem({ collectionId: 'sentinel-2', itemId: 'abc123' });This follows the STAC API spec pattern: /collections/{collectionId}/items/{itemId}
Benefits
- Consistency: Matches the pattern used by
useCollection - Simplicity: No manual URL construction required
- Portability: Environment-agnostic (base URL comes from context)
- Type safety: Parameters are clearly defined
- Less error-prone: Reduces chance of URL construction mistakes
Implementation Details
The hook would:
- Accept
collectionIdanditemIdas parameters - Get
stacApifromuseStacApiContext() - Construct the URL using
stacApi.baseUrl+/collections/${collectionId}/items/${itemId} - Use this constructed URL for the query
Breaking Change
The hook could detect which signature is being used based on the number/type of arguments.
Related
- Consider whether other hooks might benefit from similar improvements
- Update documentation and examples
- Add migration guide if this is a breaking change
Metadata
Metadata
Assignees
Labels
No labels