Skip to content

Commit 7edca8d

Browse files
committed
chore: release v0.1.5
1 parent dfa9227 commit 7edca8d

4 files changed

Lines changed: 44 additions & 4 deletions

File tree

DOCUMENTATION.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,33 @@ interface RequestProps {
178178
headers?: any; // Request headers
179179
json?: boolean; // JSON mode (default: true)
180180
cacheControl?: boolean; // Cache control (default: true)
181+
successKey?: string; // Key to extract data from response
181182
}
182183
```
183184

185+
#### Global Configuration
186+
187+
You can configure global defaults for the `request` function.
188+
189+
```typescript
190+
import { request } from '@app-studio/react-request';
191+
192+
// Set global success key
193+
request.setConfig({
194+
successKey: 'data'
195+
});
196+
197+
// Usage
198+
// Will automatically extract response.data if successKey is set globally
199+
const data = await request({ url: '/api/users' });
200+
201+
// Override per request
202+
const users = await request({
203+
url: '/api/users',
204+
successKey: 'users' // Overrides global config
205+
});
206+
```
207+
184208
### RequestProvider
185209

186210
Context provider for global configuration.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.1.4",
2+
"version": "0.1.5",
33
"name": "@app-studio/react-request",
44
"author": "Steedmonteiro <steed@rize.network>",
55
"description": "Request Hooks to fetch data in React",

src/react-request/utils/request.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ interface RequestProps {
5959
headers?: any;
6060
json?: boolean;
6161
cacheControl?: boolean;
62+
successKey?: string;
6263
}
6364

6465
export const request = ({
@@ -68,6 +69,7 @@ export const request = ({
6869
headers = {},
6970
json = true,
7071
cacheControl = true,
72+
successKey,
7173
}: RequestProps) => {
7274
let body;
7375

@@ -103,5 +105,19 @@ export const request = ({
103105
method,
104106
headers,
105107
body,
106-
}).then((response) => checkStatus(response, url));
108+
})
109+
.then((response) => checkStatus(response, url))
110+
.then((response) => {
111+
const effectiveSuccessKey = successKey || request.config.successKey;
112+
const finalData =
113+
effectiveSuccessKey && response && typeof response === 'object'
114+
? response[effectiveSuccessKey]
115+
: response;
116+
return finalData;
117+
});
118+
};
119+
120+
request.config = { successKey: undefined as string | undefined };
121+
request.setConfig = (config: { successKey?: string }) => {
122+
Object.assign(request.config, config);
107123
};

0 commit comments

Comments
 (0)