Browse Source

api

cart-api-guide
azri 5 days ago
parent
commit
290995658f

+ 32
- 0
package-lock.json View File

18
         "@testing-library/jest-dom": "^5.17.0",
18
         "@testing-library/jest-dom": "^5.17.0",
19
         "@testing-library/react": "^13.4.0",
19
         "@testing-library/react": "^13.4.0",
20
         "@testing-library/user-event": "^13.5.0",
20
         "@testing-library/user-event": "^13.5.0",
21
+        "axios": "^1.7.9",
21
         "dotenv": "^16.4.7",
22
         "dotenv": "^16.4.7",
22
         "react": "^18.3.1",
23
         "react": "^18.3.1",
23
         "react-dom": "^18.3.1",
24
         "react-dom": "^18.3.1",
5749
         "node": ">=4"
5750
         "node": ">=4"
5750
       }
5751
       }
5751
     },
5752
     },
5753
+    "node_modules/axios": {
5754
+      "version": "1.7.9",
5755
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
5756
+      "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
5757
+      "license": "MIT",
5758
+      "dependencies": {
5759
+        "follow-redirects": "^1.15.6",
5760
+        "form-data": "^4.0.0",
5761
+        "proxy-from-env": "^1.1.0"
5762
+      }
5763
+    },
5764
+    "node_modules/axios/node_modules/form-data": {
5765
+      "version": "4.0.1",
5766
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
5767
+      "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
5768
+      "license": "MIT",
5769
+      "dependencies": {
5770
+        "asynckit": "^0.4.0",
5771
+        "combined-stream": "^1.0.8",
5772
+        "mime-types": "^2.1.12"
5773
+      },
5774
+      "engines": {
5775
+        "node": ">= 6"
5776
+      }
5777
+    },
5752
     "node_modules/axobject-query": {
5778
     "node_modules/axobject-query": {
5753
       "version": "4.1.0",
5779
       "version": "4.1.0",
5754
       "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
5780
       "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
14808
         "node": ">= 0.10"
14834
         "node": ">= 0.10"
14809
       }
14835
       }
14810
     },
14836
     },
