diff --git a/react-example/src/components/EmbeddedForm.tsx b/react-example/src/components/EmbeddedForm.tsx index 2cbd1ee6..d1a8e3f5 100644 --- a/react-example/src/components/EmbeddedForm.tsx +++ b/react-example/src/components/EmbeddedForm.tsx @@ -1,21 +1,24 @@ -import { FC, FormEvent, useState } from 'react'; +/* eslint-disable no-console */ import { IterableEmbeddedManager, IterableEmbeddedMessageUpdateHandler, - trackEmbeddedSession, - trackEmbeddedReceived, + IterableResponse, trackEmbeddedClick, - trackEmbeddedDismiss + trackEmbeddedDismiss, + trackEmbeddedReceived, + trackEmbeddedSession } from '@iterable/web-sdk'; +import { AxiosError, AxiosResponse, isAxiosError } from 'axios'; +import { FC, FormEvent, useState } from 'react'; import { v4 as uuidv4 } from 'uuid'; -import { TextField } from './TextField'; import { - StyledButton, EndpointWrapper, Form, Heading, - Response + Response, + StyledButton } from '../views/Components.styled'; +import { TextField } from './TextField'; interface Props { endpointName: string; @@ -63,8 +66,10 @@ export const EmbeddedForm: FC = ({ await embeddedManager.syncMessages('my-website', () => console.log('Synced message') ); - } catch (error: any) { - setTrackResponse(JSON.stringify(error?.response?.data)); + } catch (error: unknown) { + setTrackResponse( + JSON.stringify(isAxiosError(error) ? error.response?.data : error) + ); } }; @@ -80,11 +85,11 @@ export const EmbeddedForm: FC = ({ }; trackEmbeddedReceived(receivedMessage.messageId, 'my-website') - .then((response: any) => { + .then((response: AxiosResponse) => { setTrackResponse(JSON.stringify(response.data)); setTrackingEvent(false); }) - .catch((error: any) => { + .catch((error: AxiosError) => { setTrackResponse(JSON.stringify(error.response.data)); setTrackingEvent(false); }); @@ -111,11 +116,11 @@ export const EmbeddedForm: FC = ({ targetUrl, appPackageName }) - .then((response: any) => { + .then((response: AxiosResponse) => { setTrackResponse(JSON.stringify(response.data)); setTrackingEvent(false); }) - .catch((error: any) => { + .catch((error: AxiosError) => { setTrackResponse(JSON.stringify(error.response.data)); setTrackingEvent(false); }); @@ -139,11 +144,11 @@ export const EmbeddedForm: FC = ({ }; trackEmbeddedDismiss(sessionData) - .then((response: any) => { + .then((response: AxiosResponse) => { setTrackResponse(JSON.stringify(response.data)); setTrackingEvent(false); }) - .catch((error: any) => { + .catch((error: AxiosError) => { setTrackResponse(JSON.stringify(error.response.data)); setTrackingEvent(false); }); @@ -177,11 +182,11 @@ export const EmbeddedForm: FC = ({ }; trackEmbeddedSession(sessionData) - .then((response: any) => { + .then((response: AxiosResponse) => { setTrackResponse(JSON.stringify(response.data)); setTrackingEvent(false); }) - .catch((error: any) => { + .catch((error: AxiosError) => { setTrackResponse(JSON.stringify(error.response.data)); setTrackingEvent(false); }); diff --git a/react-example/src/components/EventsForm.tsx b/react-example/src/components/EventsForm.tsx index 7bf6650f..f9eb7ec5 100644 --- a/react-example/src/components/EventsForm.tsx +++ b/react-example/src/components/EventsForm.tsx @@ -1,11 +1,17 @@ +import { + InAppEventRequestParams, + InAppTrackRequestParams, + IterablePromise, + IterableResponse +} from '@iterable/web-sdk'; +import { AxiosError, AxiosResponse } from 'axios'; import { ChangeEvent, FC, FormEvent, useState } from 'react'; -import { IterablePromise, IterableResponse } from '@iterable/web-sdk'; import { - StyledButton, EndpointWrapper, Form, Heading, - Response + Response, + StyledButton } from '../views/Components.styled'; import { TextField } from './TextField'; @@ -13,8 +19,10 @@ interface Props { endpointName: string; heading: string; needsEventName?: boolean; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - method: (...args: any) => IterablePromise; + method: ( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + args: InAppEventRequestParams | InAppTrackRequestParams + ) => IterablePromise; } export const EventsForm: FC = ({ @@ -44,11 +52,11 @@ export const EventsForm: FC = ({ appPackageName: 'my-website' } }) - .then((response: any) => { + .then((response: AxiosResponse) => { setTrackResponse(JSON.stringify(response.data)); setTrackingEvent(false); }) - .catch((e: any) => { + .catch((e: AxiosError) => { setTrackResponse(JSON.stringify(e.response.data)); setTrackingEvent(false); }); diff --git a/react-example/src/views/Commerce.tsx b/react-example/src/views/Commerce.tsx index f64c281c..8ed87b31 100644 --- a/react-example/src/views/Commerce.tsx +++ b/react-example/src/views/Commerce.tsx @@ -1,12 +1,13 @@ +import { IterableResponse, trackPurchase, updateCart } from '@iterable/web-sdk'; +import { AxiosError, AxiosResponse } from 'axios'; import { FC, FormEvent, useState } from 'react'; -import { updateCart, trackPurchase } from '@iterable/web-sdk'; import { TextField } from '../components/TextField'; import { - StyledButton, EndpointWrapper, Form, Heading, - Response + Response, + StyledButton } from './Components.styled'; interface Props {} @@ -31,11 +32,11 @@ export const Commerce: FC = () => { updateCart({ items: [{ name: cartItem, id: 'fdsafds', price: 100, quantity: 2 }] }) - .then((response: any) => { + .then((response: AxiosResponse) => { setUpdateCartResponse(JSON.stringify(response.data)); setUpdatingCart(false); }) - .catch((e: any) => { + .catch((e: AxiosError) => { setUpdateCartResponse(JSON.stringify(e.response.data)); setUpdatingCart(false); }); @@ -48,11 +49,11 @@ export const Commerce: FC = () => { items: [{ name: purchaseItem, id: 'fdsafds', price: 100, quantity: 2 }], total: 200 }) - .then((response: any) => { + .then((response: AxiosResponse) => { setTrackingPurchase(false); setTrackPurchaseResponse(JSON.stringify(response.data)); }) - .catch((e: any) => { + .catch((e: AxiosError) => { setTrackingPurchase(false); setTrackPurchaseResponse(JSON.stringify(e.response.data)); }); diff --git a/react-example/src/views/EmbeddedMsgs.tsx b/react-example/src/views/EmbeddedMsgs.tsx index 5ffa9049..867efefc 100644 --- a/react-example/src/views/EmbeddedMsgs.tsx +++ b/react-example/src/views/EmbeddedMsgs.tsx @@ -1,16 +1,17 @@ -import { FC, useState, useEffect } from 'react'; +/* eslint-disable no-console */ import { - IterableEmbeddedCard, - IterableEmbeddedNotification, + IterableAction, + IterableConfig, + IterableCustomActionHandler, IterableEmbeddedBanner, + IterableEmbeddedCard, IterableEmbeddedManager, IterableEmbeddedMessage, IterableEmbeddedMessageUpdateHandler, - IterableUrlHandler, - IterableCustomActionHandler, - IterableAction, - IterableConfig + IterableEmbeddedNotification, + IterableUrlHandler } from '@iterable/web-sdk'; +import { FC, useEffect, useState } from 'react'; import { Button } from '../components/Button'; import { useUser } from '../context/Users'; @@ -113,7 +114,7 @@ export const EmbeddedMsgs: FC = () => { await embeddedManager.syncMessages('my-website', () => { console.log('messages', JSON.stringify(embeddedManager.getMessages())); }); - } catch (error: any) { + } catch (error: unknown) { console.log('error', error); } }; @@ -236,7 +237,7 @@ export const EmbeddedMsgs: FC = () => { appPackageName, message, ...(useCustomStyles && { htmlElements: StyleOverrides }), - errorCallback: (error: any) => + errorCallback: (error: unknown) => console.log('handleError: ', error) }); return ( @@ -252,7 +253,7 @@ export const EmbeddedMsgs: FC = () => { appPackageName, message, ...(useCustomStyles && { htmlElements: StyleOverrides }), - errorCallback: (error: any) => + errorCallback: (error: unknown) => console.log('handleError: ', error) }); return ( @@ -268,7 +269,7 @@ export const EmbeddedMsgs: FC = () => { appPackageName, message, ...(useCustomStyles && { htmlElements: StyleOverrides }), - errorCallback: (error: any) => + errorCallback: (error: unknown) => console.log('handleError: ', error) }); return ( diff --git a/react-example/src/views/EmbeddedMsgsImpressionTracker.tsx b/react-example/src/views/EmbeddedMsgsImpressionTracker.tsx index d2a39c1a..3312d810 100644 --- a/react-example/src/views/EmbeddedMsgsImpressionTracker.tsx +++ b/react-example/src/views/EmbeddedMsgsImpressionTracker.tsx @@ -1,4 +1,4 @@ -import { FC, useState, useEffect, useRef } from 'react'; +/* eslint-disable no-console */ import { IterableEmbeddedCard, IterableEmbeddedManager, @@ -6,6 +6,7 @@ import { IterableEmbeddedMessageUpdateHandler, IterableEmbeddedSessionManager } from '@iterable/web-sdk'; +import { FC, useEffect, useRef, useState } from 'react'; import { useUser } from '../context/Users'; interface Props {} @@ -51,7 +52,7 @@ export const EmbeddedMsgsImpressionTracker: FC = () => { ); }; - let observersCard: any[] = []; + let observersCard: IntersectionObserver[] = []; useEffect(() => { observersCard = getCardObserver(); @@ -93,7 +94,7 @@ export const EmbeddedMsgsImpressionTracker: FC = () => { await embeddedManager.syncMessages('my-website', () => { console.log('messages', JSON.stringify(embeddedManager.getMessages())); }); - } catch (error: any) { + } catch (error: unknown) { console.log('error', error); } }; diff --git a/react-example/src/views/Users.tsx b/react-example/src/views/Users.tsx index 4273d228..598d456c 100644 --- a/react-example/src/views/Users.tsx +++ b/react-example/src/views/Users.tsx @@ -1,18 +1,19 @@ -import { FC, FormEvent, useState } from 'react'; import { - updateUser, + IterableResponse, updateSubscriptions, + updateUser, updateUserEmail } from '@iterable/web-sdk'; +import { AxiosError, AxiosResponse } from 'axios'; +import { FC, FormEvent, useState } from 'react'; import { TextField } from '../components/TextField'; - import { useUser } from '../context/Users'; import { - StyledButton, EndpointWrapper, Form, Heading, - Response + Response, + StyledButton } from './Components.styled'; interface Props {} @@ -43,11 +44,11 @@ export const Users: FC = () => { updateUser({ dataFields: { [userDataField]: 'test-data' } }) - .then((response: any) => { + .then((response: AxiosResponse) => { setUpdateUserResponse(JSON.stringify(response.data)); setUpdatingUser(false); }) - .catch((e: any) => { + .catch((e: AxiosError) => { setUpdateUserResponse(JSON.stringify(e.response.data)); setUpdatingUser(false); }); @@ -57,12 +58,12 @@ export const Users: FC = () => { e.preventDefault(); setUpdatingUserEmail(true); updateUserEmail(email) - .then((response: any) => { + .then((response: AxiosResponse) => { setUpdatingUserEmail(false); setUpdateUserEmailResponse(JSON.stringify(response.data)); setLoggedInUser({ type: 'user_update', data: email }); }) - .catch((e: any) => { + .catch((e: AxiosError) => { setUpdatingUserEmail(false); setUpdateUserEmailResponse(JSON.stringify(e.response.data)); }); @@ -73,11 +74,11 @@ export const Users: FC = () => { setUpdatingSubscriptions(true); updateSubscriptions({ emailListIds: [+emailListID] }) - .then((response: any) => { + .then((response: AxiosResponse) => { setUpdatingSubscriptions(false); setUpdateSubscriptionsResponse(JSON.stringify(response.data)); }) - .catch((e: any) => { + .catch((e: AxiosError) => { setUpdatingSubscriptions(false); setUpdateSubscriptionsResponse(JSON.stringify(e.response.data)); }); diff --git a/src/authorization/utils.ts b/src/authorization/utils.ts index 5f8bac38..7bb4a66b 100644 --- a/src/authorization/utils.ts +++ b/src/authorization/utils.ts @@ -82,7 +82,7 @@ export const cancelAxiosRequestAndMakeFetch = ( 'Api-Key': authToken, Authorization: `Bearer ${jwtToken}` }, - body: JSON.stringify({ ...config?.data, ...additionalData } || {}), + body: JSON.stringify({ ...config?.data, ...additionalData }), keepalive: true }).catch(); diff --git a/src/inapp/cache.ts b/src/inapp/cache.ts index 91f7a7d4..36069f47 100644 --- a/src/inapp/cache.ts +++ b/src/inapp/cache.ts @@ -1,3 +1,5 @@ +/* eslint-disable no-console */ +import { isAxiosError } from 'axios'; import { setMany } from 'idb-keyval'; import { BrowserStorageEstimate, CachedMessage, InAppMessage } from './types'; @@ -32,11 +34,10 @@ export const determineRemainingStorageQuota = async () => { const remainingQuota = usage && messageQuota - usage; return remainingQuota || 0; - } catch (err: any /* eslint-disable-line @typescript-eslint/no-explicit-any */) { - // eslint-disable-next-line no-console + } catch (err: unknown) { console.warn( 'Error determining remaining storage quota', - err?.response?.data?.clientErrors ?? err + isAxiosError(err) ? err.response?.data?.clientErrors : err ); } /** Do not try to add to cache if we cannot determine storage space. */ @@ -113,11 +114,10 @@ export const addNewMessagesToCache = async ( try { await setMany(messagesToAddToCache); - } catch (err: any /* eslint-disable-line @typescript-eslint/no-explicit-any */) { - // eslint-disable-next-line no-console + } catch (err: unknown) { console.warn( 'Error adding new messages to the browser cache', - err?.response?.data?.clientErrors ?? err + isAxiosError(err) ? err.response?.data?.clientErrors : err ); } } diff --git a/src/inapp/request.ts b/src/inapp/request.ts index bffe2f1a..2095678c 100644 --- a/src/inapp/request.ts +++ b/src/inapp/request.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ /* eslint-disable no-unreachable */ import { delMany, entries } from 'idb-keyval'; import { GETMESSAGES_PATH, SDK_VERSION, WEB_PLATFORM } from '../constants'; @@ -111,7 +112,6 @@ export const requestMessages = async ({ payload }: RequestMessagesProps) => { try { await delMany(cachedMessagesToDelete); } catch (err: any /* eslint-disable-line @typescript-eslint/no-explicit-any */) { - // eslint-disable-next-line no-console console.warn( 'Error deleting messages from the browser cache', err?.response?.data?.clientErrors ?? err @@ -129,7 +129,6 @@ export const requestMessages = async ({ payload }: RequestMessagesProps) => { } }; } catch (err: any /* eslint-disable-line @typescript-eslint/no-explicit-any */) { - // eslint-disable-next-line no-console console.warn( 'Error requesting in-app messages', err?.response?.data?.clientErrors ?? err diff --git a/src/inapp/utils.ts b/src/inapp/utils.ts index fc0751a6..645a9a2d 100644 --- a/src/inapp/utils.ts +++ b/src/inapp/utils.ts @@ -524,7 +524,7 @@ export const trackMessagesDelivered = ( */ }) ) - ).catch((e: any) => e); + ).catch((e: unknown) => e); export const paintOverlay = ( color = '#fff', diff --git a/src/users/users.ts b/src/users/users.ts index 279a56a9..52bbac71 100644 --- a/src/users/users.ts +++ b/src/users/users.ts @@ -1,4 +1,4 @@ -// eslint-disable @typescript-eslint/no-explicit-any +/* eslint-disable @typescript-eslint/no-explicit-any */ import { object, string } from 'yup'; import { ENDPOINTS } from '../constants'; import { IterableResponse } from '../types';