🔮 Sanity Create is here. Writing is reinvented. Try now, no developer setup

Slug Generating Document Action - How to Invalidate Fields or Display an Error

14 replies
Last updated: Mar 13, 2021
I am improving my
generating document action, which replaces the default publish action. Can someone help me understand what my options are for invalidating fields or displaying an error, and then aborting a publish from within my custom publish action? Is there a place in the documentation where I may have missed this? Thanks!
Mar 13, 2021, 12:27 AM
Does this help? https://www.sanity.io/docs/validation#fcadf15930b3 looks like validation isn't very feature rich at the moment. There is a validateDocument function in sanity if you search GitHub though.
Mar 13, 2021, 8:37 PM
user L
, I don't think that helps, unfortunately.
I am trying to ensure that the slug I am setting will be unique and I am doing that within the publish action. I would expect there to be a way to "cancel" or "abort" the publish action.
Mar 13, 2021, 8:42 PM
So your slug has a unique validation on it and when you patch it the document still gets saved?
Mar 13, 2021, 8:58 PM
user L
in my document action, I can choose to publish the document or not. I'm choosing not to, when the slug is not unique. It is at that point that I'd like to send a message to the UI stating why the document cannot be published.
Mar 13, 2021, 9:00 PM
If you throw an error does it appear in a red box near the publish button? somehow the intl-input plugin does it when the doc references another one like that.
Mar 13, 2021, 9:05 PM
This enforced document linking and shows an error after the attempted action https://github.com/LiamMartens/sanity-plugin-intl-input
Mar 13, 2021, 9:06 PM
I will look into that plugin, if I throw an error I see it in the console but not in a popup of any kind.
Mar 13, 2021, 9:09 PM
Ah ok. Wonder if you need to push to the toast module in sanity?
Mar 13, 2021, 9:14 PM
Ill try it out myself on Monday as I'm interested now.
Mar 13, 2021, 9:14 PM
hmmm. I like the idea of using a toast. I just don't know how to get access to the
object to push a new message to. Maybe I'm misunderstanding the docs.
Mar 13, 2021, 9:42 PM
Should be able to use the hook and call it.
Mar 13, 2021, 9:43 PM
Got it, thanks again
user L
Mar 13, 2021, 9:47 PM
import {useToast} from '@sanity/ui'

const toast = useToast()

toast.push({status:'error', title: error})
Mar 13, 2021, 9:47 PM

Sanity– build remarkable experiences at scale

Sanity is a modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.

Was this answer helpful?