Skip to content
This repository was archived by the owner on Mar 1, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"react": "17.0.1",
"react-dom": "17.0.1",
"react-hook-form": "^6.15.5",
"react-waypoint": "^10.3.0",
"sass": "^1.30.0",
"validator": "^13.7.0"
},
Expand Down
31 changes: 29 additions & 2 deletions src/components/home/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,44 @@ import Designers from '@components/designers';
import SearchBox from '@components/UI/search-box/index';
import styles from '@components/home/home.module.scss';
import { userContext } from '@store/user/user-context';
import { useState } from 'react';
import { membersContext } from '@store/members/members-context';
import { searchMemberContext } from '@store/search-members/searchMembers-context';
import { searchMembers } from '@helper-functions/search-members';
import { useState, useEffect } from 'react';
import { Waypoint } from 'react-waypoint';

import {
BRAND_NAME,
MEMBERS_TITLE,
NEW_MEMBERS_TITLE,
NEW_MEMBERS_TO_SHOW,
} from '@constants/AppConstants';

const Home = () => {
const { showMemberRoleUpdateModal, isSuperUserMode } = userContext();
const {
state: { newMembers: newMembersList },
} = membersContext();
const { searchTerm } = searchMemberContext();
const filterMembersList = searchMembers(newMembersList, searchTerm);

const { query } = useRouter() || { query: { dev: false } };
const { dev } = query;
const [isOptionKey, setIsOptionKey] = useState(false);
const [newMembers, setNewMembers] = useState([]);
const [scrollCount, setScrollCount] = useState(0);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need this scroll count?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need this count to update the array of new members to show after every scroll and we are using it inside fetchNewMembers function.


const fetchNewMembers = () => {
const newMemberArr = searchTerm ? filterMembersList : newMembersList;
const noOfMembersToShow = scrollCount * NEW_MEMBERS_TO_SHOW;
const slicedNewMembersList = newMemberArr.slice(0, noOfMembersToShow);
setNewMembers(slicedNewMembersList);
setScrollCount(scrollCount + 1);
};

useEffect(() => {
fetchNewMembers();
}, [newMembersList]);
Comment on lines +45 to +47
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can add the fetchNewMembers function in the dependency array as pointed out in the warning by GitHub actions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please tell me why we need to provide this function in the dependency array?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the hook is dependent on the function, I thought we can add it. what do you think @sumitd94 @swarajpure ?


return (
<div
Expand Down Expand Up @@ -46,7 +72,8 @@ const Home = () => {
)}
<Members isOptionKey={isOptionKey} />
<h1 className={styles.heading}>{NEW_MEMBERS_TITLE}</h1>
<NewMembers isOptionKey={isOptionKey} />
<NewMembers newMembers={newMembers} isOptionKey={isOptionKey} />
{newMembers && <Waypoint onEnter={fetchNewMembers} />}
</div>
);
};
Expand Down
14 changes: 3 additions & 11 deletions src/components/new-members/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ import React from 'react';
import Card from '@components/member-card';
import PropTypes from 'prop-types';
import styles from '@components/new-members/new-members.module.scss';
import { membersContext } from '@store/members/members-context';
import { searchMemberContext } from '@store/search-members/searchMembers-context';
import { searchMembers } from '@helper-functions/search-members';
import Link from 'next/link';
import { userContext } from '@store/user/user-context';

Expand Down Expand Up @@ -40,16 +37,11 @@ const renderNewUser = (newMember, isOptionKey) => {
return renderNewUserCard(newMember, isOptionKey);
};

const NewMemberList = ({ isOptionKey }) => {
const {
state: { newMembers },
} = membersContext();
const { searchTerm } = searchMemberContext();
const filterMembers = searchMembers(newMembers, searchTerm);
if (newMembers) {
const NewMemberList = ({ isOptionKey, newMembers }) => {
if (newMembers?.length) {
return (
<div className={styles.container}>
{filterMembers.map((newMember) => (
{newMembers.map((newMember) => (
<React.Fragment key={newMember.id}>
{renderNewUser(newMember, isOptionKey)}
</React.Fragment>
Expand Down
1 change: 1 addition & 0 deletions src/constants/AppConstants.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,4 @@ export const HOST_NAME = 'members.realdevsquad.com';
export const TIMEOUT = 1000;
export const KEY_TAB = 9;
export const KEY_ESC = 27;
export const NEW_MEMBERS_TO_SHOW = 10;
20 changes: 20 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4780,6 +4780,11 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0:
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=

"consolidated-events@^1.1.0 || ^2.0.0":
version "2.0.2"
resolved "https://registry.yarnpkg.com/consolidated-events/-/consolidated-events-2.0.2.tgz#da8d8f8c2b232831413d9e190dc11669c79f4a91"
integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==

constants-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
Expand Down Expand Up @@ -10080,6 +10085,11 @@ react-is@^16.13.1, react-is@^16.7.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==

"react-is@^17.0.1 || ^18.0.0":
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==

react-popper-tooltip@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz#329569eb7b287008f04fcbddb6370452ad3f9eac"
Expand Down Expand Up @@ -10147,6 +10157,16 @@ react-textarea-autosize@^8.3.0:
use-composed-ref "^1.0.0"
use-latest "^1.0.0"

react-waypoint@^10.3.0:
version "10.3.0"
resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-10.3.0.tgz#fcc60e86c6c9ad2174fa58d066dc6ae54e3df71d"
integrity sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==
dependencies:
"@babel/runtime" "^7.12.5"
consolidated-events "^1.1.0 || ^2.0.0"
prop-types "^15.0.0"
react-is "^17.0.1 || ^18.0.0"

react@17.0.1:
version "17.0.1"
resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
Expand Down