fix: deduplicate soundfont scan + source label + delete only uploads
- _scan_soundfonts: dict-keyed by base_id to prevent duplicates
- Add 'source' field ('system' | 'upload') to each soundfont entry
- Delete endpoint: only allow deleting upload soundfonts (403 for system)
- Frontend: show (system)/(upload) tag, hide Delete for system fonts
This commit is contained in:
+11
-6
@@ -3459,12 +3459,17 @@ const PluginManagerModal = ({ isOpen, onClose, pluginsData }) => {
|
||||
React.createElement('div', { className: 'text-xs font-semibold text-slate-200' }, sf.display || sf.name || sf.id),
|
||||
React.createElement('div', { className: 'text-[10px] text-zinc-500' }, sf.file || sf.name)
|
||||
)
|
||||
),
|
||||
React.createElement('div', { className: 'flex items-center gap-2' },
|
||||
React.createElement('button', {
|
||||
onClick: () => setSfToDelete(sf),
|
||||
className: 'text-[10px] text-zinc-500 hover:text-red-400 opacity-0 group-hover:opacity-100 transition px-2 py-1'
|
||||
}, 'Delete')
|
||||
), React.createElement('div', {
|
||||
className: 'text-[10px] text-zinc-500'
|
||||
}, sf.file || sf.name, ' ', React.createElement('span', {
|
||||
className: sf.source === 'system' ? 'text-blue-400' : 'text-amber-500'
|
||||
}, sf.source === 'system' ? '(system)' : '(upload)'))
|
||||
),
|
||||
React.createElement('div', { className: 'flex items-center gap-2' },
|
||||
sf.source === 'upload' ? React.createElement('button', {
|
||||
onClick: () => setSfToDelete(sf),
|
||||
className: 'text-[10px] text-zinc-500 hover:text-red-400 opacity-0 group-hover:opacity-100 transition px-2 py-1'
|
||||
}, 'Delete') : React.createElement('span', { className: 'text-[10px] text-zinc-700' }, 'System')
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user