Skip to content

Commit 835c768

Browse files
author
Dmitry Degtyarev
committed
chore: remove axios-observable, rxjs, update utils
1 parent 489d513 commit 835c768

File tree

5 files changed

+21
-75
lines changed

5 files changed

+21
-75
lines changed

README.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,6 @@ Wrapper utilities for CRUD operations in REST APIs entities using [RTK Query](ht
1010
npm i @ronas-it/rtkq-entity-api
1111
```
1212

13-
If your app uses `axios-observable`, install it along with `rxjs`:
14-
15-
```sh
16-
npm i axios-observable rxjs
17-
```
18-
19-
Note that support of `axios-observable` will be removed in upcoming major release.
20-
2113
2. Create base query with your API configuration, for example [using Axios](https://redux-toolkit.js.org/rtk-query/usage/customizing-queries#axios-basequery):
2214

2315
```ts

package-lock.json

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

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,12 @@
4747
"type-fest": "^3.13.1"
4848
},
4949
"peerDependencies": {
50-
"@react-native-community/netinfo": "^11.4.0",
51-
"axios-observable": "^2.1.0",
52-
"rxjs": "^7.8.1"
50+
"@react-native-community/netinfo": "^11.4.0"
51+
},
52+
"peerDependenciesMeta": {
53+
"@react-native-community/netinfo": {
54+
"optional": true
55+
}
5356
},
5457
"devDependencies": {
5558
"@eslint/compat": "^1.2.4",

src/utils/create-axios-base-query.ts

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ import { BaseQueryApi, BaseQueryFn } from '@reduxjs/toolkit/dist/query/index.d';
33
import { MaybePromise } from '@reduxjs/toolkit/src/query/tsHelpers';
44
import { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, RawAxiosRequestHeaders } from 'axios';
55
import { merge } from 'lodash';
6-
// TODO: Drop support for axios-observable in next major version
7-
import type { Axios as AxiosObservableInstance } from 'axios-observable';
8-
import type { lastValueFrom as lastValueFromType } from 'rxjs';
96

107
export type BaseQueryFunction = BaseQueryFn<
118
AxiosRequestConfig,
@@ -16,14 +13,11 @@ export type BaseQueryFunction = BaseQueryFn<
1613
>;
1714

1815
export type AxiosBaseQueryArgs = {
19-
getHttpClient: (api: BaseQueryApi & { extra?: any }) => AxiosObservableInstance | AxiosInstance;
16+
getHttpClient: (api: BaseQueryApi & { extra?: any }) => AxiosInstance;
2017
prepareHeaders?: (api: BaseQueryApi & { extra?: any }) => MaybePromise<RawAxiosRequestHeaders>;
2118
};
2219

2320
export const createAxiosBaseQuery = ({ getHttpClient, prepareHeaders }: AxiosBaseQueryArgs): BaseQueryFunction => {
24-
const isDevEnvironment = (typeof __DEV__ !== 'undefined' && __DEV__) || process?.env?.NODE_ENV === 'development';
25-
let isDeprecationWarningShown = false;
26-
2721
return async (requestConfig, api: BaseQueryApi) => {
2822
const extraHeaders: RawAxiosRequestHeaders = prepareHeaders
2923
? await prepareHeaders(api as BaseQueryApi & { extra?: any })
@@ -33,20 +27,7 @@ export const createAxiosBaseQuery = ({ getHttpClient, prepareHeaders }: AxiosBas
3327
const httpClient = getHttpClient(api as BaseQueryApi & { extra?: any });
3428

3529
try {
36-
const AxiosObservable = require('axios-observable').Axios as typeof AxiosObservableInstance;
37-
const usesAxiosObservable = httpClient instanceof AxiosObservable;
38-
const lastValueFrom = require('rxjs').lastValueFrom as typeof lastValueFromType;
39-
40-
if (!isDeprecationWarningShown && usesAxiosObservable && isDevEnvironment) {
41-
isDeprecationWarningShown = true;
42-
console.warn(
43-
'Support of Axios Observable is deprecated and will be removed in the next major version. Please use Axios instead.',
44-
);
45-
}
46-
47-
const response = usesAxiosObservable
48-
? await lastValueFrom(httpClient.request(requestConfig))
49-
: await httpClient.request(requestConfig);
30+
const response = await httpClient.request(requestConfig);
5031

5132
return {
5233
data: response.data,

src/utils/setup-refetch-listeners.ts

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,18 @@ export function setupRefetchListeners(
99
refetchOnReconnect: true,
1010
refetchOnFocus: true,
1111
},
12+
netInfoRef: {
13+
state: NetInfoState;
14+
fetch: typeof fetch;
15+
addEventListener: typeof addEventListener;
16+
},
17+
reactNativeRef: {
18+
AppState: RNAppState;
19+
Platform: RNPlatform;
20+
},
1221
): () => void {
1322
return setupListeners(storeDispatch, (dispatch, actions) => {
14-
let ReactNative: { AppState: RNAppState; Platform: RNPlatform };
15-
16-
let NetInfo: {
17-
addEventListener: typeof addEventListener;
18-
fetch: typeof fetch;
19-
};
20-
21-
try {
22-
NetInfo = require('@react-native-community/netinfo');
23-
ReactNative = require('react-native');
24-
} catch (error) {
25-
throw new Error(
26-
'To use \'refetchOnReconnect\' and \'refetchOnFocus\' you must setup @react-native-community/netinfo and react-native package.',
27-
);
28-
}
29-
30-
const { AppState, Platform } = ReactNative;
23+
const { AppState, Platform } = reactNativeRef;
3124

3225
if (!Platform?.OS || Platform.OS === 'web') {
3326
throw new Error(
@@ -39,7 +32,7 @@ export function setupRefetchListeners(
3932

4033
if (options.refetchOnFocus) {
4134
const { remove: appStateUnsubscribe } = AppState.addEventListener('change', async (state) => {
42-
const { isConnected, isInternetReachable } = await NetInfo.fetch();
35+
const { isConnected, isInternetReachable } = await netInfoRef.fetch();
4336
const hasConnection = isConnected && isInternetReachable;
4437

4538
if (hasConnection) {
@@ -51,7 +44,7 @@ export function setupRefetchListeners(
5144
}
5245

5346
if (options.refetchOnReconnect) {
54-
const netInfoUnsubscribe = NetInfo.addEventListener(({ isConnected, isInternetReachable }: NetInfoState) => {
47+
const netInfoUnsubscribe = netInfoRef.addEventListener(({ isConnected, isInternetReachable }: NetInfoState) => {
5548
const hasConnection = !!(isConnected && isInternetReachable);
5649

5750
dispatch(hasConnection ? actions.onOnline() : actions.onOffline());

0 commit comments

Comments
 (0)