From 01782c9f79e8659bfd74c7cd666eb8510fb69f48 Mon Sep 17 00:00:00 2001 From: Kunal Sharma Date: Thu, 16 Feb 2023 15:47:43 +0530 Subject: [PATCH] @TP-17904 | Mocking service - added server , geolocation apis and data | Kunal (#80) * @TP-17904 | Mocking service - added server , geolocation apis and data * @TP-17904 | Mocking service - added server , geolocation apis and data * @TP-17904 | Mocking service - added server , geolocation apis and data * @TP-17904 | Mocking service - added server , geolocation apis and data * @TP-17904 | Mocking service - added server , geolocation apis and data --- App.tsx | 9 +- RN-UI-LIB | 2 +- config/dev/config.js | 3 +- config/qa/config.js | 3 +- package.json | 1 + src/action/dataActions.ts | 115 +++++++----- src/common/Constants.ts | 2 +- src/components/utlis/apiHelper.ts | 10 +- src/constants/config.js | 5 +- src/mock-api/constants.ts | 4 + src/mock-api/data/addressesGeolocation.ts | 210 ++++++++++++++++++++++ src/mock-api/data/caseDetail.ts | 210 ++++++++++++++++++++++ src/mock-api/server.ts | 24 +++ src/screens/caseDetails/CaseDetails.tsx | 6 +- src/screens/caseDetails/interface.ts | 2 + tsconfig.json | 6 +- types.d.ts | 7 + yarn.lock | 175 ++++++++++++++++++ 18 files changed, 735 insertions(+), 59 deletions(-) create mode 100644 src/mock-api/constants.ts create mode 100644 src/mock-api/data/addressesGeolocation.ts create mode 100644 src/mock-api/data/caseDetail.ts create mode 100644 src/mock-api/server.ts create mode 100644 types.d.ts diff --git a/App.tsx b/App.tsx index bd47b789..6d354065 100644 --- a/App.tsx +++ b/App.tsx @@ -17,11 +17,14 @@ import useNativeButtons from './src/hooks/useNativeButton'; import { StatusBar } from 'react-native'; import { COLORS } from './RN-UI-LIB/src/styles/colors'; import codePush from 'react-native-code-push'; -// import { LogBox } from 'react-native'; -// LogBox.ignoreAllLogs(); - +import { ENV } from './src/constants/config'; +import { mockApiServer } from './src/mock-api/server'; Sentry.init({ dsn: SENTRY_DSN }); +if (ENV !== 'prod') { + mockApiServer(); +} + const App = () => { useNativeButtons(); return ( diff --git a/RN-UI-LIB b/RN-UI-LIB index e0252a39..ec3b1b65 160000 --- a/RN-UI-LIB +++ b/RN-UI-LIB @@ -1 +1 @@ -Subproject commit e0252a39c09fe3569b7b7af366deb71b70b12e5b +Subproject commit ec3b1b65b3ddac478eedb3bf459416f96e2c2708 diff --git a/config/dev/config.js b/config/dev/config.js index 9a36e940..6a75bd84 100644 --- a/config/dev/config.js +++ b/config/dev/config.js @@ -1,3 +1,4 @@ export const BASE_AV_APP_URL = 'https://dev-longhorn-server.np.navi-tech.in/av'; export const SENTRY_DSN = 'https://877396e88a2b4f78b911016c64f9121a@glitchtip.cmd.navi-tech.in/155'; -export const JANUS_SERVICE_URL = 'https://dev-longhorn-portal.np.navi-tech.in/api/events/json'; \ No newline at end of file +export const JANUS_SERVICE_URL = 'https://dev-longhorn-portal.np.navi-tech.in/api/events/json'; +export const ENV = 'dev'; diff --git a/config/qa/config.js b/config/qa/config.js index 2dde6720..da861772 100644 --- a/config/qa/config.js +++ b/config/qa/config.js @@ -1,3 +1,4 @@ export const BASE_AV_APP_URL = 'https://qa-longhorn-server.np.navi-tech.in/av'; export const SENTRY_DSN = 'https://877396e88a2b4f78b911016c64f9121a@glitchtip.cmd.navi-tech.in/155'; -export const JANUS_SERVICE_URL = 'https://qa-longhorn-portal.np.navi-tech.in/api/events/json'; \ No newline at end of file +export const JANUS_SERVICE_URL = 'https://qa-longhorn-portal.np.navi-tech.in/api/events/json'; +export const ENV = 'qa'; diff --git a/package.json b/package.json index b53d7150..0f2acdab 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "eslint-plugin-react": "7.31.11", "jest": "26.6.3", "metro-react-native-babel-preset": "0.72.3", + "miragejs": "0.1.47", "prettier": "2.8.0", "react-test-renderer": "18.1.0", "typescript": "4.8.3" diff --git a/src/action/dataActions.ts b/src/action/dataActions.ts index e543ac1c..23f25b6d 100644 --- a/src/action/dataActions.ts +++ b/src/action/dataActions.ts @@ -21,25 +21,25 @@ import { AppDispatch } from '../store/store'; import { addClickstreamEvent } from '../services/clickstreamEventService'; import { CLICKSTREAM_EVENT_NAMES } from '../common/Constants'; import { logError } from '../components/utlis/errorUtils'; +import { AddressesGeolocationPayload } from '../screens/caseDetails/interface'; -export const getAllCases = - () => (dispatch: AppDispatch) => { - const url = getApiUrl(ApiKeys.ALL_CASES); - dispatch(setLoading(true)); - axiosInstance - .get(url) - .then(response => { - dispatch(setCasesListData({ allCases: response.data })); - dispatch(getAllCaseDetails(response.data)); - }) - .catch(err => { - console.log(err); - }); - }; +export const getAllCases = () => (dispatch: AppDispatch) => { + const url = getApiUrl(ApiKeys.ALL_CASES); + dispatch(setLoading(true)); + axiosInstance + .get(url) + .then(response => { + dispatch(setCasesListData({ allCases: response.data })); + dispatch(getAllCaseDetails(response.data)); + }) + .catch(err => { + console.log(err); + }); +}; export const getAllCaseDetails = (data: Array) => (dispatch: AppDispatch) => { - if(!data) return; + if (!data) return; const caseList = data.map(caseItem => caseItem?.caseReferenceId); const url = getApiUrl(ApiKeys.CASE_DETAIL); axiosInstance @@ -81,19 +81,29 @@ export const postPinnedList = .post(url + `?pins=${payload}`) .then(response => { dispatch(getAllCases()); - addClickstreamEvent(type === 'REMOVED' ? CLICKSTREAM_EVENT_NAMES.AV_CASE_LIST_REMOVE_API_SUCCESS : CLICKSTREAM_EVENT_NAMES.AV_TODO_LIST_SUBMIT_SUCCESS, {todoList: pinnedCases}) + addClickstreamEvent( + type === 'REMOVED' + ? CLICKSTREAM_EVENT_NAMES.AV_CASE_LIST_REMOVE_API_SUCCESS + : CLICKSTREAM_EVENT_NAMES.AV_TODO_LIST_SUBMIT_SUCCESS, + { todoList: pinnedCases }, + ); }) .catch(err => { - addClickstreamEvent(type === 'REMOVED' ? CLICKSTREAM_EVENT_NAMES.AV_CASE_LIST_REMOVE_API_FAILED : CLICKSTREAM_EVENT_NAMES.AV_TODO_LIST_SUBMIT_FAILED, {todoList: pinnedCases}) + addClickstreamEvent( + type === 'REMOVED' + ? CLICKSTREAM_EVENT_NAMES.AV_CASE_LIST_REMOVE_API_FAILED + : CLICKSTREAM_EVENT_NAMES.AV_TODO_LIST_SUBMIT_FAILED, + { todoList: pinnedCases }, + ); dispatch(setTodoListOffline(updatedCaseList)); }); }; export const syncCaseDetail = (data: any) => (dispatch: AppDispatch) => { const offlineImageIdList = getOfflineImageId(data); - dispatch(updateCaseDetailAfterApiCall({caseId: data.id})) + dispatch(updateCaseDetailAfterApiCall({ caseId: data.id })); const url = getApiUrl(ApiKeys.FEEDBACK); - const apiTime = (new Date()).getTime(); + const apiTime = new Date().getTime(); axiosInstance .post(url, { id: data.id, @@ -104,7 +114,7 @@ export const syncCaseDetail = (data: any) => (dispatch: AppDispatch) => { OfflineImageDAO.deleteImages(offlineImageIdList); }) .catch(err => { - dispatch(updateCaseDetailBeforeApiCall({caseId: data.id})) + dispatch(updateCaseDetailBeforeApiCall({ caseId: data.id })); }); }; @@ -114,14 +124,25 @@ export const syncCaseDetail = (data: any) => (dispatch: AppDispatch) => { */ const getOfflineImageId = (caseItem: any) => { const offlineImageList = []; - for(let taskId in caseItem?.context?.taskContext) { - for(let taskItem of caseItem.context.taskContext?.[taskId]) { - for(let wizItem in taskItem?.widgetContext) { - for(let sectionItem in taskItem.widgetContext[wizItem]?.sectionContext) { - for(let questionItem in taskItem.widgetContext[wizItem].sectionContext[sectionItem]?.questionContext) { - if (taskItem.widgetContext[wizItem].sectionContext[sectionItem].questionContext[questionItem]?.type === AnswerType.image) { - const offlineImageId = taskItem.widgetContext[wizItem].sectionContext[sectionItem].questionContext[questionItem].offlineImageId; - if(offlineImageId) offlineImageList.push(offlineImageId); + for (let taskId in caseItem?.context?.taskContext) { + for (let taskItem of caseItem.context.taskContext?.[taskId]) { + for (let wizItem in taskItem?.widgetContext) { + for (let sectionItem in taskItem.widgetContext[wizItem] + ?.sectionContext) { + for (let questionItem in taskItem.widgetContext[wizItem] + .sectionContext[sectionItem]?.questionContext) { + if ( + taskItem.widgetContext[wizItem].sectionContext[ + sectionItem + ].questionContext[questionItem]?.type === + AnswerType.image + ) { + const offlineImageId = + taskItem.widgetContext[wizItem].sectionContext[ + sectionItem + ].questionContext[questionItem].offlineImageId; + if (offlineImageId) + offlineImageList.push(offlineImageId); } } } @@ -129,7 +150,7 @@ const getOfflineImageId = (caseItem: any) => { } } return offlineImageList; -} +}; export const getFilters = () => (dispatch: AppDispatch) => { const url = getApiUrl(ApiKeys.FILTERS); @@ -142,15 +163,29 @@ export const getFilters = () => (dispatch: AppDispatch) => { export const getSignedURLs = (urlList: string[]) => (dispatch: AppDispatch) => { const url = getApiUrl(ApiKeys.IMAGE_SIGNED_URLS); dispatch(setLoading(true)); - return axiosInstance.post(url, urlList).then(response => { - if(response?.data) { - return response.data; - } - throw response; - }).catch((err) => { - logError(err); - }) - .finally(() => { - dispatch(setLoading(false)); - }) + return axiosInstance + .post(url, urlList) + .then(response => { + if (response?.data) { + return response.data; + } + throw response; + }) + .catch(err => { + logError(err); + }) + .finally(() => { + dispatch(setLoading(false)); + }); }; + +export const getAddressesGeolocation = + (data: AddressesGeolocationPayload) => (dispatch: AppDispatch) => { + const url = getApiUrl(ApiKeys.ADDRESSES_GEOLOCATION); + axiosInstance + .post(url, data) + .then(response => { + console.log('Response is coming', response); + }) + .catch(err => console.log(err)); + }; diff --git a/src/common/Constants.ts b/src/common/Constants.ts index 2b7a99ee..b1c4ef11 100644 --- a/src/common/Constants.ts +++ b/src/common/Constants.ts @@ -78,7 +78,7 @@ export const CLICKSTREAM_EVENT_NAMES = { AV_CASE_LIST_TAB_CHANGED : {name: 'AV_CASE_LIST_TAB_CHANGED', description: 'Case list tab changed'}, AV_CASE_LIST_AGENT_PROFILE_CLICKED : {name: 'AV_CASE_LIST_AGENT_PROFILE_CLICKED', description: 'Case list agent profile CTA clicked'}, - // TODO LIST + // TODO LIST AV_TODO_LIST_LOAD : {name: 'AV_TODO_LIST_LOAD', description: 'Todo list confirmation screen loaded'}, AV_TODO_LIST_CASE_DELETED : {name: 'AV_TODO_LIST_CASE_DELETED', description: 'Todo list case deleted'}, AV_TODO_LIST_SUBMIT_CLICKED : {name: 'AV_TODO_LIST_SUBMIT_CLICKED', description: 'Submit CTA clicked'}, diff --git a/src/components/utlis/apiHelper.ts b/src/components/utlis/apiHelper.ts index 6f470b46..0d6e62bc 100644 --- a/src/components/utlis/apiHelper.ts +++ b/src/components/utlis/apiHelper.ts @@ -10,7 +10,7 @@ import { logError } from './errorUtils'; import { ClickstreamAPIToMonitor, CLICKSTREAM_EVENT_NAMES } from '../../common/Constants'; import { addClickstreamEvent } from '../../services/clickstreamEventService'; -const MOCK_DIR = '__mocks__'; +const MOCK_DIR = 'mock'; // set this to `true` to use mock data for local development // to connect with real apis this should be set to `false` @@ -26,7 +26,8 @@ export enum ApiKeys { FEEDBACK, FILTERS, JANUS, - IMAGE_SIGNED_URLS + IMAGE_SIGNED_URLS, + ADDRESSES_GEOLOCATION } export const API_URLS: Record = {} as Record; @@ -40,8 +41,8 @@ API_URLS[ApiKeys.FEEDBACK] = '/cases/feedback'; API_URLS[ApiKeys.FILTERS] = '/cases/filters'; API_URLS[ApiKeys.JANUS] = '/events/json'; API_URLS[ApiKeys.IMAGE_SIGNED_URLS] = '/cases/get-signed-urls'; +API_URLS[ApiKeys.ADDRESSES_GEOLOCATION] = '/addresses-geolocations'; -const MOCK_API_URLS: Record = {} as Record; export const API_STATUS_CODE = { OK: 200, @@ -70,9 +71,6 @@ export function getApiUrl( params?: Record, queryParams?: Record, ) { - if (USE_MOCK) { - return `${MOCK_DIR}/${MOCK_API_URLS[apiKey]}`; - } let apiUrl = API_URLS[apiKey]; diff --git a/src/constants/config.js b/src/constants/config.js index 9a36e940..da861772 100644 --- a/src/constants/config.js +++ b/src/constants/config.js @@ -1,3 +1,4 @@ -export const BASE_AV_APP_URL = 'https://dev-longhorn-server.np.navi-tech.in/av'; +export const BASE_AV_APP_URL = 'https://qa-longhorn-server.np.navi-tech.in/av'; export const SENTRY_DSN = 'https://877396e88a2b4f78b911016c64f9121a@glitchtip.cmd.navi-tech.in/155'; -export const JANUS_SERVICE_URL = 'https://dev-longhorn-portal.np.navi-tech.in/api/events/json'; \ No newline at end of file +export const JANUS_SERVICE_URL = 'https://qa-longhorn-portal.np.navi-tech.in/api/events/json'; +export const ENV = 'qa'; diff --git a/src/mock-api/constants.ts b/src/mock-api/constants.ts new file mode 100644 index 00000000..18a8b4dc --- /dev/null +++ b/src/mock-api/constants.ts @@ -0,0 +1,4 @@ +import {BASE_AV_APP_URL} from "../constants/config"; +import {API_URLS, ApiKeys} from "../components/utlis/apiHelper"; + +export const addressesGeolocationUrl = `${BASE_AV_APP_URL}/${API_URLS[ApiKeys.ADDRESSES_GEOLOCATION]}` diff --git a/src/mock-api/data/addressesGeolocation.ts b/src/mock-api/data/addressesGeolocation.ts new file mode 100644 index 00000000..deb267cb --- /dev/null +++ b/src/mock-api/data/addressesGeolocation.ts @@ -0,0 +1,210 @@ +export const addressesGeolocationData = { + addressL1ViewList: [ + { + addressDTO: { + id: '34b2d8cff7001558c533c7ae771ff613', + customerReferenceId: '0d5e4bc7-5365-4d6d-ac73-cad7c0125f61', + externalReferenceId: null, + addressText: 'MUMBAI MAHARASHTRA', + pinCode: '400029', + city: null, + state: 'Maharashtra', + isCurrent: false, + isPermanent: false, + primarySource: 'CIBIL_SCRUB', + secondarySource: 'CIBIL_MASTER_CIBIL_PORTFOLIO', + type: 'RESIDENCE', + consumptionDate: '2022-05-31', + latitude: null, + longitude: null, + verified: null, + visited: null, + groupIdentifier: '1', + createdAt: '2023-01-30T09:06:45.365+00:00', + updatedAt: '2023-01-30T09:06:45.365+00:00', + }, + similarAddresses: [], + matchingGeoLocations: [], + }, + { + addressDTO: { + id: 'ff3a75377fc24e04bb03b2f571e41c37', + customerReferenceId: '0d5e4bc7-5365-4d6d-ac73-cad7c0125f61', + externalReferenceId: null, + addressText: 'Some random address\nIts in some place', + pinCode: null, + city: 'Not Bangalore', + state: null, + isCurrent: null, + isPermanent: null, + primarySource: 'LONGHORN', + secondarySource: 'COLLECTION_SERVICE', + type: null, + consumptionDate: null, + latitude: 13.742393, + longitude: 76.9013919, + verified: null, + visited: true, + groupIdentifier: null, + createdAt: '2023-01-27T14:56:13.765+00:00', + updatedAt: '2023-02-14T10:04:54.380+00:00', + }, + similarAddresses: [ + { + addressDTO: { + id: 'ff69e7ae4642451a9a944abd55c02d8b', + customerReferenceId: + '0d5e4bc7-5365-4d6d-ac73-cad7c0125f61', + externalReferenceId: null, + addressText: 'qwerty\nqwerty street, qwerty nagar', + pinCode: null, + city: 'qwerty', + state: null, + isCurrent: null, + isPermanent: null, + primarySource: 'LONGHORN', + secondarySource: 'COLLECTION_SERVICE', + type: null, + consumptionDate: null, + latitude: 12.9344698, + longitude: 77.6179804, + verified: null, + visited: true, + groupIdentifier: null, + createdAt: '2023-01-18T09:09:05.775+00:00', + updatedAt: '2023-01-27T14:29:40.832+00:00', + }, + }, + { + addressDTO: { + id: 'dc0feed3cc784a01873ff500a7b3f968', + customerReferenceId: + '0d5e4bc7-5365-4d6d-ac73-cad7c0125f61', + externalReferenceId: null, + addressText: 'qwerty\nqwerty street, qwerty nagar', + pinCode: null, + city: 'qwerty', + state: null, + isCurrent: null, + isPermanent: null, + primarySource: 'LONGHORN', + secondarySource: 'COLLECTION_SERVICE', + type: null, + consumptionDate: null, + latitude: 12.9344698, + longitude: 77.6179804, + verified: null, + visited: true, + groupIdentifier: null, + createdAt: '2023-01-18T09:09:05.770+00:00', + updatedAt: '2023-01-27T14:29:40.750+00:00', + }, + }, + { + addressDTO: { + id: 'c2c2e91c39594b32937b3e54af2263d4', + customerReferenceId: + '0d5e4bc7-5365-4d6d-ac73-cad7c0125f61', + externalReferenceId: null, + addressText: 'qwerty\nqwerty street, qwerty nagar', + pinCode: null, + city: 'qwerty', + state: null, + isCurrent: null, + isPermanent: null, + primarySource: 'LONGHORN', + secondarySource: 'COLLECTION_SERVICE', + type: null, + consumptionDate: null, + latitude: null, + longitude: null, + verified: null, + visited: true, + groupIdentifier: null, + createdAt: '2023-01-18T09:08:30.957+00:00', + updatedAt: '2023-01-27T14:29:40.720+00:00', + }, + }, + { + addressDTO: { + id: 'f7d31ebd1decbf05be8d955b93fb306d', + customerReferenceId: + '0d5e4bc7-5365-4d6d-ac73-cad7c0125f61', + externalReferenceId: + '8d4eca6c-53b2-491c-80c0-c5204b63afda', + addressText: null, + pinCode: '400098', + city: null, + state: null, + isCurrent: false, + isPermanent: false, + primarySource: 'MMI', + secondarySource: 'CUSTOMER_SERVICE', + type: 'MMI', + consumptionDate: null, + latitude: null, + longitude: null, + verified: null, + visited: null, + groupIdentifier: null, + createdAt: '2023-01-30T09:07:25.060+00:00', + updatedAt: '2023-01-30T09:07:25.060+00:00', + }, + }, + { + addressDTO: { + id: 'ca5309f3055a08b98ce9747dce0b9a51', + customerReferenceId: + '0d5e4bc7-5365-4d6d-ac73-cad7c0125f61', + externalReferenceId: + '1f7db9e2-c590-489f-a587-0b9e0450bca5', + addressText: null, + pinCode: '400098', + city: null, + state: null, + isCurrent: false, + isPermanent: false, + primarySource: 'MMI', + secondarySource: 'CUSTOMER_SERVICE', + type: 'MMI', + consumptionDate: null, + latitude: null, + longitude: null, + verified: null, + visited: null, + groupIdentifier: null, + createdAt: '2023-01-30T09:07:54.235+00:00', + updatedAt: '2023-01-30T09:07:54.235+00:00', + }, + }, + { + addressDTO: { + id: '03501abc590d4e88afa5e2ea625a9a78', + customerReferenceId: + '0d5e4bc7-5365-4d6d-ac73-cad7c0125f61', + externalReferenceId: null, + addressText: 'asd\nasd', + pinCode: null, + city: '12', + state: null, + isCurrent: null, + isPermanent: null, + primarySource: 'LONGHORN', + secondarySource: 'COLLECTION_SERVICE', + type: null, + consumptionDate: null, + latitude: 13.7423956, + longitude: 76.9013917, + verified: null, + visited: null, + groupIdentifier: null, + createdAt: '2023-01-27T13:39:01.720+00:00', + updatedAt: '2023-01-27T13:39:01.720+00:00', + }, + }, + ], + matchingGeoLocations: [], + }, + ], + unmatchedGeoLocations: [], +}; diff --git a/src/mock-api/data/caseDetail.ts b/src/mock-api/data/caseDetail.ts new file mode 100644 index 00000000..fe1b1456 --- /dev/null +++ b/src/mock-api/data/caseDetail.ts @@ -0,0 +1,210 @@ +export const caseDetailMockData = [ + { + id: '450233d6-58c8-45c0-b814-175e18386f41', + caseStatus: 'ASSIGNED', + createdAt: 1674016478376, + updatedAt: 1674016503049, + allocatedAt: 1674016503039, + loanDetails: { + loanAccountNumber: '010000077710', + disbursalDate: 1669334400000, + disbursementAmount: 50000, + firstDueDate: 1671321600000, + tenureMonths: 20, + loanType: 'PERSONAL_LOAN', + loanAccountStatus: 'ACTIVE', + productCode: 'PL-0001', + }, + customerInfo: { + customerReferenceId: '50d9577e-bbc4-4c23-8bbb-7dda5f71d97b', + customerName: 'Jeel Gajera', + primaryPhoneNumber: '9901353325', + imageURL: + 'https://s3.ap-south-1.amazonaws.com/navi-d5a6c37adb7e06d06401aba47fe07bf3/prod/55556b6b-9a19-4d2b-ac71-519599c35cef?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEHsaCXVzLWVhc3QtMSJIMEYCIQD9nl79blCjgLKlGt7aw2UIYw3wGKNfh%2Bwxuuz3Qy4OfwIhAKzG8jdQ8kAmmtPlsw8acMVENHPyxLbmacRoTy9ijgy9KrICCBMQARoMNTcxMzE1MDc2NzYyIgyayYE5cOrRZyLcCBMqjwKeO3foMwJskwZJU7xg%2B%2BZe8lgplHXXwrfKl9NJ2ARaiePUM5ehpScToi7jIm7pbHeJaSiaKAhrqbIl%2Fw8BtFBJ7MPJ5oiaU6ACm7eWEnHPseIFA022LA8y41C56S7T%2F6fhkVkY9dfiOAewtbRK0KwuHlBPeuNJu3uKJNu1QyY%2BA0cXtrxlKyuE5e2KVO06L7zUsKOXGvEnLkLbdTWIIj4DWBwiCZqgbsmfcxJPwdlRgBrC2Y%2F8v6DQLucAapU1cNfYFvGW%2BLZDJuNOs4j7gKfCSAOLeFCX2dFDgaz7fx6F1FnGJG%2B79pz%2BtvdOXEy%2F8btoRNgLgIdd%2BOOyikDa5k6z%2B8rWT0oqprRUKEuRomvBMJvArZ8GOpwBPDn%2FGw1gCSG9ECbrcAbtDLQ36pL8WOVBKJlEELQMNtGf6ZocrjzaHZISF6mltJjIp5EfUKEXf0Nl6TkrTYkqYecqWLkKPl3mqgeskxRKc4yGfdVcq7IQNdyOFuYkZTyg24hgVzbiprZtLUWnNunlIHShqrNvoCmoBB81V2PJ9sc%2FdsrUW5%2BR3h0YjJEbEoSzu9aHRBBp6Q0N0AHE&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230214T103300Z&X-Amz-SignedHeaders=host&X-Amz-Expires=43199&X-Amz-Credential=ASIAYKBIIH2NNHF73EDM%2F20230214%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Signature=d4350d588f96ebf72d7a4d02df32bb55d098c368732a075e81ab55069f2ef80c', + geoLocation: 'https://maps.google.com/?q=21.2188024,72.8937695', + }, + tasks: [ + { + taskId: 221, + taskType: 'COMMUNICATION_ADDRESS_VERIFICATION_TASK', + metadata: { + type: 'address', + address: { + referenceId: null, + houseNumber: '156 GOKUL NAGAR SOCIETY', + lineOne: null, + lineTwo: null, + locality: 'ROAD VARACHHA SURAT CITY', + street: 'NEAR RACHNA SOCIETY L H', + city: 'Surat', + state: 'GJ', + pinCode: '576109', + type: null, + source: 'CUSTOMER', + current: true, + permanent: false, + zipCode: null, + addressQualityStatus: null, + }, + addressLine: + '156 GOKUL NAGAR SOCIETY,ROAD VARACHHA SURAT CITY,NEAR RACHNA SOCIETY L H,Surat,GJ,576109', + }, + }, + { + taskId: 222, + taskType: 'PERMANENT_ADDRESS_VERIFICATION_TASK', + metadata: { + type: 'address', + address: { + referenceId: null, + houseNumber: '156 GOKUL NAGAR SOCIETY', + lineOne: null, + lineTwo: null, + locality: 'NEAR RACHNA SOCIETY L H', + street: 'ROAD VARACHHA SURAT CITY', + city: 'Surat', + state: 'GJ', + pinCode: '576107', + type: null, + source: 'CKYC', + current: false, + permanent: true, + zipCode: null, + addressQualityStatus: null, + }, + addressLine: + '156 GOKUL NAGAR SOCIETY,NEAR RACHNA SOCIETY L H,ROAD VARACHHA SURAT CITY,Surat,GJ,576107', + }, + }, + { + taskId: 223, + taskType: 'GEO_LOCATION_VERIFICATION_TASK', + metadata: { + type: 'geo', + geoLocation: + 'https://maps.google.com/?q=21.2188024,72.8937695', + }, + }, + { + taskId: 224, + taskType: 'CALLING_TASK', + metadata: { type: 'calling', primaryPhoneNumber: '9901353325' }, + }, + { + taskId: 225, + taskType: 'NEW_ADDRESS_VERIFICATION_TASK', + metadata: null, + }, + ], + context: null, + currentAllocationReferenceId: '67b34cb2-ccc4-4aae-bc39-778cbdd563d2', + currentAgentId: '598e3ab3-5870-43c5-a9d5-d3f18388c1a7', + taskSequence: [ + 'COMMUNICATION_ADDRESS_VERIFICATION_TASK', + 'PERMANENT_ADDRESS_VERIFICATION_TASK', + 'GEO_LOCATION_VERIFICATION_TASK', + 'CALLING_TASK', + 'NEW_ADDRESS_VERIFICATION_TASK', + ], + currentTask: 'COMMUNICATION_ADDRESS_VERIFICATION_TASK', + }, + { + id: '450233d6-58c8-45c0-b814-175e18386f45', + updatedAt: 1674474231951, + allocatedAt: 1674016504968, + caseStatus: 'ACTIVE', + caseReferenceId: '45f2e0e8-fb2f-4d4f-aa95-4030afd28da9', + customerName: 'Manoj Kumar', + dpdBucket: '30-60', + caseType: 'COLLECTION_CASE', + pos: 70173.57, + addressString: + 'BARRACKPORE(M) BARRACKPORE, NORTH, C M SAHA ROAD, MONIRAMPORE, NORTH, Barrackpore, WEST BENGAL, 700120', + addresses: [ + { + referenceId: 'cdfa0a17-790c-41bf-a745-7c44a2fbc9ac', + addressReferenceId: 'fcbc99bb-9f7e-4a36-9183-723359c5a5fc', + lineOne: 'BARRACKPORE(M) BARRACKPORE, NORTH', + lineTwo: 'C M SAHA ROAD, MONIRAMPORE, NORTH', + city: 'Barrackpore', + state: 'WEST BENGAL', + pinCode: '700120', + current: false, + permanent: false, + type: 'CORRESPONDENCE', + source: 'PRIMARY', + addressQualityStatus: null, + collectionCaseId: 711260, + signals: null, + location: null, + }, + ], + customerReferenceId: 'dadada60-cedb-44f9-90e3-54920c215ffc', + documents: [ + { + referenceId: '13e59219-6ae5-4b76-9546-88c194a90aaf', + uri: 'https://s3.ap-south-1.amazonaws.com/navi-8af22e75d3ad3bd252215069b16a75dc/prod/45fcb4e6-8a28-44cf-83d2-f1f4ecec08de?X-Amz-Security-Token=FwoGZXIvYXdzEHIaDPgmIUpLhzA7q0TTFiLLARhdLI4snCE8w6Ym91%2BA%2FWui%2FAe056BY18TJQSjlvxsxv2rqs5Iv3Vbi6ZejDxFujAKhYemnPUvJiMfnClh6DPyrUL9Bbktx16n5I1b5sgB3JFVHD2V%2FAiSdIGcQm3JWbHw%2FUziDZQwHOn0Ky1HpZpKUtNHvFX1%2BXs8teXm7hw%2BWfuSolb89BwO766VCAiKYntUiRbDHJnuoCOOCFdjEchh6rOfNj2lLDWWIoRG%2FA0kSQoxpg44%2FG4kh2kb9oc8D6axMsRhHpq%2BET8v9KI3yp58GMi3oPCBEpb%2BU7PCclh2eYGw2tROj9bjwHQ%2Bd8TYshKGt61VdkjEamtVkuzbwpq4%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230213T090839Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=ASIAXFRMTTJPXEBQOWXV%2F20230213%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Signature=32acb064356397c47ba39ae3c102f7145ba5610a939009ebaf3976ea707742a3', + type: 'SELFIE', + }, + { + referenceId: '0d1e8180-9618-4235-aab5-1a163ccd13cd', + uri: 'https://s3.ap-south-1.amazonaws.com/navi-8af22e75d3ad3bd252215069b16a75dc/prod/30dc3faa-049f-426b-9325-0d386a2131c9?X-Amz-Security-Token=FwoGZXIvYXdzEHIaDPgmIUpLhzA7q0TTFiLLARhdLI4snCE8w6Ym91%2BA%2FWui%2FAe056BY18TJQSjlvxsxv2rqs5Iv3Vbi6ZejDxFujAKhYemnPUvJiMfnClh6DPyrUL9Bbktx16n5I1b5sgB3JFVHD2V%2FAiSdIGcQm3JWbHw%2FUziDZQwHOn0Ky1HpZpKUtNHvFX1%2BXs8teXm7hw%2BWfuSolb89BwO766VCAiKYntUiRbDHJnuoCOOCFdjEchh6rOfNj2lLDWWIoRG%2FA0kSQoxpg44%2FG4kh2kb9oc8D6axMsRhHpq%2BET8v9KI3yp58GMi3oPCBEpb%2BU7PCclh2eYGw2tROj9bjwHQ%2Bd8TYshKGt61VdkjEamtVkuzbwpq4%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230213T090839Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=ASIAXFRMTTJPXEBQOWXV%2F20230213%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Signature=06acb56621f25e525078684d5c7c2033148ea1758443e54cadf995ad1794a41f', + type: 'aadhar_photo', + }, + ], + imageUrl: + 'https://s3.ap-south-1.amazonaws.com/navi-8af22e75d3ad3bd252215069b16a75dc/prod/45fcb4e6-8a28-44cf-83d2-f1f4ecec08de?X-Amz-Security-Token=FwoGZXIvYXdzEHIaDPgmIUpLhzA7q0TTFiLLARhdLI4snCE8w6Ym91%2BA%2FWui%2FAe056BY18TJQSjlvxsxv2rqs5Iv3Vbi6ZejDxFujAKhYemnPUvJiMfnClh6DPyrUL9Bbktx16n5I1b5sgB3JFVHD2V%2FAiSdIGcQm3JWbHw%2FUziDZQwHOn0Ky1HpZpKUtNHvFX1%2BXs8teXm7hw%2BWfuSolb89BwO766VCAiKYntUiRbDHJnuoCOOCFdjEchh6rOfNj2lLDWWIoRG%2FA0kSQoxpg44%2FG4kh2kb9oc8D6axMsRhHpq%2BET8v9KI3yp58GMi3oPCBEpb%2BU7PCclh2eYGw2tROj9bjwHQ%2Bd8TYshKGt61VdkjEamtVkuzbwpq4%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230213T090839Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=ASIAXFRMTTJPXEBQOWXV%2F20230213%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Signature=32acb064356397c47ba39ae3c102f7145ba5610a939009ebaf3976ea707742a3', + phoneNumbers: [ + { + type: 'OFFICE_PHONE', + source: 'BUREAU', + sourceText: 'Credit Bureau Scrub', + number: '9125591080', + valid: true, + telephoneScore: -1, + havingMaximumScore: false, + callHistory: null, + createdAt: '2022-02-26T13:48:00.819969', + new: true, + }, + { + type: 'OFFICE_PHONE', + source: 'BUREAU', + sourceText: 'Credit Bureau Scrub', + number: '8792044101', + valid: true, + telephoneScore: -1, + havingMaximumScore: false, + callHistory: null, + createdAt: '2022-02-26T13:48:00.819969', + new: true, + }, + { + type: '', + source: 'PRIMARY', + sourceText: 'Primary Contact', + number: '9620174791', + valid: true, + telephoneScore: 100, + havingMaximumScore: true, + callHistory: null, + createdAt: null, + new: true, + }, + { + type: 'MOBILE_PHONE', + source: 'BUREAU', + sourceText: 'Credit Bureau Scrub', + number: '9855855888', + valid: true, + telephoneScore: -1, + havingMaximumScore: false, + callHistory: null, + createdAt: '2022-02-26T13:48:00.819969', + new: true, + }, + ], + currentOutstandingEmi: 7017.57, + totalOverdueEmis: 12, + }, +]; diff --git a/src/mock-api/server.ts b/src/mock-api/server.ts new file mode 100644 index 00000000..072a470a --- /dev/null +++ b/src/mock-api/server.ts @@ -0,0 +1,24 @@ +import {createServer} from 'miragejs'; +import {addressesGeolocationUrl} from "./constants"; +import {addressesGeolocationData} from "./data/addressesGeolocation"; +import {API_URLS, ApiKeys} from "../components/utlis/apiHelper"; + +export function mockApiServer() { + if (window.server) { + window.server.shutdown(); + } + + window.server = createServer({ + routes() { + this.post(addressesGeolocationUrl , () => { + return {...addressesGeolocationData}; + }) + this.passthrough((r) => { + return !r.url.includes(API_URLS[ApiKeys.ADDRESSES_GEOLOCATION]) + }); + this.passthrough((r) => { + return !r.url.includes(API_URLS[ApiKeys.CASE_DETAIL]) + }); + } + }) +} diff --git a/src/screens/caseDetails/CaseDetails.tsx b/src/screens/caseDetails/CaseDetails.tsx index b65bc244..be8999fe 100644 --- a/src/screens/caseDetails/CaseDetails.tsx +++ b/src/screens/caseDetails/CaseDetails.tsx @@ -16,7 +16,10 @@ import { SCREEN_WIDTH, } from '../../../RN-UI-LIB/src/styles'; import { COLORS } from '../../../RN-UI-LIB/src/styles/colors'; -import { getSingleCaseDetail } from '../../action/dataActions'; +import { + getAddressesGeolocation, + getSingleCaseDetail, +} from '../../action/dataActions'; import { useAppDispatch, useAppSelector } from '../../hooks'; import useRefresh from '../../hooks/useRefresh'; import { updateAlternateHeader } from '../../reducer/caseReducer'; @@ -58,6 +61,7 @@ const CaseDetails: React.FC = props => { currentTask: caseDetail?.currentTask?.taskType, }, ); + dispatch(getAddressesGeolocation({ latitude: 1, longitude: 1 })); }, []); const handleRefresh = () => { diff --git a/src/screens/caseDetails/interface.ts b/src/screens/caseDetails/interface.ts index 65295695..ae01d7d7 100644 --- a/src/screens/caseDetails/interface.ts +++ b/src/screens/caseDetails/interface.ts @@ -154,3 +154,5 @@ export interface CaseDetail { dpdBucket: string; currentAllocationReferenceId: string; } + +export interface AddressesGeolocationPayload {latitude: number, longitude: number} diff --git a/tsconfig.json b/tsconfig.json index 3d57cbc8..0894563c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,11 +3,11 @@ "extends": "@tsconfig/react-native/tsconfig.json", /* Recommended React Native TSConfig base */ "compilerOptions": { /* Visit https://aka.ms/tsconfig.json to read more about this file */ - "emitDecoratorMetadata": true, "experimentalDecorators": true, + "lib": ["dom","es5","es2019"], /* Completeness */ - "skipLibCheck": true, /* Skip type checking all .d.ts files. */ - } + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, } diff --git a/types.d.ts b/types.d.ts new file mode 100644 index 00000000..7b2c5c8a --- /dev/null +++ b/types.d.ts @@ -0,0 +1,7 @@ +export {}; + +declare global { + interface Window { + server: any; + } +} diff --git a/yarn.lock b/yarn.lock index dd15ae38..f0ee42bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1264,6 +1264,11 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@miragejs/pretender-node-polyfill@^0.1.0": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@miragejs/pretender-node-polyfill/-/pretender-node-polyfill-0.1.2.tgz#d26b6b7483fb70cd62189d05c95d2f67153e43f2" + integrity sha512-M/BexG/p05C5lFfMunxo/QcgIJnMT2vDVCd00wNqK2ImZONIlEETZwWJu1QtLxtmYlSHlCFl3JNzp0tLe7OJ5g== + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -3949,6 +3954,11 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +fake-xml-http-request@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fake-xml-http-request/-/fake-xml-http-request-2.1.2.tgz#f1786720cae50bbb46273035a0173414f3e85e74" + integrity sha512-HaFMBi7r+oEC9iJNpc3bvcW7Z7iLmM26hPDmlb0mFwyANSsOQAtJxbdWsXITKOzZUyMYK0zYCv3h5yDj9TsiXg== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -4645,6 +4655,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +inflected@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/inflected/-/inflected-2.1.0.tgz#2816ac17a570bbbc8303ca05bca8bf9b3f959687" + integrity sha512-hAEKNxvHf2Iq3H60oMBHkB4wl5jn3TPF3+fXek/sRwAB5gP9xWs4r7aweSF95f99HFoz69pnZTcu8f0SIHV18w== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5735,21 +5750,136 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.compact@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash.compact/-/lodash.compact-3.0.1.tgz#540ce3837745975807471e16b4a2ba21e7256ca5" + integrity sha512-2ozeiPi+5eBXW1CLtzjk8XQFhQOEMwwfxblqeq6EGyTxZJ1bPATqilY0e6g2SLQpP4KuMeuioBhEnWz5Pr7ICQ== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +lodash.find@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" + integrity sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.forin@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.forin/-/lodash.forin-4.4.0.tgz#5d3f20ae564011fbe88381f7d98949c9c9519731" + integrity sha512-APldePP4yvGhMcplVxv9L+exdLHMRHRhH1Q9O70zRJMm9HbTm6zxaihXtNl+ICOBApeFWoH7jNmFr/L4XfWeiQ== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.has@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + integrity sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g== + +lodash.invokemap@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz#1748cda5d8b0ef8369c4eb3ec54c21feba1f2d62" + integrity sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w== + +lodash.isempty@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.lowerfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" + integrity sha512-UUKX7VhP1/JL54NXg2aq/E1Sfnjjes8fNYTNkPU8ZmsaVeBvPHKdbNaN79Re5XRL01u6wbq3j0cbYZj71Fcu5w== + +lodash.map@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q== + +lodash.mapvalues@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.pick@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q== + +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== + lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash.uniqby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" + integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== + +lodash.values@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" + integrity sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q== + lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -6213,6 +6343,38 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1. resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +miragejs@^0.1.47: + version "0.1.47" + resolved "https://registry.yarnpkg.com/miragejs/-/miragejs-0.1.47.tgz#c4a8dff21adfc0ce3181d78987f11848d74c6869" + integrity sha512-99tuCbIAlMhNhyF3s5d3+5/FdJ7O4jSq/5e3e+sDv7L8dZdwJuwutXe0pobJ7hm6yRChTDjK+Nn8dZZd175wbg== + dependencies: + "@miragejs/pretender-node-polyfill" "^0.1.0" + inflected "^2.0.4" + lodash.assign "^4.2.0" + lodash.camelcase "^4.3.0" + lodash.clonedeep "^4.5.0" + lodash.compact "^3.0.1" + lodash.find "^4.6.0" + lodash.flatten "^4.4.0" + lodash.forin "^4.4.0" + lodash.get "^4.4.2" + lodash.has "^4.5.2" + lodash.invokemap "^4.6.0" + lodash.isempty "^4.4.0" + lodash.isequal "^4.5.0" + lodash.isfunction "^3.0.9" + lodash.isinteger "^4.0.4" + lodash.isplainobject "^4.0.6" + lodash.lowerfirst "^4.3.1" + lodash.map "^4.6.0" + lodash.mapvalues "^4.6.0" + lodash.pick "^4.4.0" + lodash.snakecase "^4.1.1" + lodash.uniq "^4.5.0" + lodash.uniqby "^4.7.0" + lodash.values "^4.3.0" + pretender "^3.4.7" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -6839,6 +7001,14 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== +pretender@^3.4.7: + version "3.4.7" + resolved "https://registry.yarnpkg.com/pretender/-/pretender-3.4.7.tgz#34a2ae2d1fc9db440a990d50e6c0f5481d8755fc" + integrity sha512-jkPAvt1BfRi0RKamweJdEcnjkeu7Es8yix3bJ+KgBC5VpG/Ln4JE3hYN6vJym4qprm8Xo5adhWpm3HCoft1dOw== + dependencies: + fake-xml-http-request "^2.1.2" + route-recognizer "^0.3.3" + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -7462,6 +7632,11 @@ rn-fetch-blob@0.12.0: base-64 "0.1.0" glob "7.0.6" +route-recognizer@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/route-recognizer/-/route-recognizer-0.3.4.tgz#39ab1ffbce1c59e6d2bdca416f0932611e4f3ca3" + integrity sha512-2+MhsfPhvauN1O8KaXpXAOfR/fwe8dnUXVM+xw7yt40lJRfPVQxV6yryZm0cgRvAj5fMF/mdRZbL2ptwbs5i2g== + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"