Skip to content

Commit b9d8650

Browse files
committed
Moved user level logic to helper file
1 parent c4edce1 commit b9d8650

3 files changed

Lines changed: 71 additions & 123 deletions

File tree

client/src/components/DashboardUserInfo/DashboardUserInfo.jsx

Lines changed: 4 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,9 @@ import {
44
CircularProgressbarWithChildren,
55
buildStyles,
66
} from 'react-circular-progressbar';
7-
import { checkLevel } from '../../utils/helpers';
7+
import { checkLevel, checkLevelBadge } from '../../utils/helpers';
88

99
const DashboardUserInfo = ({ data, modalBio, image }) => {
10-
const level2 = 100;
11-
const level3 = 250;
12-
const level4 = 500;
13-
const level5 = 800;
14-
const level6 = 1200;
15-
const level7 = 1650;
16-
const level8 = 2100;
17-
const level9 = 2700;
18-
const level10 = 3200;
19-
2010
let averageWPM;
2111

2212
if (data.meScores.length !== 0) {
@@ -30,8 +20,6 @@ const DashboardUserInfo = ({ data, modalBio, image }) => {
3020
averageWPM = Math.floor(averageWPM);
3121
}
3222

33-
let userLevel = 1;
34-
let levelProgress;
3523
let totalXP = 0;
3624
if (data) {
3725
data.meBadges.badges.map((badge) => {
@@ -40,54 +28,9 @@ const DashboardUserInfo = ({ data, modalBio, image }) => {
4028
});
4129
}
4230

43-
if (totalXP < level2) {
44-
levelProgress = (totalXP / level2) * 100;
45-
} else if (totalXP >= level2 && totalXP < level3) {
46-
userLevel = 2;
47-
let diff = level3 - level2;
48-
let diff2 = totalXP - level2;
49-
levelProgress = (diff2 / diff) * 100;
50-
} else if (totalXP >= level3 && totalXP < level4) {
51-
userLevel = 3;
52-
let diff = level4 - level3;
53-
let diff2 = totalXP - level3;
54-
levelProgress = (diff2 / diff) * 100;
55-
} else if (totalXP >= level4 && totalXP < level5) {
56-
userLevel = 4;
57-
let diff = level5 - level4;
58-
let diff2 = totalXP - level4;
59-
levelProgress = (diff2 / diff) * 100;
60-
} else if (totalXP >= level5 && totalXP < level6) {
61-
userLevel = 5;
62-
let diff = level6 - level5;
63-
let diff2 = totalXP - level5;
64-
levelProgress = (diff2 / diff) * 100;
65-
} else if (totalXP >= level6 && totalXP < level7) {
66-
userLevel = 6;
67-
let diff = level7 - level6;
68-
let diff2 = totalXP - level6;
69-
levelProgress = (diff2 / diff) * 100;
70-
} else if (totalXP >= level7 && totalXP < level8) {
71-
userLevel = 7;
72-
let diff = level8 - level7;
73-
let diff2 = totalXP - level7;
74-
levelProgress = (diff2 / diff) * 100;
75-
} else if (totalXP >= level8 && totalXP < level9) {
76-
userLevel = 8;
77-
let diff = level9 - level8;
78-
let diff2 = totalXP - level8;
79-
levelProgress = (diff2 / diff) * 100;
80-
} else if (totalXP >= level9 && totalXP < level10) {
81-
userLevel = 9;
82-
let diff = level10 - level9;
83-
let diff2 = totalXP - level9;
84-
levelProgress = (diff2 / diff) * 100;
85-
} else if (totalXP >= level10) {
86-
userLevel = 10;
87-
levelProgress = null;
88-
}
89-
90-
let levelIcon = checkLevel(userLevel);
31+
let userLevel = checkLevel(totalXP).userLevel
32+
let levelProgress = checkLevel(totalXP).levelProgress
33+
let levelIcon = checkLevelBadge(userLevel);
9134

9235
return (
9336
<section className="w-[200px]">

client/src/components/ProfileUserInfo/ProfileUserInfo.jsx

Lines changed: 5 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,16 @@
11
import defaultPhoto from '../../assets/images/no-profile-picture.svg';
2-
import { checkLevel } from '../../utils/helpers';
2+
import { checkLevel, checkLevelBadge } from '../../utils/helpers';
33
import {
44
CircularProgressbarWithChildren,
55
buildStyles,
66
} from 'react-circular-progressbar';
77

88
const ProfileUserInfo = ({ data }) => {
9-
const level2 = 100;
10-
const level3 = 250;
11-
const level4 = 500;
12-
const level5 = 800;
13-
const level6 = 1200;
14-
const level7 = 1650;
15-
const level8 = 2100;
16-
const level9 = 2700;
17-
const level10 = 3200;
18-
19-
let userLevel = 1;
20-
let levelProgress;
219
let totalXP = 0;
2210
if (data) {
2311
data.user.badges.map((badge) => {
2412
totalXP += badge.xp;
13+
return totalXP;
2514
});
2615
}
2716

@@ -37,54 +26,9 @@ const ProfileUserInfo = ({ data }) => {
3726
averageWPM = Math.floor(averageWPM);
3827
}
3928

40-
if (totalXP < level2) {
41-
levelProgress = (totalXP / level2) * 100;
42-
} else if (totalXP >= level2 && totalXP < level3) {
43-
userLevel = 2;
44-
let diff = level3 - level2;
45-
let diff2 = totalXP - level2;
46-
levelProgress = (diff2 / diff) * 100;
47-
} else if (totalXP >= level3 && totalXP < level4) {
48-
userLevel = 3;
49-
let diff = level4 - level3;
50-
let diff2 = totalXP - level3;
51-
levelProgress = (diff2 / diff) * 100;
52-
} else if (totalXP >= level4 && totalXP < level5) {
53-
userLevel = 4;
54-
let diff = level5 - level4;
55-
let diff2 = totalXP - level4;
56-
levelProgress = (diff2 / diff) * 100;
57-
} else if (totalXP >= level5 && totalXP < level6) {
58-
userLevel = 5;
59-
let diff = level6 - level5;
60-
let diff2 = totalXP - level5;
61-
levelProgress = (diff2 / diff) * 100;
62-
} else if (totalXP >= level6 && totalXP < level7) {
63-
userLevel = 6;
64-
let diff = level7 - level6;
65-
let diff2 = totalXP - level6;
66-
levelProgress = (diff2 / diff) * 100;
67-
} else if (totalXP >= level7 && totalXP < level8) {
68-
userLevel = 7;
69-
let diff = level8 - level7;
70-
let diff2 = totalXP - level7;
71-
levelProgress = (diff2 / diff) * 100;
72-
} else if (totalXP >= level8 && totalXP < level9) {
73-
userLevel = 8;
74-
let diff = level9 - level8;
75-
let diff2 = totalXP - level8;
76-
levelProgress = (diff2 / diff) * 100;
77-
} else if (totalXP >= level9 && totalXP < level10) {
78-
userLevel = 9;
79-
let diff = level10 - level9;
80-
let diff2 = totalXP - level9;
81-
levelProgress = (diff2 / diff) * 100;
82-
} else if (totalXP >= level10) {
83-
userLevel = 10;
84-
levelProgress = null;
85-
}
86-
87-
let levelIcon = checkLevel(userLevel);
29+
let userLevel = checkLevel(totalXP).userLevel
30+
let levelProgress = checkLevel(totalXP).levelProgress
31+
let levelIcon = checkLevelBadge(userLevel);
8832

8933
return (
9034
<section className="w-[200px]">

client/src/utils/helpers.js

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ export const checkAge = (val) => {
111111
}
112112
};
113113

114-
export const checkLevel = (val) => {
114+
export const checkLevelBadge = (val) => {
115115
switch (val) {
116116
case 1:
117117
return '/assets/level-icons/level-1.png';
@@ -136,4 +136,65 @@ export const checkLevel = (val) => {
136136
default:
137137
return null;
138138
}
139+
};
140+
141+
export const checkLevel = (val) => {
142+
const level2 = 100;
143+
const level3 = 250;
144+
const level4 = 500;
145+
const level5 = 800;
146+
const level6 = 1200;
147+
const level7 = 1650;
148+
const level8 = 2100;
149+
const level9 = 2700;
150+
const level10 = 3200;
151+
let userLevel, levelProgress
152+
if (val < level2) {
153+
userLevel = 1
154+
levelProgress = (val / level2) * 100;
155+
} else if (val >= level2 && val < level3) {
156+
userLevel = 2;
157+
let diff = level3 - level2;
158+
let diff2 = val - level2;
159+
levelProgress = (diff2 / diff) * 100;
160+
} else if (val >= level3 && val < level4) {
161+
userLevel = 3;
162+
let diff = level4 - level3;
163+
let diff2 = val - level3;
164+
levelProgress = (diff2 / diff) * 100;
165+
} else if (val >= level4 && val < level5) {
166+
userLevel = 4;
167+
let diff = level5 - level4;
168+
let diff2 = val - level4;
169+
levelProgress = (diff2 / diff) * 100;
170+
} else if (val >= level5 && val < level6) {
171+
userLevel = 5;
172+
let diff = level6 - level5;
173+
let diff2 = val - level5;
174+
levelProgress = (diff2 / diff) * 100;
175+
} else if (val >= level6 && val < level7) {
176+
userLevel = 6;
177+
let diff = level7 - level6;
178+
let diff2 = val - level6;
179+
levelProgress = (diff2 / diff) * 100;
180+
} else if (val >= level7 && val < level8) {
181+
userLevel = 7;
182+
let diff = level8 - level7;
183+
let diff2 = val - level7;
184+
levelProgress = (diff2 / diff) * 100;
185+
} else if (val >= level8 && val < level9) {
186+
userLevel = 8;
187+
let diff = level9 - level8;
188+
let diff2 = val - level8;
189+
levelProgress = (diff2 / diff) * 100;
190+
} else if (val >= level9 && val < level10) {
191+
userLevel = 9;
192+
let diff = level10 - level9;
193+
let diff2 = val - level9;
194+
levelProgress = (diff2 / diff) * 100;
195+
} else {
196+
userLevel = 10;
197+
levelProgress = null;
198+
}
199+
return {levelProgress: levelProgress, userLevel: userLevel}
139200
};

0 commit comments

Comments
 (0)