Slug Generating Document Action - How to Invalidate Fields or Display an Error
14 replies
Last updated: Mar 13, 2021
K
I am improving my
sluggenerating 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
R
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
P
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
R
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
K
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
R
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
K
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
K
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
K
Ah ok. Wonder if you need to push to the toast module in sanity?
Mar 13, 2021, 9:14 PM
R
Ill try it out myself on Monday as I'm interested now.
Mar 13, 2021, 9:14 PM
K
Mar 13, 2021, 9:19 PM
K
hmmm. I like the idea of using a toast. I just don't know how to get access to the
toastobject to push a new message to. Maybe I'm misunderstanding the docs.
Mar 13, 2021, 9:42 PM
R
Should be able to use the hook and call it.
Mar 13, 2021, 9:43 PM
K
Got it, thanks again
user L
!Mar 13, 2021, 9:47 PM
R
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.