Skip to content

Commit f3d98cf

Browse files
Rupeshiyavaibhavdaren
authored andcommitted
integrated follow/unfollow remove user/admin
1 parent ebec902 commit f3d98cf

File tree

9 files changed

+216
-27
lines changed

9 files changed

+216
-27
lines changed

src/actions/orgAction.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,22 @@ export const registerCommunity = (orgInfo) => async (dispatch) => {
99
dispatch(setRequestStatus(false))
1010
if (res.status === 201) {
1111
dispatch(setRequestStatus(true))
12+
localStorage.setItem('orgId', JSON.stringify(res.data.org._id))
13+
}
14+
} catch (error) {
15+
dispatch(errorHandler(error))
16+
}
17+
}
18+
19+
// REMOVE ADMIN
20+
export const removeAdmin = (userId) => async (dispatch) => {
21+
try {
22+
let orgId = localStorage.getItem('orgId')
23+
const res = await axios.patch(`/org/remove/${orgId}/${userId}`)
24+
dispatch(setRequestStatus(false))
25+
if (res.status === 200) {
26+
dispatch(setRequestStatus(true))
27+
console.log('admin removed ', userId)
1228
}
1329
} catch (error) {
1430
dispatch(errorHandler(error))

src/actions/usersAction.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,59 @@ export const getProfile = () => async (dispatch)=> {
1818
} catch(error) {
1919
dispatch(errorHandler(error))
2020
}
21+
}
22+
23+
export const followUser = (userId) => async (dispatch) => {
24+
try {
25+
let followObj = {
26+
followId: userId
27+
}
28+
console.log('followObj ', followObj)
29+
const res = await axios.patch('/user/follow', followObj)
30+
dispatch(setRequestStatus(false))
31+
if (res.status === 200) {
32+
dispatch(setRequestStatus(true))
33+
console.log('started following ', followObj)
34+
// dispatch({
35+
// type: GET_USER_PROFILE,
36+
// payload: res.data.user,
37+
// });
38+
}
39+
} catch(error) {
40+
dispatch(errorHandler(error))
41+
}
42+
}
43+
44+
export const unFollowUser = (userId) => async (dispatch) => {
45+
try {
46+
let unFollowObj = {
47+
followId: userId
48+
}
49+
console.log('unfollowObj ', unFollowObj)
50+
const res = await axios.patch('/user/unfollow', unFollowObj)
51+
dispatch(setRequestStatus(false))
52+
if (res.status === 200) {
53+
dispatch(setRequestStatus(true))
54+
console.log('unfollowed ', unFollowObj)
55+
// dispatch({
56+
// type: GET_USER_PROFILE,
57+
// payload: res.data.user,
58+
// });
59+
}
60+
} catch(error) {
61+
dispatch(errorHandler(error))
62+
}
63+
}
64+
65+
export const removeUser = (userId) => async (dispatch) => {
66+
try {
67+
const res = await axios.patch(`/user/remove/${userId}`)
68+
dispatch(setRequestStatus(false))
69+
if(res.status === 200) {
70+
dispatch(setRequestStatus(true))
71+
console.log('user removed ', userId)
72+
}
73+
} catch (error) {
74+
dispatch(errorHandler(error))
75+
}
2176
}

src/auth/login-form/login-form.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ class LoginForm extends Component {
2121
};
2222
}
2323
componentWillReceiveProps(nextProps) {
24-
if (nextProps.error?.msg.length > 0) {
25-
this.setState({ error: true });
26-
}
24+
console.log('nextProps ', nextProps)
2725
}
2826

