PWA Studio Create Review Mutation failed

PWA Studio Create Review Mutation failed


0

I have this mutation to create the product review which is working fine but not able to integrate into the form does anyone how I can fix that ?

mutation {
  createProductReview(
    input: {
      sku: "Samsung S21 Ultra",
      nickname: "Test",
      summary: "Great looking phone",
      text: "This phone looks and feels great.",
      ratings: [
        {
          id: "NA==",
          value_id: "MTk="
        }, {
          id: "MQ==",
          value_id: "NA=="
        }, {
          id: "Mg==",
          value_id: "OA=="
        }
      ]
    }
) {
    review {
      nickname
      summary
      text
    }
  }
}

here is my component code:

import React, { useState } from 'react';
import { useMutation, gql } from '@apollo/client';

const CREATE_PRODUCT_REVIEW = gql`
    mutation CreateProductReview($input: ProductReviewInput!) {
        createProductReview(input: $input) {
            review {
                nickname
                summary
                text
            }
        }
    }
`;

const ProductReview = ({ productSku }) => {
    const [sku, setSku] = useState('');
    const [nickname, setNickname] = useState('');
    const [summary, setSummary] = useState('');
    const [text, setText] = useState('');

    const [createProductReview, { data }] = useMutation(CREATE_PRODUCT_REVIEW);

    const handleSubmit = async (e) => {
        e.preventDefault();

        const input = {
            sku,
            nickname,
            summary,
            text,
            ratings: [
                { id: "NA==", value_id: "MTk=" },
                { id: "MQ==", value_id: "NA==" },
                { id: "Mg==", value_id: "OA==" },
            ],
        };

        try {
            const result = await createProductReview({ variables: { input } });
            console.log('Review created:', result.data.createProductReview.review);
            setNickname('');
            setSummary('');
            setText('');
        } catch (error) {
            console.error('Error creating review:', error);
        }
    };

    return (
        <div>
            <h2>Create Product Review</h2>
            <form onSubmit={handleSubmit}>
                {/* Input fields for sku, nickname, summary, text */}
                <input type="hidden" placeholder="SKU" value={productSku} onChange={(e) => setSku(productSku)} />
                <input type="text" placeholder="Nickname" value={nickname} onChange={(e) => setNickname(e.target.value)} />
                <input type="text" placeholder="Summary" value={summary} onChange={(e) => setSummary(e.target.value)} />
                <textarea placeholder="Text" value={text} onChange={(e) => setText(e.target.value)} />

                {/* Submit button */}
                <button type="submit">Submit Review</button>
            </form>
        </div>
    );
};

export default ProductReview;

And I’m calling this component in another component where I’m adding sku in the props

<ProductReview productSku={productDetails.sku} />

How I can submit the form without error I’m getting this error on submitting the form

index.js:31     POST https://pwa-studio.local:8103/graphql 500 (Internal Server Error)

errorLink.js:18 [Network error]: ServerError: Response not successful: Received status code 500
productReview.js:46 Error creating review: Error: Response not successful: Received status code 500
    at new ApolloError (index.js:29:1)
    at Object.error (QueryManager.js:137:74)
    at notifySubscription (module.js:137:1)
    at onNotify (module.js:176:1)
    at SubscriptionObserver.error (module.js:229:1)
    at Object.eval [as error] (asyncMap.js:32:40)
    at notifySubscription (module.js:137:1)
    at onNotify (module.js:176:1)
    at SubscriptionObserver.error (module.js:229:1)
    at eval (iteration.js:4:49)

Share
Improve this question


Load 3 more related questions


Show fewer related questions

0

Reset to default



Leave a Reply

Your email address will not be published. Required fields are marked *