@sanity/cli
Version:
Sanity CLI tool for managing Sanity installations, managing plugins, schemas and datasets
40 lines (33 loc) • 1.08 kB
text/typescript
import {EarthGlobeIcon} from '@sanity/icons'
import {collectionUrl, productUrl, productVariantUrl} from '../../utils/shopifyUrls'
import {type DocumentActionDescription} from 'sanity'
import type {ShopifyDocument, ShopifyDocumentActionProps} from './types'
export default (props: ShopifyDocumentActionProps): DocumentActionDescription | undefined => {
const {published, type}: {published: ShopifyDocument; type: string} = props
if (!published || published?.store?.isDeleted) {
return
}
let url: string | null = null
if (type === 'collection') {
url = collectionUrl(published?.store?.id)
}
if (type === 'product') {
url = productUrl(published?.store?.id)
}
if (type === 'productVariant') {
url = productVariantUrl(published?.store?.productId, published?.store?.id)
}
if (!url) {
return
}
if (published && !published?.store?.isDeleted) {
return {
label: 'Edit in Shopify',
icon: EarthGlobeIcon,
onHandle: () => {
url ? window.open(url) : void 'No URL'
},
shortcut: 'Ctrl+Alt+E',
}
}
}