Files
huly-platform/plugins/questions-resources/src/actions/questionMoveUpAction.ts
T
2024-06-03 19:55:54 +04:00

29 lines
973 B
TypeScript

//
// Copyright @ 2024 Hardcore Engineering Inc.
//
import type { Question } from '@hcengineering/questions'
import { getClient } from '@hcengineering/presentation'
import { canUpdateQuestion, findPreviousQuestion, updateQuestion } from '../utils'
import { focusActionWithAvailability } from './ActionWithAvailability'
export const questionMoveUpAction = focusActionWithAvailability<Question<unknown>>(
async (object: Question<unknown>) => {
if (!canUpdateQuestion(object)) {
return false
}
const prevQuestion = await findPreviousQuestion(object)
return prevQuestion !== undefined
},
async (object: Question<unknown>) => {
const prevQuestion = await findPreviousQuestion(object)
if (prevQuestion === undefined) {
return
}
const ops = getClient().apply('up')
await updateQuestion(ops, object, { rank: prevQuestion.rank })
await updateQuestion(ops, prevQuestion, { rank: object.rank })
await ops.commit()
}
)