Add duplicate and clear submissions functionality for challenge chains; implement corresponding dialogs and API endpoints, enhancing user experience and task management. Update localization for new features in English and Russian.
This commit is contained in:
@@ -18,6 +18,8 @@ import { LoadingSpinner } from '../../components/LoadingSpinner'
|
||||
import { ErrorAlert } from '../../components/ErrorAlert'
|
||||
import { EmptyState } from '../../components/EmptyState'
|
||||
import { ConfirmDialog } from '../../components/ConfirmDialog'
|
||||
import { DuplicateChainDialog } from '../../components/DuplicateChainDialog'
|
||||
import { ClearSubmissionsDialog } from '../../components/ClearSubmissionsDialog'
|
||||
import type { ChallengeChain } from '../../types/challenge'
|
||||
import { toaster } from '../../components/ui/toaster'
|
||||
|
||||
@@ -29,6 +31,8 @@ export const ChainsListPage: React.FC = () => {
|
||||
|
||||
const [searchQuery, setSearchQuery] = useState('')
|
||||
const [chainToDelete, setChainToDelete] = useState<ChallengeChain | null>(null)
|
||||
const [chainToDuplicate, setChainToDuplicate] = useState<ChallengeChain | null>(null)
|
||||
const [chainToClearSubmissions, setChainToClearSubmissions] = useState<ChallengeChain | null>(null)
|
||||
const [updatingChainId, setUpdatingChainId] = useState<string | null>(null)
|
||||
const [updateChain] = useUpdateChainMutation()
|
||||
|
||||
@@ -182,6 +186,21 @@ export const ChainsListPage: React.FC = () => {
|
||||
>
|
||||
{t('challenge.admin.chains.list.button.edit')}
|
||||
</Button>
|
||||
<Button
|
||||
size="sm"
|
||||
variant="ghost"
|
||||
onClick={() => setChainToDuplicate(chain)}
|
||||
>
|
||||
{t('challenge.admin.chains.duplicate.button')}
|
||||
</Button>
|
||||
<Button
|
||||
size="sm"
|
||||
variant="ghost"
|
||||
colorPalette="red"
|
||||
onClick={() => setChainToClearSubmissions(chain)}
|
||||
>
|
||||
{t('challenge.admin.chains.clear.submissions.button')}
|
||||
</Button>
|
||||
<Button
|
||||
size="sm"
|
||||
variant="ghost"
|
||||
@@ -208,6 +227,18 @@ export const ChainsListPage: React.FC = () => {
|
||||
confirmLabel={t('challenge.admin.chains.delete.confirm.button')}
|
||||
isLoading={isDeleting}
|
||||
/>
|
||||
|
||||
<DuplicateChainDialog
|
||||
isOpen={!!chainToDuplicate}
|
||||
onClose={() => setChainToDuplicate(null)}
|
||||
chain={chainToDuplicate}
|
||||
/>
|
||||
|
||||
<ClearSubmissionsDialog
|
||||
isOpen={!!chainToClearSubmissions}
|
||||
onClose={() => setChainToClearSubmissions(null)}
|
||||
chain={chainToClearSubmissions}
|
||||
/>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user