Watch a live product demo 👀 See how Sanity powers richer commerce experiences

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

14 replies
Last updated: Mar 13, 2021
I am improving my
slug
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
toast
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

The Sanity Composable Content Cloud is the 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.

Categorized in

Related answers

Get more help in the community Slack

TopicCategoriesFeaturedRepliesLast Updated
After adding the subtitle and running this code npm run graphql-deploy It does nothingSep 15, 2020
how to limit a reference to just one entry in Studio reference input side versus the default as-many-entries-as-you-fill-in-an-array...Sep 18, 2020
Is it possible to fetch more than one "_type" using GROQ?Nov 2, 2020
I want to add a view with the Structure builder (S.view.component) where I list similar documents based on the title. What...Sep 23, 2020
Is there a structure builder example where the format of each preview for the document list is modified?Feb 3, 2021
I have an array of references to a country schema type but it always just returns NULL values for meJan 30, 2021
Hi, I need help with a query for getting the url of an image asset. Here is what I've been trying, but I only get the _ref...Dec 1, 2020
Sanity UI looks brilliant :smiley: Is something like the current date picker possible at the moment? I’m not sure if anicon...Dec 21, 2020
Hey everyone. I have been coding and may have potentially accidentally deleted something. Does anyone know how to resolve...Dec 26, 2020
Hello everyone and happy new year :raised_hands::skin-tone-2:, I have a problem with outputting Portable Text :disappointed:...Jan 1, 2021

Related contributions

Clean Next.js + Sanity app
- Template

Official(made by Sanity team)

A clean example of Next.js with embedded Sanity ready for recomposition.

Cody Olsen
Go to Clean Next.js + Sanity app

Blog with Built-in Content Editing
- Template

Official(made by Sanity team)

A Sanity-powered blog with built-in content editing and instant previews.

Go to Blog with Built-in Content Editing