allow mark as read and add labels bulk actions

This commit is contained in:
Hongbo Wu
2023-06-08 13:05:30 +08:00
parent 1af845e4e5
commit de3623d3f2
5 changed files with 197 additions and 201 deletions

View File

@ -31,6 +31,7 @@ import {
BulkActionError,
BulkActionErrorCode,
BulkActionSuccess,
BulkActionType,
ContentReader,
CreateArticleError,
CreateArticleErrorCode,
@ -73,7 +74,7 @@ import {
UpdatesSinceSuccess,
} from '../../generated/graphql'
import { createPageSaveRequest } from '../../services/create_page_save_request'
import { createLabels } from '../../services/labels'
import { createLabels, getLabelsByIds } from '../../services/labels'
import { parsedContentToPage } from '../../services/save_page'
import { traceAs } from '../../tracing'
import { Merge } from '../../util'
@ -1097,26 +1098,43 @@ export const bulkActionResolver = authorized<
BulkActionSuccess,
BulkActionError,
MutationBulkActionArgs
>(async (_parent, { action }, { claims: { uid }, log }) => {
>(async (_parent, { query, action, labelIds }, { claims: { uid }, log }) => {
log.info('bulkActionResolver')
if (!uid) {
log.error('bulkActionResolver', { error: 'Unauthorized' })
return { errorCodes: [BulkActionErrorCode.Unauthorized] }
}
analytics.track({
userId: uid,
event: 'BulkAction',
properties: {
env: env.server.apiEnv,
action,
},
})
// TODO: get search filters from query
if (!uid) {
log.log('bulkActionResolver', { error: 'Unauthorized' })
return { errorCodes: [BulkActionErrorCode.Unauthorized] }
}
if (!query) {
log.log('bulkActionResolver', { error: 'no query' })
return { errorCodes: [BulkActionErrorCode.BadRequest] }
}
// get labels if needed
let labels = undefined
if (action === BulkActionType.AddLabels) {
if (!labelIds || labelIds.length === 0) {
return { errorCodes: [BulkActionErrorCode.BadRequest] }
}
labels = await getLabelsByIds(uid, labelIds)
}
// parse query
const searchQuery = parseSearchQuery(query)
// start a task to update pages
const taskId = await updatePagesAsync(uid, action)
const taskId = await updatePagesAsync(uid, action, searchQuery, labels)
return { success: !!taskId }
})