Skip to content

Commit dc1db43

Browse files
authored
Merge pull request #629 from Priyanka0205-CSE/feat/badge-sort-options
feat: add sort options for badge achievements case
2 parents 8f2b452 + 6993612 commit dc1db43

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

src/pages/Profile.jsx

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ export const Profile = () => {
144144
const [updating, setUpdating] = useState(false);
145145

146146
const [isEditModalOpen, setIsEditModalOpen] = useState(false);
147+
const [badgeSort, setBadgeSort] = useState("Default");
147148
const [isEmbedModalOpen, setIsEmbedModalOpen] = useState(false);
148149
const [editName, setEditName] = useState("");
149150
const [editAvatar, setEditAvatar] = useState("");
@@ -2223,8 +2224,33 @@ export const Profile = () => {
22232224
<Award className="w-5 h-5 text-violet-500" />
22242225
</div>
22252226

2226-
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 my-6">
2227-
{systemBadges.map((badge) => {
2227+
{/* Issue #617: Badge sort controls */}
2228+
{isOwnProfile && (
2229+
<div className="flex items-center gap-2 mt-4 mb-2 flex-wrap">
2230+
<span className="text-[10px] font-bold text-slate-400 uppercase tracking-wider">Sort:</span>
2231+
{["Default", "Unlocked First", "Locked First"].map((opt) => (
2232+
<button
2233+
key={opt}
2234+
onClick={() => setBadgeSort(opt)}
2235+
className={`px-2.5 py-1 text-[10px] font-bold rounded-lg border transition-all cursor-pointer ${
2236+
badgeSort === opt
2237+
? "bg-violet-600 border-violet-600 text-white"
2238+
: "border-slate-200 dark:border-slate-800 text-slate-500 hover:bg-slate-100 dark:hover:bg-slate-800"
2239+
}`}
2240+
>
2241+
{opt}
2242+
</button>
2243+
))}
2244+
</div>
2245+
)}
2246+
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 my-4">
2247+
{[...systemBadges].sort((a, b) => {
2248+
const aUnlocked = a.id === "b1" || (a.id === "b2" && gitRankPoints >= 100) || (a.id === "b3" && streak >= 10) || (a.id === "b4" && codingVersePoints >= 100) || (a.id === "b5" && referralPoints >= 1000);
2249+
const bUnlocked = b.id === "b1" || (b.id === "b2" && gitRankPoints >= 100) || (b.id === "b3" && streak >= 10) || (b.id === "b4" && codingVersePoints >= 100) || (b.id === "b5" && referralPoints >= 1000);
2250+
if (badgeSort === "Unlocked First") return aUnlocked === bUnlocked ? 0 : aUnlocked ? -1 : 1;
2251+
if (badgeSort === "Locked First") return aUnlocked === bUnlocked ? 0 : aUnlocked ? 1 : -1;
2252+
return 0;
2253+
}).map((badge) => {
22282254
let unlocked = false;
22292255
if (badge.id === "b1") unlocked = true;
22302256
if (badge.id === "b2" && gitRankPoints >= 100) unlocked = true;

0 commit comments

Comments
 (0)