14837
+    "node_modules/proxy-from-env": {
14838
+      "version": "1.1.0",
14839
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
14840
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
14841
+      "license": "MIT"
14842
+    },
14811
     "node_modules/psl": {
14843
     "node_modules/psl": {
14812
       "version": "1.15.0",
14844
       "version": "1.15.0",
14813
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
14845
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",

+ 1
- 0
package.json View File

13
     "@testing-library/jest-dom": "^5.17.0",
13
     "@testing-library/jest-dom": "^5.17.0",
14
     "@testing-library/react": "^13.4.0",
14
     "@testing-library/react": "^13.4.0",
15
     "@testing-library/user-event": "^13.5.0",
15
     "@testing-library/user-event": "^13.5.0",
16
+    "axios": "^1.7.9",
16
     "dotenv": "^16.4.7",
17
     "dotenv": "^16.4.7",
17
     "react": "^18.3.1",
18
     "react": "^18.3.1",
18
     "react-dom": "^18.3.1",
19
     "react-dom": "^18.3.1",

+ 0
- 1
src/components/BillingForm/BillingForm.jsx View File

21
 import CreditCardIcon from '@mui/icons-material/CreditCard';
21
 import CreditCardIcon from '@mui/icons-material/CreditCard';
22
 import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet';
22
 import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet';
23
 
23
 
24
-
25
 const BillingForm = () => {
24
 const BillingForm = () => {
26
 
25
 
27
   const rows = [
26
   const rows = [

+ 0
- 6
src/components/Navbar/Navbar.jsx View File

1
 import React, { useState, useEffect } from "react";
1
 import React, { useState, useEffect } from "react";
2
 import AppBar from "@mui/material/AppBar";
2
 import AppBar from "@mui/material/AppBar";
3
 import Toolbar from "@mui/material/Toolbar";
3
 import Toolbar from "@mui/material/Toolbar";
4
-import Typography from "@mui/material/Typography";
5
 import Button from "@mui/material/Button";
4
 import Button from "@mui/material/Button";
6
 import IconButton from "@mui/material/IconButton";
5
 import IconButton from "@mui/material/IconButton";
7
 import Box from "@mui/material/Box";
6
 import Box from "@mui/material/Box";
8
 import Header from "../Header";
7
 import Header from "../Header";
9
-import InputBase from "@mui/material/InputBase";
10
 import SearchIcon from "@mui/icons-material/Search";
8
 import SearchIcon from "@mui/icons-material/Search";
11
 import LocalMallIcon from '@mui/icons-material/LocalMall';
9
 import LocalMallIcon from '@mui/icons-material/LocalMall';
12
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
10
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
60
 
58
 
61
   const [open, setOpen] = React.useState(false);
59
   const [open, setOpen] = React.useState(false);
62
 
60
 
63
-  const toggleDrawer = (newOpen) => () => {
64
-    setOpen(newOpen);
65
-  };
66
-
67
   const navItem = [
61
   const navItem = [
68
     {
62
     {
69
       title: "DISCOVER",
63
       title: "DISCOVER",

+ 2
- 1
src/components/Navbar/components/MobileNav/MobileNav.jsx View File

1
 import React from "react";
1
 import React from "react";
2
-import { Drawer, Box, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Divider } from "@mui/material";
2
+import { Drawer, Box, List, ListItem, ListItemButton, ListItemText } from "@mui/material";
3
 import logoSrc from "../../../../assets/svg/logo.svg";
3
 import logoSrc from "../../../../assets/svg/logo.svg";
4
 
4
 
5
 const MobileNav = ({ open, onClose, menu = [] }) => {
5
 const MobileNav = ({ open, onClose, menu = [] }) => {
40
           {menu.map(({title, link, icon}) => (
40
           {menu.map(({title, link, icon}) => (
41
             <ListItem key={title} disablePadding>
41
             <ListItem key={title} disablePadding>
42
               <ListItemButton
42
               <ListItemButton
43
+                onClick={()=>{window.location.href = link }}
43
                 sx={{
44
                 sx={{
44
                   color: "white",
45
                   color: "white",
45
                   "&:hover": {
46
                   "&:hover": {

+ 6
- 0
src/pages/Home.jsx View File

12
 import ProductType from '../components/ProductType';
12
 import ProductType from '../components/ProductType';
13
 import NewsLetter from '../components/NewsLetter';
13
 import NewsLetter from '../components/NewsLetter';
14
 
14
 
15
+import ProductService from "../services/ProductService"
16
+
15
 const Home = () => {
17
 const Home = () => {
16
 
18
 
19
+  React.useEffect(()=>{
20
+    ProductService.getProducts();
21
+  },[])
22
+
17
   return (
23
   return (
18
     <>
24
     <>
19
       <Carousel />
25
       <Carousel />

+ 49
- 0
src/services/ProductService.js View File

1
+import axios from 'axios'
2
+import { createStorefrontApiClient } from '@shopify/storefront-api-client';
3
+import { API_URL, REACT_APP_API_KEY, REACT_APP_API_SECRET, REACT_APP_ACCESS_TOKEN, REACT_APP_SHOP_NAME } from '../utils/httpCommon'
4
+
5
+const shopUrl = REACT_APP_SHOP_NAME;
6
+const accessToken = REACT_APP_ACCESS_TOKEN;
7
+
8
+
9
+const getProducts = async () => {
10
+
11
+  console.log(shopUrl)
12
+  console.log(accessToken)
13
+  console.log(createStorefrontApiClient)
14
+
15
+  const client = createStorefrontApiClient({
16
+    storeDomain: `https://${shopUrl}/api/2024-10/graphql.json`,
17
+    apiVersion: '2024-10',
18
+    publicAccessToken: accessToken,
19
+  });
20
+
21
+  const productQuery = `
22
+    {
23
+      products(first: 99) {
24
+        nodes {
25
+          id
26
+          title
27
+          totalInventory
28
+        }
29
+      }
30
+    }
31
+  `;
32
+
33
+  const { data, errors, extensions } = await client.request(productQuery, {
34
+    variables: {
35
+      handle: 'sample-product',
36
+    },
37
+  });
38
+
39
+  console.log(data)
40
+
41
+  return
42
+
43
+}
44
+
45
+const ProductService = {
46
+  getProducts
47
+}
48
+
49
+export default ProductService

+ 6
- 0
src/utils/httpCommon.js View File

1
+export const API_URL = process.env.REACT_APP_API_URL
2
+export const REACT_APP_API_KEY = process.env.REACT_APP_API_KEY
3
+export const REACT_APP_API_SECRET = process.env.REACT_APP_API_SECRET
4
+export const REACT_APP_ACCESS_TOKEN = process.env.REACT_APP_ACCESS_TOKEN
5
+export const REACT_APP_SHOP_NAME = process.env.REACT_APP_SHOP_NAME
6
+

Loading…
Cancel
Save