Remove select all checkbox and bulk remove from friends panel

This commit is contained in:
Sterling Archer
2026-06-20 21:57:38 -07:00
parent 346279a141
commit 8d12728b7c
2 changed files with 4 additions and 15 deletions
Vendored
BIN
View File
Binary file not shown.
+4 -15
View File
@@ -457,20 +457,9 @@
<div style="margin-top:28px"> <div style="margin-top:28px">
<div class="section-header"> <div class="section-header">
<div class="section-title">Manage Friends</div> <div class="section-title">Manage Friends</div>
<div style="display:flex;gap:8px;align-items:center">
<button class="btn btn-danger btn-sm" id="bulk-remove-btn" onclick="bulkRemoveFriends()" style="display:none;width:auto">Remove Selected</button>
</div>
</div> </div>
<div style="display:flex;gap:8px;margin-bottom:12px"> <div style="display:flex;gap:8px;margin-bottom:12px">
<input type="text" id="friends-search" placeholder="Search friends…" style="margin-bottom:0;flex:1" oninput="renderManageFriends()"> <input type="text" id="friends-search" placeholder="Search friends…" style="margin-bottom:0;flex:1" oninput="renderManageFriends()">
<select id="friends-sort" onchange="renderManageFriends()">
<option value="date">Date Added</option>
<option value="name">Name</option>
</select>
</div>
<div style="display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:0 2px">
<input type="checkbox" id="select-all-friends" onchange="toggleSelectAll(this.checked)" style="width:18px;height:18px;accent-color:var(--teal);cursor:pointer;flex-shrink:0;margin-bottom:0">
<label for="select-all-friends" style="font-size:13px;color:var(--muted);cursor:pointer;user-select:none;text-transform:none;letter-spacing:0">Select all</label>
</div> </div>
<div id="friends-manage-list"></div> <div id="friends-manage-list"></div>
<div id="friends-show-more" style="display:none;text-align:center;margin-top:8px"> <div id="friends-show-more" style="display:none;text-align:center;margin-top:8px">
@@ -1054,7 +1043,6 @@ function renderManageFriends() {
} }
const search = (document.getElementById('friends-search')?.value || '').toLowerCase(); const search = (document.getElementById('friends-search')?.value || '').toLowerCase();
const sortBy = document.getElementById('friends-sort')?.value || 'date';
const mutualUids = getMutualFriendUids(); const mutualUids = getMutualFriendUids();
let filtered = mutualUids.filter(uid => { let filtered = mutualUids.filter(uid => {
@@ -1063,8 +1051,7 @@ function renderManageFriends() {
return !search || name.includes(search) || display.includes(search); return !search || name.includes(search) || display.includes(search);
}); });
if (sortBy === 'name') filtered.sort((a,b) => getFriendDisplayName(a).localeCompare(getFriendDisplayName(b))); filtered.sort((a,b) => (friendsData[b]?.addedAt?.toMillis?.() || 0) - (friendsData[a]?.addedAt?.toMillis?.() || 0));
else filtered.sort((a,b) => (friendsData[b]?.addedAt?.toMillis?.() || 0) - (friendsData[a]?.addedAt?.toMillis?.() || 0));
const fml = document.getElementById('friends-manage-list'); const fml = document.getElementById('friends-manage-list');
if (filtered.length === 0) { if (filtered.length === 0) {
@@ -1081,7 +1068,6 @@ function renderManageFriends() {
const dateStr = addedAt ? addedAt.toLocaleDateString('en-US', {month:'short',day:'numeric',year:'numeric'}) : '—'; const dateStr = addedAt ? addedAt.toLocaleDateString('en-US', {month:'short',day:'numeric',year:'numeric'}) : '—';
return ` return `
<div class="friend-row" id="fr-${uid}"> <div class="friend-row" id="fr-${uid}">
<input type="checkbox" id="chk-${uid}" onclick="onFriendCheck(event,'${uid}')">
<span class="fr-date">${dateStr}</span> <span class="fr-date">${dateStr}</span>
${avatarHtml(friendProfiles[uid]||{}, 36)} ${avatarHtml(friendProfiles[uid]||{}, 36)}
<div class="fr-info" onclick="openFriendProfile('${uid}')"> <div class="fr-info" onclick="openFriendProfile('${uid}')">
@@ -1143,8 +1129,11 @@ window.bulkRemoveFriends = async function() {
async function doRemoveFriend(friendUid) { async function doRemoveFriend(friendUid) {
const idToken = await currentUser.getIdToken(); const idToken = await currentUser.getIdToken();
await fetch(`${window.STEPMATES_CONFIG.friendRequestUrl}?action=remove&fromUid=${currentUser.uid}&toUid=${friendUid}&idToken=${idToken}`); await fetch(`${window.STEPMATES_CONFIG.friendRequestUrl}?action=remove&fromUid=${currentUser.uid}&toUid=${friendUid}&idToken=${idToken}`);
if (friendsData[friendUid]) friendsData[friendUid].enabled = false;
delete friendProfiles[friendUid]; delete friendProfiles[friendUid];
delete friendSteps[friendUid]; delete friendSteps[friendUid];
renderLeaderboard();
renderManageFriends();
} }
window.approveFriend = async function(uid) { window.approveFriend = async function(uid) {