feat: backend implementation for media manager v2 (WIP - Undeployed)
This commit is contained in:
@ -42,6 +42,7 @@ export class ShopifyMediaService implements IShopifyMediaService {
|
||||
mutation productCreateMedia($media: [CreateMediaInput!]!, $productId: ID!) {
|
||||
productCreateMedia(media: $media, productId: $productId) {
|
||||
media {
|
||||
id
|
||||
alt
|
||||
mediaContentType
|
||||
status
|
||||
@ -68,4 +69,79 @@ export class ShopifyMediaService implements IShopifyMediaService {
|
||||
const response = this.shop.shopifyGraphQLAPI(payload)
|
||||
return response.content.data.productCreateMedia
|
||||
}
|
||||
getProductMedia(productId: string): any[] {
|
||||
const query = /* GraphQL */ `
|
||||
query getProductMedia($productId: ID!) {
|
||||
product(id: $productId) {
|
||||
media(first: 250) {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
alt
|
||||
mediaContentType
|
||||
preview {
|
||||
image {
|
||||
originalSrc
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
const variables = { productId }
|
||||
const payload = {
|
||||
query: formatGqlForJSON(query),
|
||||
variables: variables
|
||||
}
|
||||
const response = this.shop.shopifyGraphQLAPI(payload)
|
||||
if (!response.content.data.product) return []
|
||||
return response.content.data.product.media.edges.map((edge: any) => edge.node)
|
||||
}
|
||||
|
||||
productDeleteMedia(productId: string, mediaId: string): any {
|
||||
const query = /* GraphQL */ `
|
||||
mutation productDeleteMedia($mediaId: ID!, $productId: ID!) {
|
||||
productDeleteMedia(mediaId: $mediaId, productId: $productId) {
|
||||
deletedMediaId
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
const variables = { productId, mediaId }
|
||||
const payload = {
|
||||
query: formatGqlForJSON(query),
|
||||
variables: variables
|
||||
}
|
||||
const response = this.shop.shopifyGraphQLAPI(payload)
|
||||
return response.content.data.productDeleteMedia
|
||||
}
|
||||
|
||||
productReorderMedia(productId: string, moves: any[]): any {
|
||||
const query = /* GraphQL */ `
|
||||
mutation productReorderMedia($id: ID!, $moves: [MoveInput!]!) {
|
||||
productReorderMedia(id: $id, moves: $moves) {
|
||||
job {
|
||||
id
|
||||
done
|
||||
}
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
const variables = { id: productId, moves }
|
||||
const payload = {
|
||||
query: formatGqlForJSON(query),
|
||||
variables: variables
|
||||
}
|
||||
const response = this.shop.shopifyGraphQLAPI(payload)
|
||||
return response.content.data.productReorderMedia
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user