From fea922a2faa33fce57dc6cda3cf32844d24a9df8 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sun, 7 Dec 2025 12:23:15 +0330 Subject: [PATCH] apply discount --- public/sw.js | 2 +- src/app/[name]/(Dialogs)/cart/types/Types.ts | 7 + .../[id]/components/CouponSection.tsx | 136 ++++++++++++------ .../(Dialogs)/order/checkout/[id]/page.tsx | 6 + .../order/checkout/hooks/useOrderData.ts | 26 +++- .../order/checkout/service/OrderService.ts | 10 ++ 6 files changed, 144 insertions(+), 43 deletions(-) diff --git a/public/sw.js b/public/sw.js index f507d92..6a8c0f8 100644 --- a/public/sw.js +++ b/public/sw.js @@ -1 +1 @@ -if(!self.define){let e,s={};const a=(a,n)=>(a=new URL(a+".js",n).href,s[a]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()}).then(()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e}));self.define=(n,i)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(s[c])return;let t={};const r=e=>a(e,c),f={module:{uri:c},exports:t,require:r};s[c]=Promise.all(n.map(e=>f[e]||r(e))).then(e=>(i(...e),t))}}define(["./workbox-4754cb34"],function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_favicon.ico",revision:"28202080f3527f526a24b1119885536e"},{url:"/_next/app-build-manifest.json",revision:"2f3560cdd32d88894cd5146402bdda53"},{url:"/_next/static/chunks/1255-26f05d8bf86e016d.js",revision:"26f05d8bf86e016d"},{url:"/_next/static/chunks/1750-cc011f786043f1e6.js",revision:"cc011f786043f1e6"},{url:"/_next/static/chunks/1903-5b04beed4655180a.js",revision:"5b04beed4655180a"},{url:"/_next/static/chunks/2113.c4b6dfd5988c4d13.js",revision:"c4b6dfd5988c4d13"},{url:"/_next/static/chunks/2280-16dc502ee34da82b.js",revision:"16dc502ee34da82b"},{url:"/_next/static/chunks/2476-e7648a2df382d65d.js",revision:"e7648a2df382d65d"},{url:"/_next/static/chunks/2617.3abcce7aa75b4649.js",revision:"3abcce7aa75b4649"},{url:"/_next/static/chunks/2619-b8db57ac19da49ac.js",revision:"b8db57ac19da49ac"},{url:"/_next/static/chunks/2796-be20adb56adb8361.js",revision:"be20adb56adb8361"},{url:"/_next/static/chunks/2832-232489d52769cc24.js",revision:"232489d52769cc24"},{url:"/_next/static/chunks/3528-102086b60d85226f.js",revision:"102086b60d85226f"},{url:"/_next/static/chunks/3686.a95b9fbf57e88095.js",revision:"a95b9fbf57e88095"},{url:"/_next/static/chunks/4141-cb2b795ca39caab8.js",revision:"cb2b795ca39caab8"},{url:"/_next/static/chunks/4612-096195e5c6b990fa.js",revision:"096195e5c6b990fa"},{url:"/_next/static/chunks/4809.1f2efb6d7b3e359e.js",revision:"1f2efb6d7b3e359e"},{url:"/_next/static/chunks/4bd1b696-100b9d70ed4e49c1.js",revision:"100b9d70ed4e49c1"},{url:"/_next/static/chunks/5030-26926400707d296f.js",revision:"26926400707d296f"},{url:"/_next/static/chunks/5070.ad19d2678fe10023.js",revision:"ad19d2678fe10023"},{url:"/_next/static/chunks/5239-b5d471afce036544.js",revision:"b5d471afce036544"},{url:"/_next/static/chunks/5511-8b8de44a17ff4403.js",revision:"8b8de44a17ff4403"},{url:"/_next/static/chunks/5579.53a6112ed5d4573f.js",revision:"53a6112ed5d4573f"},{url:"/_next/static/chunks/5832-96922143bfae8e2e.js",revision:"96922143bfae8e2e"},{url:"/_next/static/chunks/5889-e987f21560aaf28e.js",revision:"e987f21560aaf28e"},{url:"/_next/static/chunks/6397-0d3ca8868c245452.js",revision:"0d3ca8868c245452"},{url:"/_next/static/chunks/6445-6631ba7f1757640a.js",revision:"6631ba7f1757640a"},{url:"/_next/static/chunks/6634-b6b82c56ca8678bb.js",revision:"b6b82c56ca8678bb"},{url:"/_next/static/chunks/6712-6c3f6eb53f6b1ba0.js",revision:"6c3f6eb53f6b1ba0"},{url:"/_next/static/chunks/6914.a2221be2e59a3d08.js",revision:"a2221be2e59a3d08"},{url:"/_next/static/chunks/708-5a0d27a1cc2e4670.js",revision:"5a0d27a1cc2e4670"},{url:"/_next/static/chunks/7149.48fd0dc7f4d626e5.js",revision:"48fd0dc7f4d626e5"},{url:"/_next/static/chunks/7321-331703067c729d34.js",revision:"331703067c729d34"},{url:"/_next/static/chunks/7388-59a3ea2ea50407f3.js",revision:"59a3ea2ea50407f3"},{url:"/_next/static/chunks/7493.5508135cff4eb902.js",revision:"5508135cff4eb902"},{url:"/_next/static/chunks/7707-6d95cf9e0a91e34b.js",revision:"6d95cf9e0a91e34b"},{url:"/_next/static/chunks/7907-aaf732ade4db41cd.js",revision:"aaf732ade4db41cd"},{url:"/_next/static/chunks/7994-fa3d7310dc319744.js",revision:"fa3d7310dc319744"},{url:"/_next/static/chunks/8016.fe6fba52773595d8.js",revision:"fe6fba52773595d8"},{url:"/_next/static/chunks/8268-80f9c3ec864a0098.js",revision:"80f9c3ec864a0098"},{url:"/_next/static/chunks/8383-575b9cc3cdf78fe5.js",revision:"575b9cc3cdf78fe5"},{url:"/_next/static/chunks/8574-e6d315cb08021bfe.js",revision:"e6d315cb08021bfe"},{url:"/_next/static/chunks/8588.a3b386954bdd8788.js",revision:"a3b386954bdd8788"},{url:"/_next/static/chunks/8657-d14c78e1e0debc8e.js",revision:"d14c78e1e0debc8e"},{url:"/_next/static/chunks/8722.a10f00e99dd3c329.js",revision:"a10f00e99dd3c329"},{url:"/_next/static/chunks/8813-a5b8f052ac4643f0.js",revision:"a5b8f052ac4643f0"},{url:"/_next/static/chunks/9398-975825d91f2f20cc.js",revision:"975825d91f2f20cc"},{url:"/_next/static/chunks/9659-9f4c52a181021926.js",revision:"9f4c52a181021926"},{url:"/_next/static/chunks/9920-fbabf4827d971087.js",revision:"fbabf4827d971087"},{url:"/_next/static/chunks/9938-737839d0a13148de.js",revision:"737839d0a13148de"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/cart/page-3190039075c8a973.js",revision:"3190039075c8a973"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/layout-d615f22fd403fc67.js",revision:"d615f22fd403fc67"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/notifications/page-28d4b407399b8d1f.js",revision:"28d4b407399b8d1f"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/order/checkout/%5Bid%5D/page-211c570936e2f269.js",revision:"211c570936e2f269"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/order/track/%5Bid%5D/page-a5affc342f37943b.js",revision:"a5affc342f37943b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/report/page-74755de07e0c968f.js",revision:"74755de07e0c968f"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/verify/page-1a5b964adf285d03.js",revision:"1a5b964adf285d03"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/%5Bid%5D/page-63a3a9283ed0c5d3.js",revision:"63a3a9283ed0c5d3"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/about/layout-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/about/page-71cbefb0ec3213bd.js",revision:"71cbefb0ec3213bd"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/chat/%5Bid%5D/page-139f2080eabb8174.js",revision:"139f2080eabb8174"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/chat/nearby/page-c6060595b5771f41.js",revision:"c6060595b5771f41"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/chat/page-43539f0a96e4acef.js",revision:"43539f0a96e4acef"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/layout-57d56d2b976ae717.js",revision:"57d56d2b976ae717"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/loading-5d7f7eb7a6350d78.js",revision:"5d7f7eb7a6350d78"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/order/history/layout-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/order/history/page-bc2509a258674324.js",revision:"bc2509a258674324"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/order/rate/%5BorderId%5D/page-4f1f4530b6b18b13.js",revision:"4f1f4530b6b18b13"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/page-ffe6ea4690ee7a0a.js",revision:"ffe6ea4690ee7a0a"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/transactions/discount/club/page-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/transactions/discount/page-9e822e076a573c85.js",revision:"9e822e076a573c85"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/transactions/page-148bb4a8f4457050.js",revision:"148bb4a8f4457050"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/layout-b41b623f4e51ef48.js",revision:"b41b623f4e51ef48"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/address/new/page-21719664353085b3.js",revision:"21719664353085b3"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/address/page-c3f83082145b27d4.js",revision:"c3f83082145b27d4"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/edit/page-6ebaa29a4306c828.js",revision:"6ebaa29a4306c828"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/page-5572c4b276501955.js",revision:"5572c4b276501955"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/settings/page-77a00603facc0b27.js",revision:"77a00603facc0b27"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/wallet/page-b40e53e545b851db.js",revision:"b40e53e545b851db"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/layout-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/login/page-387eb590aa6bf632.js",revision:"387eb590aa6bf632"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/page-032365c4b968b155.js",revision:"032365c4b968b155"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/reset-password/page-51a8acb5013056a8.js",revision:"51a8acb5013056a8"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/signup/page-efb5338aca2ceaca.js",revision:"efb5338aca2ceaca"},{url:"/_next/static/chunks/app/%5Bname%5D/layout-c8068b95f3249de2.js",revision:"c8068b95f3249de2"},{url:"/_next/static/chunks/app/_not-found/page-034f1789b0eaeb6b.js",revision:"034f1789b0eaeb6b"},{url:"/_next/static/chunks/app/auth/layout-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/auth/login/page-d9bab7c14262676c.js",revision:"d9bab7c14262676c"},{url:"/_next/static/chunks/app/auth/page-23455720cf4a4e7d.js",revision:"23455720cf4a4e7d"},{url:"/_next/static/chunks/app/auth/reset-password/page-47649651c2e21847.js",revision:"47649651c2e21847"},{url:"/_next/static/chunks/app/auth/signup/page-617e33185f52fdfe.js",revision:"617e33185f52fdfe"},{url:"/_next/static/chunks/app/layout-f74265a331e49c38.js",revision:"f74265a331e49c38"},{url:"/_next/static/chunks/app/loading-5d7f7eb7a6350d78.js",revision:"5d7f7eb7a6350d78"},{url:"/_next/static/chunks/app/page-99f323bd08352c38.js",revision:"99f323bd08352c38"},{url:"/_next/static/chunks/d0deef33.59194872e4111dca.js",revision:"59194872e4111dca"},{url:"/_next/static/chunks/framework-32492dd9c4fc5870.js",revision:"32492dd9c4fc5870"},{url:"/_next/static/chunks/main-82b194b1f42f50c9.js",revision:"82b194b1f42f50c9"},{url:"/_next/static/chunks/main-app-fb228aef04f005ac.js",revision:"fb228aef04f005ac"},{url:"/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js",revision:"4b3fb5e477a0267f"},{url:"/_next/static/chunks/pages/_error-c970d8b55ace1b48.js",revision:"c970d8b55ace1b48"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-67fa5518c62fb724.js",revision:"67fa5518c62fb724"},{url:"/_next/static/css/2c2be3c8248b4741.css",revision:"2c2be3c8248b4741"},{url:"/_next/static/css/9a7d457c5a245db4.css",revision:"9a7d457c5a245db4"},{url:"/_next/static/media/layers-2x.9859cd12.png",revision:"9859cd12"},{url:"/_next/static/media/layers.ef6db872.png",revision:"ef6db872"},{url:"/_next/static/media/marker-icon.d577052a.png",revision:"d577052a"},{url:"/_next/static/nQPfENBa4DKluU4ofVc6-/_buildManifest.js",revision:"c43756d170caef601c10adc53bd276cb"},{url:"/_next/static/nQPfENBa4DKluU4ofVc6-/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/apple-icon.png",revision:"0c11163d9876662afd598cdb681bb2e4"},{url:"/assets/css/fonts.css",revision:"b23bd571553a35e52be7bdfb8805ba5e"},{url:"/assets/fonts/Irancell_Bold.ttf",revision:"e5160b0c919e044bfbcf18a58dd04ad2"},{url:"/assets/fonts/Irancell_Bold.woff",revision:"ed06d53485fd8044e79894bedc597104"},{url:"/assets/fonts/Irancell_Bold.woff2",revision:"04e0058cbeb4dfe083dbf98370ae885e"},{url:"/assets/fonts/Irancell_ExtraBold.ttf",revision:"aca587f4f429c26e887e102f4d46bd27"},{url:"/assets/fonts/Irancell_ExtraBold.woff",revision:"eb70794e10fd476987930ef523ed8a33"},{url:"/assets/fonts/Irancell_ExtraBold.woff2",revision:"5f66486a89926925c4eabcb76aea6ca1"},{url:"/assets/fonts/Irancell_ExtraLight.ttf",revision:"85dd3b644afbabbea860e70d91adb665"},{url:"/assets/fonts/Irancell_ExtraLight.woff",revision:"7491ed7a70e2b9f8fa19c20eac497c12"},{url:"/assets/fonts/Irancell_ExtraLight.woff2",revision:"807b703a3924972991de43d76764f404"},{url:"/assets/fonts/Irancell_Light.ttf",revision:"911a07e375667ba6feeca9a527bc537d"},{url:"/assets/fonts/Irancell_Light.woff",revision:"9c1e83ee95bb25d5adc97011bbab2ae5"},{url:"/assets/fonts/Irancell_Light.woff2",revision:"34404e8d01d1ee40a5bc00311ae2add4"},{url:"/assets/fonts/Irancell_Medium.ttf",revision:"2b8b7463718f1930afc053208efe986e"},{url:"/assets/fonts/Irancell_Medium.woff",revision:"e952c2a8c784e1b13c606f4b9b300310"},{url:"/assets/fonts/Irancell_Medium.woff2",revision:"1955af7b1d4244b4034b793c4435a7e3"},{url:"/assets/fonts/Irancell_Regular.ttf",revision:"3c29a31eaec7ddd32d41879dfcce95b8"},{url:"/assets/fonts/Irancell_Regular.woff",revision:"c9d7d00bddfd0595b68e750574b28312"},{url:"/assets/fonts/Irancell_Regular.woff2",revision:"89eb5fb2d1409229407d1a75426acda0"},{url:"/assets/images/avatar.svg",revision:"ce25555161d92f081746041e2815919a"},{url:"/assets/images/danak-logo.png",revision:"bfbbcd927b3e359c7ab8047211f7c3a3"},{url:"/assets/images/food-image.png",revision:"34520f66d5224a61eca7e83646bdb31e"},{url:"/assets/images/food-preview-hq.png",revision:"42968e21a3044f80db7399459768a16c"},{url:"/assets/images/food-preview.png",revision:"bfc910395c189bfc145fa950dbcca749"},{url:"/assets/images/login-banner.png",revision:"29a467b532dbf3c6e8bcd45e08ea3cde"},{url:"/assets/images/report-hero.svg",revision:"fe10be00fde304933f91cdedab597494"},{url:"/assets/images/user-avatar.png",revision:"0d4b4612ad00442263d2a41754fcadcc"},{url:"/file.svg",revision:"d09f95206c3fa0bb9bd9fefabfd0ea71"},{url:"/globe.svg",revision:"2aaafa6a49b6563925fe440891e32717"},{url:"/icon0.svg",revision:"6d2cbb302b9f3ef7f2b43ae7d355f6c9"},{url:"/icon1.png",revision:"14e00a23129ccbbe02a835997ecca6c0"},{url:"/icons/restaurant-marker.svg",revision:"72add246cf474e9b703edd352a50b1c8"},{url:"/icons/web-app-manifest-192x192.png",revision:"2bd31374f516557201d060ad4c5695c4"},{url:"/icons/web-app-manifest-512x512.png",revision:"d0f9aa93e12fc2ed5b220efa3db4e689"},{url:"/manifest.json",revision:"fcaa8d06b59646efa18f5d20d22b5ef9"},{url:"/manifests/zhivan/manifest.json",revision:"d4005805de3b85c31998a3fb4bb1dad3"},{url:"/marker-icon-2x.png",revision:"1c824216f354218b04b25a57e0f7ab1f"},{url:"/marker-icon.png",revision:"1c824216f354218b04b25a57e0f7ab1f"},{url:"/marker-shadow.png",revision:"44014eaa598e7050354603adfb44f812"},{url:"/next.svg",revision:"8e061864f388b47f33a1c3780831193e"},{url:"/vercel.svg",revision:"c0af2f507b369b085b35ef4bbe3bcf1e"},{url:"/window.svg",revision:"a2760511c65806022ad20adf74370ff3"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:a,state:n})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>{if(!(self.origin===e.origin))return!1;const s=e.pathname;return!s.startsWith("/api/auth/")&&!!s.startsWith("/api/")},new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")},new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>!(self.origin===e.origin),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")}); +if(!self.define){let e,a={};const s=(s,n)=>(s=new URL(s+".js",n).href,a[s]||new Promise(a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()}).then(()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e}));self.define=(n,i)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(a[c])return;let t={};const r=e=>s(e,c),d={module:{uri:c},exports:t,require:r};a[c]=Promise.all(n.map(e=>d[e]||r(e))).then(e=>(i(...e),t))}}define(["./workbox-4754cb34"],function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_favicon.ico",revision:"28202080f3527f526a24b1119885536e"},{url:"/_next/app-build-manifest.json",revision:"08bc31e73dab89a1eac41f2d3a3ada4d"},{url:"/_next/static/chunks/1255-26f05d8bf86e016d.js",revision:"26f05d8bf86e016d"},{url:"/_next/static/chunks/1557-fe26fe5d2ea239de.js",revision:"fe26fe5d2ea239de"},{url:"/_next/static/chunks/1733-94b29f2478acfe12.js",revision:"94b29f2478acfe12"},{url:"/_next/static/chunks/1774-c88deb77877fe216.js",revision:"c88deb77877fe216"},{url:"/_next/static/chunks/1903-dfb491a299a56108.js",revision:"dfb491a299a56108"},{url:"/_next/static/chunks/2113.c4b6dfd5988c4d13.js",revision:"c4b6dfd5988c4d13"},{url:"/_next/static/chunks/2280-689d82a8a75f2eb7.js",revision:"689d82a8a75f2eb7"},{url:"/_next/static/chunks/2476-e7648a2df382d65d.js",revision:"e7648a2df382d65d"},{url:"/_next/static/chunks/2617.3abcce7aa75b4649.js",revision:"3abcce7aa75b4649"},{url:"/_next/static/chunks/2619-b8db57ac19da49ac.js",revision:"b8db57ac19da49ac"},{url:"/_next/static/chunks/2796-be20adb56adb8361.js",revision:"be20adb56adb8361"},{url:"/_next/static/chunks/2949-67d040e9bdf5bf76.js",revision:"67d040e9bdf5bf76"},{url:"/_next/static/chunks/3231-53607a6770cce5b3.js",revision:"53607a6770cce5b3"},{url:"/_next/static/chunks/3686.5a56ff83df2df96f.js",revision:"5a56ff83df2df96f"},{url:"/_next/static/chunks/4809.fd433a20fd4874a2.js",revision:"fd433a20fd4874a2"},{url:"/_next/static/chunks/4bd1b696-100b9d70ed4e49c1.js",revision:"100b9d70ed4e49c1"},{url:"/_next/static/chunks/5070.ad19d2678fe10023.js",revision:"ad19d2678fe10023"},{url:"/_next/static/chunks/5239-b5d471afce036544.js",revision:"b5d471afce036544"},{url:"/_next/static/chunks/5511-8b8de44a17ff4403.js",revision:"8b8de44a17ff4403"},{url:"/_next/static/chunks/5579.53a6112ed5d4573f.js",revision:"53a6112ed5d4573f"},{url:"/_next/static/chunks/5702-e0f844ad1f287278.js",revision:"e0f844ad1f287278"},{url:"/_next/static/chunks/5889-5355b7e69f36c5e1.js",revision:"5355b7e69f36c5e1"},{url:"/_next/static/chunks/5904-ae336803831e13ef.js",revision:"ae336803831e13ef"},{url:"/_next/static/chunks/6093-420305c15c10458c.js",revision:"420305c15c10458c"},{url:"/_next/static/chunks/6397-0d3ca8868c245452.js",revision:"0d3ca8868c245452"},{url:"/_next/static/chunks/6445-095f74abcd048d76.js",revision:"095f74abcd048d76"},{url:"/_next/static/chunks/6634-b6b82c56ca8678bb.js",revision:"b6b82c56ca8678bb"},{url:"/_next/static/chunks/6743-6969b3f14261a6c7.js",revision:"6969b3f14261a6c7"},{url:"/_next/static/chunks/6914.a2221be2e59a3d08.js",revision:"a2221be2e59a3d08"},{url:"/_next/static/chunks/7149.48fd0dc7f4d626e5.js",revision:"48fd0dc7f4d626e5"},{url:"/_next/static/chunks/7388-b2d3894d4a944c4c.js",revision:"b2d3894d4a944c4c"},{url:"/_next/static/chunks/7493.5508135cff4eb902.js",revision:"5508135cff4eb902"},{url:"/_next/static/chunks/7676-d6991e06a05aef95.js",revision:"d6991e06a05aef95"},{url:"/_next/static/chunks/7840-af474069c8a3a3d7.js",revision:"af474069c8a3a3d7"},{url:"/_next/static/chunks/7907-aaf732ade4db41cd.js",revision:"aaf732ade4db41cd"},{url:"/_next/static/chunks/7994-ecc83bbf4e0ccb71.js",revision:"ecc83bbf4e0ccb71"},{url:"/_next/static/chunks/8016.fe6fba52773595d8.js",revision:"fe6fba52773595d8"},{url:"/_next/static/chunks/8103-f2f70c5768623589.js",revision:"f2f70c5768623589"},{url:"/_next/static/chunks/8120-35448e8bb7b6d270.js",revision:"35448e8bb7b6d270"},{url:"/_next/static/chunks/8268-80f9c3ec864a0098.js",revision:"80f9c3ec864a0098"},{url:"/_next/static/chunks/8588.a3b386954bdd8788.js",revision:"a3b386954bdd8788"},{url:"/_next/static/chunks/8595-277e564473879964.js",revision:"277e564473879964"},{url:"/_next/static/chunks/8711-c2aae7730f18d4ce.js",revision:"c2aae7730f18d4ce"},{url:"/_next/static/chunks/8722.a10f00e99dd3c329.js",revision:"a10f00e99dd3c329"},{url:"/_next/static/chunks/8777-ca11280466f76cdb.js",revision:"ca11280466f76cdb"},{url:"/_next/static/chunks/9340-80dedb789bcb901b.js",revision:"80dedb789bcb901b"},{url:"/_next/static/chunks/9398-975825d91f2f20cc.js",revision:"975825d91f2f20cc"},{url:"/_next/static/chunks/9760-dd8319170e03bd66.js",revision:"dd8319170e03bd66"},{url:"/_next/static/chunks/9920-d40447e13aac6f07.js",revision:"d40447e13aac6f07"},{url:"/_next/static/chunks/9942-1aa62e4220c349b6.js",revision:"1aa62e4220c349b6"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/cart/page-77c9932059218574.js",revision:"77c9932059218574"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/layout-e6800131b2b7405e.js",revision:"e6800131b2b7405e"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/notifications/page-28d4b407399b8d1f.js",revision:"28d4b407399b8d1f"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/order/checkout/%5Bid%5D/page-99eb119f14b2a9a8.js",revision:"99eb119f14b2a9a8"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/order/track/%5Bid%5D/page-07ad829a177f5118.js",revision:"07ad829a177f5118"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/report/page-42b79fbd073ccee9.js",revision:"42b79fbd073ccee9"},{url:"/_next/static/chunks/app/%5Bname%5D/(Dialogs)/verify/page-6bcffe0fe89edd0f.js",revision:"6bcffe0fe89edd0f"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/%5Bid%5D/page-3b990b0e78ba6daa.js",revision:"3b990b0e78ba6daa"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/about/layout-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/about/page-147625994e4400ad.js",revision:"147625994e4400ad"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/chat/%5Bid%5D/page-139f2080eabb8174.js",revision:"139f2080eabb8174"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/chat/nearby/page-e79e439de8581484.js",revision:"e79e439de8581484"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/chat/page-44fe19a67acf560c.js",revision:"44fe19a67acf560c"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/layout-9e86c92543ef8be1.js",revision:"9e86c92543ef8be1"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/loading-5d7f7eb7a6350d78.js",revision:"5d7f7eb7a6350d78"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/order/history/layout-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/order/history/page-dac62928bb5485b5.js",revision:"dac62928bb5485b5"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/order/rate/%5BorderId%5D/page-afac14da0cae7ead.js",revision:"afac14da0cae7ead"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/page-1573d38068a7b264.js",revision:"1573d38068a7b264"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/transactions/discount/club/page-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/transactions/discount/page-9e822e076a573c85.js",revision:"9e822e076a573c85"},{url:"/_next/static/chunks/app/%5Bname%5D/(Main)/transactions/page-ad4fbbb88815bf5d.js",revision:"ad4fbbb88815bf5d"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/layout-2dc755dd069a1257.js",revision:"2dc755dd069a1257"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/address/new/page-4c5ea435274336de.js",revision:"4c5ea435274336de"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/address/page-008ebf83f69edba0.js",revision:"008ebf83f69edba0"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/edit/page-df7466ede6add00f.js",revision:"df7466ede6add00f"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/page-784b1af390c3571e.js",revision:"784b1af390c3571e"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/settings/page-44a84043a0ed9883.js",revision:"44a84043a0ed9883"},{url:"/_next/static/chunks/app/%5Bname%5D/(Profile)/profile/wallet/page-3a29950589a38586.js",revision:"3a29950589a38586"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/layout-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/login/page-cc2e4ddeb5690cf1.js",revision:"cc2e4ddeb5690cf1"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/page-8976b233acf2b31e.js",revision:"8976b233acf2b31e"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/reset-password/page-4dbada040e9aba40.js",revision:"4dbada040e9aba40"},{url:"/_next/static/chunks/app/%5Bname%5D/(Proxy)/auth/signup/page-0ebf83b6c045cf7d.js",revision:"0ebf83b6c045cf7d"},{url:"/_next/static/chunks/app/%5Bname%5D/layout-415246312725aa40.js",revision:"415246312725aa40"},{url:"/_next/static/chunks/app/_not-found/page-034f1789b0eaeb6b.js",revision:"034f1789b0eaeb6b"},{url:"/_next/static/chunks/app/auth/layout-61580b9e8f17d80b.js",revision:"61580b9e8f17d80b"},{url:"/_next/static/chunks/app/auth/login/page-cba05b06655ef0fd.js",revision:"cba05b06655ef0fd"},{url:"/_next/static/chunks/app/auth/page-1c214df712f5be68.js",revision:"1c214df712f5be68"},{url:"/_next/static/chunks/app/auth/reset-password/page-51fdc09530ec7a07.js",revision:"51fdc09530ec7a07"},{url:"/_next/static/chunks/app/auth/signup/page-4a58e25ca8f3187f.js",revision:"4a58e25ca8f3187f"},{url:"/_next/static/chunks/app/layout-377b7d7a3fdb9248.js",revision:"377b7d7a3fdb9248"},{url:"/_next/static/chunks/app/loading-5d7f7eb7a6350d78.js",revision:"5d7f7eb7a6350d78"},{url:"/_next/static/chunks/app/page-99f323bd08352c38.js",revision:"99f323bd08352c38"},{url:"/_next/static/chunks/d0deef33.59194872e4111dca.js",revision:"59194872e4111dca"},{url:"/_next/static/chunks/framework-ce757b396f77691a.js",revision:"ce757b396f77691a"},{url:"/_next/static/chunks/main-82b194b1f42f50c9.js",revision:"82b194b1f42f50c9"},{url:"/_next/static/chunks/main-app-fb228aef04f005ac.js",revision:"fb228aef04f005ac"},{url:"/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js",revision:"4b3fb5e477a0267f"},{url:"/_next/static/chunks/pages/_error-c970d8b55ace1b48.js",revision:"c970d8b55ace1b48"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-a7b619345ad6772d.js",revision:"a7b619345ad6772d"},{url:"/_next/static/css/2c2be3c8248b4741.css",revision:"2c2be3c8248b4741"},{url:"/_next/static/css/d4d912441513ab02.css",revision:"d4d912441513ab02"},{url:"/_next/static/media/layers-2x.9859cd12.png",revision:"9859cd12"},{url:"/_next/static/media/layers.ef6db872.png",revision:"ef6db872"},{url:"/_next/static/media/marker-icon.d577052a.png",revision:"d577052a"},{url:"/_next/static/w98GkYHG2mhE-I1I-j6rQ/_buildManifest.js",revision:"c43756d170caef601c10adc53bd276cb"},{url:"/_next/static/w98GkYHG2mhE-I1I-j6rQ/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/apple-icon.png",revision:"0c11163d9876662afd598cdb681bb2e4"},{url:"/assets/css/fonts.css",revision:"b23bd571553a35e52be7bdfb8805ba5e"},{url:"/assets/fonts/Irancell_Bold.ttf",revision:"e5160b0c919e044bfbcf18a58dd04ad2"},{url:"/assets/fonts/Irancell_Bold.woff",revision:"ed06d53485fd8044e79894bedc597104"},{url:"/assets/fonts/Irancell_Bold.woff2",revision:"04e0058cbeb4dfe083dbf98370ae885e"},{url:"/assets/fonts/Irancell_ExtraBold.ttf",revision:"aca587f4f429c26e887e102f4d46bd27"},{url:"/assets/fonts/Irancell_ExtraBold.woff",revision:"eb70794e10fd476987930ef523ed8a33"},{url:"/assets/fonts/Irancell_ExtraBold.woff2",revision:"5f66486a89926925c4eabcb76aea6ca1"},{url:"/assets/fonts/Irancell_ExtraLight.ttf",revision:"85dd3b644afbabbea860e70d91adb665"},{url:"/assets/fonts/Irancell_ExtraLight.woff",revision:"7491ed7a70e2b9f8fa19c20eac497c12"},{url:"/assets/fonts/Irancell_ExtraLight.woff2",revision:"807b703a3924972991de43d76764f404"},{url:"/assets/fonts/Irancell_Light.ttf",revision:"911a07e375667ba6feeca9a527bc537d"},{url:"/assets/fonts/Irancell_Light.woff",revision:"9c1e83ee95bb25d5adc97011bbab2ae5"},{url:"/assets/fonts/Irancell_Light.woff2",revision:"34404e8d01d1ee40a5bc00311ae2add4"},{url:"/assets/fonts/Irancell_Medium.ttf",revision:"2b8b7463718f1930afc053208efe986e"},{url:"/assets/fonts/Irancell_Medium.woff",revision:"e952c2a8c784e1b13c606f4b9b300310"},{url:"/assets/fonts/Irancell_Medium.woff2",revision:"1955af7b1d4244b4034b793c4435a7e3"},{url:"/assets/fonts/Irancell_Regular.ttf",revision:"3c29a31eaec7ddd32d41879dfcce95b8"},{url:"/assets/fonts/Irancell_Regular.woff",revision:"c9d7d00bddfd0595b68e750574b28312"},{url:"/assets/fonts/Irancell_Regular.woff2",revision:"89eb5fb2d1409229407d1a75426acda0"},{url:"/assets/images/avatar.svg",revision:"ce25555161d92f081746041e2815919a"},{url:"/assets/images/danak-logo.png",revision:"bfbbcd927b3e359c7ab8047211f7c3a3"},{url:"/assets/images/food-image.png",revision:"34520f66d5224a61eca7e83646bdb31e"},{url:"/assets/images/food-preview-hq.png",revision:"42968e21a3044f80db7399459768a16c"},{url:"/assets/images/food-preview.png",revision:"bfc910395c189bfc145fa950dbcca749"},{url:"/assets/images/login-banner.png",revision:"29a467b532dbf3c6e8bcd45e08ea3cde"},{url:"/assets/images/report-hero.svg",revision:"fe10be00fde304933f91cdedab597494"},{url:"/assets/images/user-avatar.png",revision:"0d4b4612ad00442263d2a41754fcadcc"},{url:"/file.svg",revision:"d09f95206c3fa0bb9bd9fefabfd0ea71"},{url:"/globe.svg",revision:"2aaafa6a49b6563925fe440891e32717"},{url:"/icon0.svg",revision:"6d2cbb302b9f3ef7f2b43ae7d355f6c9"},{url:"/icon1.png",revision:"14e00a23129ccbbe02a835997ecca6c0"},{url:"/icons/restaurant-marker.svg",revision:"72add246cf474e9b703edd352a50b1c8"},{url:"/icons/web-app-manifest-192x192.png",revision:"2bd31374f516557201d060ad4c5695c4"},{url:"/icons/web-app-manifest-512x512.png",revision:"d0f9aa93e12fc2ed5b220efa3db4e689"},{url:"/manifest.json",revision:"fcaa8d06b59646efa18f5d20d22b5ef9"},{url:"/manifests/zhivan/manifest.json",revision:"d4005805de3b85c31998a3fb4bb1dad3"},{url:"/marker-icon-2x.png",revision:"1c824216f354218b04b25a57e0f7ab1f"},{url:"/marker-icon.png",revision:"1c824216f354218b04b25a57e0f7ab1f"},{url:"/marker-shadow.png",revision:"44014eaa598e7050354603adfb44f812"},{url:"/next.svg",revision:"8e061864f388b47f33a1c3780831193e"},{url:"/vercel.svg",revision:"c0af2f507b369b085b35ef4bbe3bcf1e"},{url:"/window.svg",revision:"a2760511c65806022ad20adf74370ff3"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:a,event:s,state:n})=>a&&"opaqueredirect"===a.type?new Response(a.body,{status:200,statusText:"OK",headers:a.headers}):a}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>{if(!(self.origin===e.origin))return!1;const a=e.pathname;return!a.startsWith("/api/auth/")&&!!a.startsWith("/api/")},new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")},new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>!(self.origin===e.origin),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")}); diff --git a/src/app/[name]/(Dialogs)/cart/types/Types.ts b/src/app/[name]/(Dialogs)/cart/types/Types.ts index c796291..fda3183 100644 --- a/src/app/[name]/(Dialogs)/cart/types/Types.ts +++ b/src/app/[name]/(Dialogs)/cart/types/Types.ts @@ -16,6 +16,12 @@ export interface CartItem { totalPrice: number; } +export interface Coupon { + couponId: string; + couponName: string; + couponCode: string; +} + export interface CartData { userId: string; restaurantId: string; @@ -34,6 +40,7 @@ export interface CartData { deliveryMethodId?: string; addressId?: string; paymentMethodId?: string; + coupon?: Coupon; } export interface CartCategory { diff --git a/src/app/[name]/(Dialogs)/order/checkout/[id]/components/CouponSection.tsx b/src/app/[name]/(Dialogs)/order/checkout/[id]/components/CouponSection.tsx index bb050be..da70b13 100644 --- a/src/app/[name]/(Dialogs)/order/checkout/[id]/components/CouponSection.tsx +++ b/src/app/[name]/(Dialogs)/order/checkout/[id]/components/CouponSection.tsx @@ -1,10 +1,15 @@ 'use client'; -import Combobox, { ComboboxOption } from '@/components/combobox/Combobox'; import InputField from '@/components/input/InputField'; import clsx from 'clsx'; -import { Cup, Icon, Ticket, TicketDiscount } from 'iconsax-react'; +import { Cup, Icon, TickCircle, Ticket, Trash } from 'iconsax-react'; import { useTranslation } from 'react-i18next'; +import { useApplyCoupon, useRemoveCoupon } from '../../hooks/useOrderData'; +import Button from '@/components/button/PrimaryButton'; +import { extractErrorMessage } from '@/lib/func'; +import { toast } from '@/components/Toast'; +import { useEffect, useState } from 'react'; +import { useGetCartItems } from '@/app/[name]/(Dialogs)/cart/hooks/useCartData'; type CouponSectionProps = { couponType: string; @@ -21,26 +26,58 @@ export const CouponSection = ({ onCouponTypeChange, onCouponCodeChange, }: CouponSectionProps) => { - const { t } = useTranslation('parallels', { keyPrefix: 'OrderDetail' }); + const { t } = useTranslation('parallels', { keyPrefix: 'OrderDetail' }); + const { mutate: applyCoupon, isPending } = useApplyCoupon(); + const { mutate: removeCoupon, isPending: isRemoving } = useRemoveCoupon(); + const { data: cartItems } = useGetCartItems(); + const [isApplied, setIsApplied] = useState(false); const couponOptions: Array<{ id: string, label: string, icon: Icon }> = [ { id: '0', label: t("SectionCoupon.InputCouponType.Options.Discount"), icon: Cup }, { id: '1', label: t("SectionCoupon.InputCouponType.Options.GiftCard"), icon: Ticket }, ]; - const couponDropdownOptions: Array = [ - { id: '0', title: t("SectionCoupon.InputCouponCode.Options.Default") }, - { id: '1', title: "Something" }, - ]; - - const handleCouponCodeChange = (id: string) => { - if (id === '0') { - onCouponCodeChange(''); - return; - } - onCouponCodeChange(id); + const handleApplyCoupon = () => { + applyCoupon(couponCode, { + onSuccess: () => { + toast('کوپن با موفقیت اعمال شد', 'success'); + setIsApplied(true); + }, + onError: (error) => { + toast(extractErrorMessage(error), 'error'); + setIsApplied(false); + } + }); }; + const handleCouponCodeChange = (value: string) => { + onCouponCodeChange(value); + if (isApplied) { + setIsApplied(false); + } + }; + + const handleRemoveCoupon = () => { + removeCoupon(undefined, { + onSuccess: () => { + toast('کوپن با موفقیت حذف شد', 'success'); + setIsApplied(false); + onCouponCodeChange(''); + }, + onError: (error) => { + toast(extractErrorMessage(error), 'error'); + } + }); + }; + + useEffect(() => { + const hasCoupon = (cartItems?.data?.couponDiscount ?? 0) > 0; + setIsApplied(hasCoupon); + if (hasCoupon && cartItems?.data?.coupon?.couponCode) { + onCouponCodeChange(cartItems.data.coupon.couponCode); + } + }, [cartItems, onCouponCodeChange]); + return (
@@ -57,7 +94,7 @@ export const CouponSection = ({ /> {label} - + onCouponTypeChange(id)} @@ -69,33 +106,50 @@ export const CouponSection = ({ ))}
- handleCouponCodeChange(String(i))} - /> + {isApplied ? ( +
+
+ + کد تخفیف اعمال شده + {couponCode} +
+ +
+ ) : ( +
+ handleCouponCodeChange(e.target.value)} + value={couponCode} + /> + +
+ )} + - onCouponCodeChange(e.target.value)} - value={couponCode} - />
); diff --git a/src/app/[name]/(Dialogs)/order/checkout/[id]/page.tsx b/src/app/[name]/(Dialogs)/order/checkout/[id]/page.tsx index c20b363..0a0cf1a 100644 --- a/src/app/[name]/(Dialogs)/order/checkout/[id]/page.tsx +++ b/src/app/[name]/(Dialogs)/order/checkout/[id]/page.tsx @@ -79,6 +79,12 @@ function OrderDetailInex() { } }, [cartItems?.data?.addressId, setAddressCart, setIsSelectedAddress, setSelectedAddressId]); + useEffect(() => { + if (cartItems?.data?.coupon?.couponCode && cartItems.data.couponDiscount > 0) { + setCouponCode(cartItems.data.coupon.couponCode); + } + }, [cartItems?.data?.coupon?.couponCode, cartItems?.data?.couponDiscount]); + const selectedDeliveryMethod = useMemo(() => { if (!shipmentMethod?.data || !deliveryType) return null; return shipmentMethod.data.find((item) => item.id === deliveryType); diff --git a/src/app/[name]/(Dialogs)/order/checkout/hooks/useOrderData.ts b/src/app/[name]/(Dialogs)/order/checkout/hooks/useOrderData.ts index fb71d91..8a12265 100644 --- a/src/app/[name]/(Dialogs)/order/checkout/hooks/useOrderData.ts +++ b/src/app/[name]/(Dialogs)/order/checkout/hooks/useOrderData.ts @@ -1,4 +1,4 @@ -import { useMutation, useQuery } from "@tanstack/react-query"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { getPaymentMethod, getShipmentMethod, @@ -6,6 +6,8 @@ import { setDeliveryMethod, setPaymentMethod, createOrder, + applyCoupon, + removeCoupon, } from "../service/OrderService"; export const useGetShipmentMethod = () => { @@ -45,3 +47,25 @@ export const useCreateOrder = () => { mutationFn: createOrder, }); }; + +export const useApplyCoupon = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: applyCoupon, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["cart-items"] }); + queryClient.invalidateQueries({ queryKey: ["cart-total"] }); + }, + }); +}; + +export const useRemoveCoupon = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: removeCoupon, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["cart-items"] }); + queryClient.invalidateQueries({ queryKey: ["cart-total"] }); + }, + }); +}; diff --git a/src/app/[name]/(Dialogs)/order/checkout/service/OrderService.ts b/src/app/[name]/(Dialogs)/order/checkout/service/OrderService.ts index 53691d6..6e6b43f 100644 --- a/src/app/[name]/(Dialogs)/order/checkout/service/OrderService.ts +++ b/src/app/[name]/(Dialogs)/order/checkout/service/OrderService.ts @@ -42,3 +42,13 @@ export const createOrder = async (): Promise => { const { data } = await api.post("/public/checkout"); return data; }; + +export const applyCoupon = async (code: string) => { + const { data } = await api.post("/public/cart/apply-coupon", { code }); + return data; +}; + +export const removeCoupon = async () => { + const { data } = await api.delete("/public/cart/coupon"); + return data; +};