mirror of
https://github.com/SrIzan10/hc-harbor.git
synced 2026-05-01 10:45:21 +00:00
57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
import { Controller } from "@hotwired/stimulus"
|
|
|
|
export default class extends Controller {
|
|
static targets = ["select"]
|
|
|
|
connect() {
|
|
this.selectTarget.addEventListener('change', this.handleChange.bind(this))
|
|
}
|
|
|
|
async handleChange(event) {
|
|
const userId = event.target.dataset.userId
|
|
const trustLevel = event.target.value
|
|
|
|
if (!userId) {
|
|
console.error('No user ID found in dataset')
|
|
event.target.value = event.target.dataset.currentTrustLevel
|
|
alert('Error: No user ID found. Please try again.')
|
|
return
|
|
}
|
|
|
|
try {
|
|
console.log('Updating trust level for user:', userId, 'to:', trustLevel)
|
|
const url = new URL(`/users/${userId}/update_trust_level`, window.location.origin)
|
|
const response = await fetch(url, {
|
|
method: 'PATCH',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content
|
|
},
|
|
body: JSON.stringify({ trust_level: trustLevel })
|
|
})
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`Failed to update trust level: ${response.status} ${response.statusText}`)
|
|
}
|
|
|
|
// Update the current trust level in the dataset
|
|
event.target.dataset.currentTrustLevel = trustLevel
|
|
|
|
// Update the leaderboard entry's omitted class
|
|
const leaderboardEntry = event.target.closest('.leaderboard-entry')
|
|
if (leaderboardEntry) {
|
|
if (trustLevel === 'untrusted') {
|
|
leaderboardEntry.classList.add('omitted')
|
|
} else {
|
|
leaderboardEntry.classList.remove('omitted')
|
|
}
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('Error updating trust level:', error)
|
|
// Revert the select to its previous value
|
|
event.target.value = event.target.dataset.currentTrustLevel
|
|
alert('Failed to update trust level. Please try again.')
|
|
}
|
|
}
|
|
}
|