orders.ts
1 "use server" 2 3 import { sdk } from "@lib/config" 4 import medusaError from "@lib/util/medusa-error" 5 import { getAuthHeaders, getCacheOptions } from "./cookies" 6 import { HttpTypes } from "@medusajs/types" 7 8 export const retrieveOrder = async (id: string) => { 9 const headers = { 10 ...(await getAuthHeaders()), 11 } 12 13 const next = { 14 ...(await getCacheOptions("orders")), 15 } 16 17 return sdk.client 18 .fetch<HttpTypes.StoreOrderResponse>(`/store/orders/${id}`, { 19 method: "GET", 20 query: { 21 fields: 22 "*payment_collections.payments,*items,*items.metadata,*items.variant,*items.product", 23 }, 24 headers, 25 next, 26 cache: "force-cache", 27 }) 28 .then(({ order }) => order) 29 .catch((err) => medusaError(err)) 30 } 31 32 export const listOrders = async ( 33 limit: number = 10, 34 offset: number = 0, 35 filters?: Record<string, any> 36 ) => { 37 const headers = { 38 ...(await getAuthHeaders()), 39 } 40 41 const next = { 42 ...(await getCacheOptions("orders")), 43 } 44 45 return sdk.client 46 .fetch<HttpTypes.StoreOrderListResponse>(`/store/orders`, { 47 method: "GET", 48 query: { 49 limit, 50 offset, 51 order: "-created_at", 52 fields: "*items,+items.metadata,*items.variant,*items.product", 53 ...filters, 54 }, 55 headers, 56 next, 57 cache: "force-cache", 58 }) 59 .then(({ orders }) => orders) 60 .catch((err) => medusaError(err)) 61 } 62 63 export const createTransferRequest = async ( 64 state: { 65 success: boolean 66 error: string | null 67 order: HttpTypes.StoreOrder | null 68 }, 69 formData: FormData 70 ): Promise<{ 71 success: boolean 72 error: string | null 73 order: HttpTypes.StoreOrder | null 74 }> => { 75 const id = formData.get("order_id") as string 76 77 if (!id) { 78 return { success: false, error: "Order ID is required", order: null } 79 } 80 81 const headers = await getAuthHeaders() 82 83 return await sdk.store.order 84 .requestTransfer( 85 id, 86 {}, 87 { 88 fields: "id, email", 89 }, 90 headers 91 ) 92 .then(({ order }) => ({ success: true, error: null, order })) 93 .catch((err) => ({ success: false, error: err.message, order: null })) 94 } 95 96 export const acceptTransferRequest = async (id: string, token: string) => { 97 const headers = await getAuthHeaders() 98 99 return await sdk.store.order 100 .acceptTransfer(id, { token }, {}, headers) 101 .then(({ order }) => ({ success: true, error: null, order })) 102 .catch((err) => ({ success: false, error: err.message, order: null })) 103 } 104 105 export const declineTransferRequest = async (id: string, token: string) => { 106 const headers = await getAuthHeaders() 107 108 return await sdk.store.order 109 .declineTransfer(id, { token }, {}, headers) 110 .then(({ order }) => ({ success: true, error: null, order })) 111 .catch((err) => ({ success: false, error: err.message, order: null })) 112 }