diff --git a/app/containers/AddProfile/index.js b/app/containers/AddProfile/index.js index edb8fd6..d5d9526 100644 --- a/app/containers/AddProfile/index.js +++ b/app/containers/AddProfile/index.js @@ -7,7 +7,7 @@ import { useHistory } from 'react-router-dom'; import { ROUTES } from 'constants/index'; import UserContext from 'contexts/UserContext'; import { GET_ALL_PROFILES } from 'graphql/queries'; -import { updateQueryGetAllProfiles } from 'graphql/functions'; +import { fetchMoreProfiles } from 'graphql/functions'; const CREATE_PROFILE = gql` mutation CreateProfile( @@ -96,130 +96,17 @@ const AddProfile = () => { ); }; - const handleFetchProfiles = e => { - if (ssidProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMore({ - variables: { context: { ...ssidProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchRadiusProfiles = e => { - if (radiusProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreRadiusProfiles({ - variables: { context: { ...radiusProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchCaptiveProfiles = e => { - if (captiveProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreCaptiveProfiles({ - variables: { context: { ...captiveProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchVenueProfiles = e => { - if (venueProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreVenueProfiles({ - variables: { context: { ...venueProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchRfProfiles = e => { - if (rfProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreRfProfiles({ - variables: { context: { ...rfProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchOperatorProfiles = e => { - if (operatorProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreOperatorProfiles({ - variables: { context: { ...operatorProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchIdProviderProfiles = e => { - if (idProviderProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreIdProviderProfiles({ - variables: { context: { ...idProviderProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; + const handleFetchMoreProfiles = (e, key) => { + if (key === 'radius') fetchMoreProfiles(e, radiusProfiles, fetchMoreRadiusProfiles); + else if (key === 'captive_portal') + fetchMoreProfiles(e, captiveProfiles, fetchMoreCaptiveProfiles); + else if (key === 'rf') fetchMoreProfiles(e, rfProfiles, fetchMoreRfProfiles); + else if (key === 'passpoint_venue') fetchMoreProfiles(e, venueProfiles, fetchMoreVenueProfiles); + else if (key === 'passpoint_operator') + fetchMoreProfiles(e, operatorProfiles, fetchMoreOperatorProfiles); + else if (key === 'passpoint_osu_id_provider') + fetchMoreProfiles(e, idProviderProfiles, fetchMoreIdProviderProfiles); + else fetchMoreProfiles(e, ssidProfiles, fetchMore); }; return ( @@ -232,13 +119,7 @@ const AddProfile = () => { operatorProfiles={operatorProfiles?.getAllProfiles?.items} idProviderProfiles={idProviderProfiles?.getAllProfiles?.items} rfProfiles={rfProfiles?.getAllProfiles?.items} - onFetchMoreProfiles={handleFetchProfiles} - onFetchMoreRadiusProfiles={handleFetchRadiusProfiles} - onFetchMoreCaptiveProfiles={handleFetchCaptiveProfiles} - onFetchMoreVenueProfiles={handleFetchVenueProfiles} - onFetchMoreOperatorProfiles={handleFetchOperatorProfiles} - onFetchMoreIdProviderProfiles={handleFetchIdProviderProfiles} - onFetchMoreRfProfiles={handleFetchRfProfiles} + onFetchMoreProfiles={handleFetchMoreProfiles} /> ); }; diff --git a/app/containers/ProfileDetails/index.js b/app/containers/ProfileDetails/index.js index 4da3ffe..fa830d5 100644 --- a/app/containers/ProfileDetails/index.js +++ b/app/containers/ProfileDetails/index.js @@ -8,7 +8,7 @@ import { ROUTES } from 'constants/index'; import UserContext from 'contexts/UserContext'; import { GET_ALL_PROFILES } from 'graphql/queries'; import { FILE_UPLOAD } from 'graphql/mutations'; -import { updateQueryGetAllProfiles } from 'graphql/functions'; +import { fetchMoreProfiles } from 'graphql/functions'; const GET_PROFILE = gql` query GetProfile($id: ID!) { @@ -185,130 +185,17 @@ const ProfileDetails = () => { }) ); - const handleFetchProfiles = e => { - if (ssidProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMore({ - variables: { context: { ...ssidProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchRadiusProfiles = e => { - if (radiusProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreRadiusProfiles({ - variables: { context: { ...radiusProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchCaptiveProfiles = e => { - if (captiveProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreCaptiveProfiles({ - variables: { context: { ...captiveProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchVenueProfiles = e => { - if (venueProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreVenueProfiles({ - variables: { context: { ...venueProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchRfProfiles = e => { - if (rfProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreRfProfiles({ - variables: { context: { ...rfProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchOperatorProfiles = e => { - if (operatorProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreOperatorProfiles({ - variables: { context: { ...operatorProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; - }; - - const handleFetchIdProviderProfiles = e => { - if (idProviderProfiles.getAllProfiles.context.lastPage) { - return false; - } - - e.persist(); - const { target } = e; - - if (target.scrollTop + target.offsetHeight === target.scrollHeight) { - fetchMoreIdProviderProfiles({ - variables: { context: { ...idProviderProfiles.getAllProfiles.context } }, - updateQuery: updateQueryGetAllProfiles, - }); - } - - return true; + const handleFetchMoreProfiles = (e, key) => { + if (key === 'radius') fetchMoreProfiles(e, radiusProfiles, fetchMoreRadiusProfiles); + else if (key === 'captive_portal') + fetchMoreProfiles(e, captiveProfiles, fetchMoreCaptiveProfiles); + else if (key === 'rf') fetchMoreProfiles(e, rfProfiles, fetchMoreRfProfiles); + else if (key === 'passpoint_venue') fetchMoreProfiles(e, venueProfiles, fetchMoreVenueProfiles); + else if (key === 'passpoint_operator') + fetchMoreProfiles(e, operatorProfiles, fetchMoreOperatorProfiles); + else if (key === 'passpoint_osu_id_provider') + fetchMoreProfiles(e, idProviderProfiles, fetchMoreIdProviderProfiles); + else fetchMoreProfiles(e, ssidProfiles, fetchMore); }; if (loading) { @@ -342,13 +229,7 @@ const ProfileDetails = () => { operatorProfiles={operatorProfiles?.getAllProfiles?.items} idProviderProfiles={idProviderProfiles?.getAllProfiles?.items} fileUpload={handleFileUpload} - onFetchMoreProfiles={handleFetchProfiles} - onFetchMoreRfProfiles={handleFetchRfProfiles} - onFetchMoreRadiusProfiles={handleFetchRadiusProfiles} - onFetchMoreCaptiveProfiles={handleFetchCaptiveProfiles} - onFetchMoreVenueProfiles={handleFetchVenueProfiles} - onFetchMoreOperatorProfiles={handleFetchOperatorProfiles} - onFetchMoreIdProviderProfiles={handleFetchIdProviderProfiles} + onFetchMoreProfiles={handleFetchMoreProfiles} /> ); }; diff --git a/app/graphql/functions.js b/app/graphql/functions.js index 396d1b7..2eec21c 100644 --- a/app/graphql/functions.js +++ b/app/graphql/functions.js @@ -10,3 +10,21 @@ export const updateQueryGetAllProfiles = (previousResult, { fetchMoreResult }) = }, }; }; + +export const fetchMoreProfiles = (e, profile, fetchMore) => { + if (profile.getAllProfiles.context.lastPage) { + return false; + } + + e.persist(); + const { target } = e; + + if (target.scrollTop + target.offsetHeight + 10 >= target.scrollHeight) { + fetchMore({ + variables: { context: { ...profile.getAllProfiles.context } }, + updateQuery: updateQueryGetAllProfiles, + }); + } + + return true; +};