2927
onSubmit = (e) => {

src/css/components/_modals.scss

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,15 @@
168168
text-align: center;
169169
padding: 0px;
170170
}
171+
.modal__unFollowButton {
172+
background: #007bff;
173+
box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.1);
174+
border-radius: 34px;
175+
width: 83px;
176+
height: 4.5vh;
177+
text-align: center;
178+
padding: 0px;
179+
}
171180
.modal__followText {
172181
font-family: $font-family-Inter;
173182
font-style: normal;
@@ -177,6 +186,15 @@
177186

178187
color: #1a73e8;
179188
}
189+
.modal__unFollowText {
190+
font-family: $font-family-Inter;
191+
font-style: normal;
192+
font-weight: $font-weight-normal;
193+
font-size: 12px;
194+
line-height: 15px;
195+
196+
color: #ffff;
197+
}
180198
}
181199
.modal__member {
182200
display: flex;
@@ -246,6 +264,26 @@
246264
color: #eb5757;
247265
}
248266
}
267+
.modal__removed__followButton {
268+
border: 1px solid #eb5757;
269+
box-sizing: border-box;
270+
box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.1);
271+
border-radius: 34px;
272+
background: #eb5757;
273+
width: 83px;
274+
height: 4.5vh;
275+
text-align: center;
276+
padding: 0px;
277+
278+
.remove_followText {
279+
font-family: Inter;
280+
font-style: normal;
281+
font-weight: 500;
282+
font-size: 12px;
283+
line-height: 15px;
284+
color: #ffff;
285+
}
286+
}
249287
}
250288
.add__member {
251289
.add__member__form {

src/user/dashboard/portfolio/portfolio.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Followers from "../../profile/popups/Followers";
55
import Admins from "../../organization/popups/Admins";
66
import { connect } from 'react-redux'
77
import { getMembers, getPersonalOverview } from '../../../actions/insightAction'
8-
import { getProfile } from '../../../actions/usersAction'
8+
import { getProfile, followUser, unFollowUser } from '../../../actions/usersAction'
99

1010
class Portfolio extends Component {
1111
constructor(props) {
@@ -41,7 +41,9 @@ class Portfolio extends Component {
4141
let info = insight.personalOverview
4242
let followers = user.userProfile.followers
4343
let followings = user.userProfile.followings;
44-
this.setState({ members: members, admins: admins, personalInfo: info, followers: followers, followings: followings })
44+
this.setState({ members: members, admins: admins, personalInfo: info, followers: followers, followings: followings }, () => {
45+
console.log('state ', this.state);
46+
})
4547
}
4648

4749
showMembers = () => {
@@ -83,7 +85,7 @@ class Portfolio extends Component {
8385
<h1><b>{followers?.length || 0}</b></h1>
8486
<h3>Followers</h3>
8587
</div>
86-
<Followers show={this.state.followersList} onHide={this.closeFollowersList} followers={followers}/>
88+
<Followers show={this.state.followersList} onHide={this.closeFollowersList} followers={followers} followings={followings} />
8789
<div className="item">
8890
<h1><b>{personalInfo.events || 0}</b></h1>
8991
<h3>Events Organized</h3>

src/user/organization/popups/Admins.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/* eslint-disable no-unused-expressions */
22
import React, { Component } from "react";
33
import { Modal, Button, Row, Col, Image, Form } from "react-bootstrap";
4+
import { connect } from 'react-redux'
5+
import { removeAdmin } from '../../../actions/orgAction'
46
import logo from "../../../svgs/logo-image.jpg";
57

68
class Admins extends Component {
@@ -11,9 +13,10 @@ class Admins extends Component {
1113
admins: []
1214
}
1315
}
14-
onRemoveClick = (index) => {
15-
console.log('Removing admin!', index);
16+
onRemoveClick = (userId) => {
17+
console.log('Removing admin!', userId);
1618
// SEND REQUEST TO REMOVE USER WITH ID = INDEX FROM ADMINISTRATORs LIST
19+
this.props.removeAdmin(userId)
1720
}
1821

1922
componentWillReceiveProps(nextProps) {
@@ -88,4 +91,12 @@ class Admins extends Component {
8891
);
8992
}
9093
}
91-
export default Admins;
94+
95+
// map state to props
96+
const mapStateToProps = (state) => ({
97+
auth: state.auth,
98+
error: state.error,
99+
status: state.status
100+
})
101+
102+
export default connect(mapStateToProps, { removeAdmin })(Admins)

src/user/organization/popups/Members.js

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import React, { Component } from "react";
22
import { Modal, Button, Row, Col, Image, Form } from "react-bootstrap";
3+
import { connect } from 'react-redux';
4+
import { removeUser } from '../../../actions/usersAction'
35
import logo from "../../../svgs/logo-image.jpg";
46

57
class Members extends Component {
@@ -11,17 +13,20 @@ class Members extends Component {
1113
}
1214
}
1315

14-
onRemoveClick = (index) => {
15-
console.log('Blocking !', index);
16+
onRemoveClick = (userId) => {
17+
console.log('Removing !', userId);
1618
// SEND REQUEST TO REMOVE USER WITH ID = INDEX
19+
this.props.removeUser(userId)
1720
}
1821

1922
componentWillReceiveProps(nextProps) {
2023
let membersInfo = []
2124
nextProps.members.forEach((member) => {
22-
membersInfo.push({ name: member.name.firstName + ' ' + member.name.lastName, desc: member.info.about.designation || 'UI/UX' , _id: member._id })
25+
membersInfo.push({ name: member.name.firstName + ' ' + member.name.lastName, desc: member.info.about.designation || 'UI/UX' , _id: member._id, isRemoved: member?.isRemoved || false })
26+
})
27+
this.setState({ members: membersInfo }, () => {
28+
console.log('members ', this.state)
2329
})
24-
this.setState({ members: membersInfo })
2530
}
2631

2732
render() {
@@ -37,10 +42,15 @@ class Members extends Component {
3742
</div>
3843
<div className="member__btn__container">
3944
<Button
40-
className="btn-danger modal__remove__followButton"
45+
className = {
46+
Boolean(item.isRemoved === true) ? 'modal__removed__followButton' :
47+
'modal__remove__followButton'
48+
}
4149
onClick={this.onRemoveClick.bind(this, item._id)}
4250
>
43-
<span className="remove_followText">Remove</span>
51+
<span className="remove_followText">
52+
{Boolean(item.isRemoved === true) ? (<span>Removed</span>) : (<span>Remove</span>)}
53+
</span>
4454
</Button>
4555
</div>
4656
</Row>
@@ -88,4 +98,12 @@ class Members extends Component {
8898
);
8999
}
90100
}
91-
export default Members;
101+
// map state to props
102+
const mapStateToProps = (state) => ({
103+
auth: state.auth,
104+
error: state.error,
105+
user: state.user,
106+
status: state.status
107+
})
108+
109+
export default connect(mapStateToProps, { removeUser })(Members);

0 commit comments

Comments
 (0)