|
@@ -37,14 +37,15 @@ export default function AdminModerationPage() {
|
|
|
|
|
|
|
|
useEffect(() => { fetchPlaces() }, [fetchPlaces])
|
|
useEffect(() => { fetchPlaces() }, [fetchPlaces])
|
|
|
|
|
|
|
|
- const moderate = async (id: string, action: 'approve' | 'reject' | 'rework') => {
|
|
|
|
|
|
|
+ const moderate = async (id: string, action: 'approve' | 'reject' | 'rework' | 'revoke') => {
|
|
|
const comment = action === 'rework' ? reworkComment : ''
|
|
const comment = action === 'rework' ? reworkComment : ''
|
|
|
try {
|
|
try {
|
|
|
await api.post(`/places/${id}/moderate`, { action, comment })
|
|
await api.post(`/places/${id}/moderate`, { action, comment })
|
|
|
setPlaces((prev) => prev.filter((p) => p.id !== id))
|
|
setPlaces((prev) => prev.filter((p) => p.id !== id))
|
|
|
setActionMsg(
|
|
setActionMsg(
|
|
|
action === 'approve' ? 'Одобрено' :
|
|
action === 'approve' ? 'Одобрено' :
|
|
|
- action === 'reject' ? 'Отклонено' : 'Отправлено на доработку'
|
|
|
|
|
|
|
+ action === 'reject' ? 'Отклонено' :
|
|
|
|
|
+ action === 'revoke' ? 'Отозвано' : 'Отправлено на доработку'
|
|
|
)
|
|
)
|
|
|
setReworkId(null)
|
|
setReworkId(null)
|
|
|
setReworkComment('')
|
|
setReworkComment('')
|
|
@@ -128,6 +129,11 @@ export default function AdminModerationPage() {
|
|
|
>Отклонить</button>
|
|
>Отклонить</button>
|
|
|
</>
|
|
</>
|
|
|
)}
|
|
)}
|
|
|
|
|
+ {filter === 'published' && (
|
|
|
|
|
+ <button onClick={() => moderate(place.id, 'revoke')}
|
|
|
|
|
+ className="rounded-lg bg-orange-600/80 px-4 py-2 text-sm text-white hover:bg-orange-500 transition"
|
|
|
|
|
+ >Отозвать</button>
|
|
|
|
|
+ )}
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
))}
|
|
))}
|