Skip to content

Commit

Permalink
feat(sanity): use Actions API when unpublishing documents (#6094)
Browse files Browse the repository at this point in the history
* feat(sanity): use Actions API when unpublishing documents

* feat(core): set `skipCrossDatasetReferenceValidation` parameter when unpublishing documents
  • Loading branch information
juice49 committed Apr 9, 2024
1 parent 128a569 commit 1abaddb
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 0 deletions.
Expand Up @@ -34,6 +34,7 @@ import {restore} from './operations/restore'
import {unpublish} from './operations/unpublish'
import {patch as serverPatch} from './serverOperations/patch'
import {publish as serverPublish} from './serverOperations/publish'
import {unpublish as serverUnpublish} from './serverOperations/unpublish'

interface ExecuteArgs {
operationName: keyof OperationsAPI
Expand Down Expand Up @@ -63,6 +64,7 @@ const serverOperationImpls = {
...operationImpls,
patch: serverPatch,
publish: serverPublish,
unpublish: serverUnpublish,
}

const execute = (
Expand Down
Expand Up @@ -3,6 +3,7 @@ import {emitOperation} from '../operationEvents'
import {publish} from '../operations/publish'
import {patch as serverPatch} from '../serverOperations/patch'
import {publish as serverPublish} from '../serverOperations/publish'
import {unpublish as serverUnpublish} from '../serverOperations/unpublish'
import {commit} from './commit'
import {del} from './delete'
import {discardChanges} from './discardChanges'
Expand Down Expand Up @@ -71,6 +72,7 @@ export function createOperationsAPI(args: OperationArgs): OperationsAPI {
...operationsAPI,
patch: wrap('patch', serverPatch, args),
publish: wrap('publish', serverPublish, args),
unpublish: wrap('unpublish', serverUnpublish, args),
}
}
return operationsAPI
Expand Down
@@ -0,0 +1,33 @@
import {type OperationImpl} from '../operations/types'
import {isLiveEditEnabled} from '../utils/isLiveEditEnabled'

type DisabledReason = 'LIVE_EDIT_ENABLED' | 'NOT_PUBLISHED'

export const unpublish: OperationImpl<[], DisabledReason> = {
disabled: ({schema, snapshots, typeName}) => {
if (isLiveEditEnabled(schema, typeName)) {
return 'LIVE_EDIT_ENABLED'
}
return snapshots.published ? false : 'NOT_PUBLISHED'
},
execute: ({client: globalClient, idPair}) => {
const vXClient = globalClient.withConfig({apiVersion: 'X'})
const {dataset} = globalClient.config()

return vXClient.observable.request({
url: `/data/actions/${dataset}`,
method: 'post',
query: {skipCrossDatasetReferenceValidation: 'true'},
tag: 'document.unpublish',
body: {
actions: [
{
actionType: 'sanity.action.document.unpublish',
draftId: idPair.draftId,
publishedId: idPair.publishedId,
},
],
},
})
},
}

0 comments on commit 1abaddb

Please sign in to comment.