fix: use URLSearchParams for form submission (#412)

axum's Form extractor expects application/x-www-form-urlencoded,
but FormData sends multipart/form-data, causing 415 Unsupported Media Type.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>

authored by zzstoatzz.io Claude and committed by GitHub 99352dce f069818b

Changed files
+8 -7
moderation
static
+8 -7
moderation/static/admin.js
··· 99 btn.disabled = true; 100 btn.textContent = '...'; 101 102 - // Submit via fetch 103 - const formData = new FormData(); 104 - formData.append('uri', uri); 105 - formData.append('val', val); 106 - formData.append('reason', reason); 107 108 fetch('/admin/resolve-htmx', { 109 method: 'POST', 110 headers: { 111 - 'X-Moderation-Key': currentToken 112 }, 113 - body: formData 114 }) 115 .then(response => { 116 if (response.ok) {
··· 99 btn.disabled = true; 100 btn.textContent = '...'; 101 102 + // Submit via fetch (URLSearchParams for application/x-www-form-urlencoded) 103 + const params = new URLSearchParams(); 104 + params.append('uri', uri); 105 + params.append('val', val); 106 + params.append('reason', reason); 107 108 fetch('/admin/resolve-htmx', { 109 method: 'POST', 110 headers: { 111 + 'X-Moderation-Key': currentToken, 112 + 'Content-Type': 'application/x-www-form-urlencoded' 113 }, 114 + body: params 115 }) 116 .then(response => { 117 if (response.ok) {