diff --git a/package-lock.json b/package-lock.json index daa3c85..7312694 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@codex-storage/marketplace-ui-components": "^0.0.51", - "@codex-storage/sdk-js": "^0.0.17", + "@codex-storage/sdk-js": "^0.0.18", "@sentry/browser": "^8.32.0", "@sentry/react": "^8.31.0", "@tanstack/react-query": "^5.51.15", @@ -433,9 +433,9 @@ } }, "node_modules/@codex-storage/sdk-js": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@codex-storage/sdk-js/-/sdk-js-0.0.17.tgz", - "integrity": "sha512-rd9c1TkLJMPSjxg9IFoDmK44DaEOU0nGHK9YVGy9Sdnw4oiWTv5wl2N1U8UMkQT+aWBKmwy/VHLdocTqwazdpA==", + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@codex-storage/sdk-js/-/sdk-js-0.0.18.tgz", + "integrity": "sha512-FbQFRJgSuol6P00Wk76XShSGDIlQpTEr4Zgt3Ze1uRxC8gVpVRiHME2Z5/EOq7Fm25So9aCSD7MSKDULanHDpQ==", "license": "MIT", "dependencies": { "valibot": "^0.32.0" diff --git a/package.json b/package.json index 9f71a86..22aa159 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ ], "dependencies": { "@codex-storage/marketplace-ui-components": "^0.0.51", - "@codex-storage/sdk-js": "^0.0.17", + "@codex-storage/sdk-js": "^0.0.18", "@sentry/browser": "^8.32.0", "@sentry/react": "^8.31.0", "@tanstack/react-query": "^5.51.15", diff --git a/src/components/Purchase/PurchasesTable.tsx b/src/components/Purchase/PurchasesTable.tsx index c776850..120349c 100644 --- a/src/components/Purchase/PurchasesTable.tsx +++ b/src/components/Purchase/PurchasesTable.tsx @@ -90,9 +90,9 @@ export function PurchasesTable() { const rows = sorted.map((p, index) => { const r = p.request; const ask = p.request.ask; - const duration = parseInt(p.request.ask.duration, 10); - const pf = parseInt(p.request.ask.proofProbability, 10); - + const duration = parseInt(ask.duration, 10); + const pf = parseInt(ask.proofProbability, 10); + const reward = PurchaseUtils.calculatePrice(p.request); return ( , {Times.pretty(duration)}, {ask.slots.toString()}, - {ask.reward + " CDX"}, + {reward + " CDX"}, {pf.toString()}, , ]}> diff --git a/src/components/Purchase/purchase.utils.ts b/src/components/Purchase/purchase.utils.ts index 3005d8b..6ee7977 100644 --- a/src/components/Purchase/purchase.utils.ts +++ b/src/components/Purchase/purchase.utils.ts @@ -1,42 +1,43 @@ -import { TabSortState } from "@codex-storage/marketplace-ui-components" -import { CodexPurchase } from "@codex-storage/sdk-js" +import { TabSortState } from "@codex-storage/marketplace-ui-components"; +import { CodexPurchase, CodexStorageRequest } from "@codex-storage/sdk-js"; export const PurchaseUtils = { - sortById: (state: TabSortState) => - (a: CodexPurchase, b: CodexPurchase) => { - - return state === "desc" - ? b.requestId - .toLocaleLowerCase() - .localeCompare(a.requestId.toLocaleLowerCase()) - : a.requestId - .toLocaleLowerCase() - .localeCompare(b.requestId.toLocaleLowerCase()) - }, - sortByState: (state: TabSortState) => - (a: CodexPurchase, b: CodexPurchase) => state === "desc" - ? b.state - .toLocaleLowerCase() - .localeCompare(a.state.toLocaleLowerCase()) - : a.state - .toLocaleLowerCase() - .localeCompare(b.state.toLocaleLowerCase()) - , - sortByDuration: (state: TabSortState) => - (a: CodexPurchase, b: CodexPurchase) => state === "desc" - ? Number(b.request.ask.duration) - Number(a.request.ask.duration) - : Number(a.request.ask.duration) - Number(b.request.ask.duration) - , - sortByReward: (state: TabSortState) => - (a: CodexPurchase, b: CodexPurchase) => state === "desc" - ? Number(b.request.ask.reward) - Number(a.request.ask.reward) - : Number(a.request.ask.reward) - Number(b.request.ask.reward) - , - sortByUploadedAt: (state: TabSortState, table: Record) => - (a: CodexPurchase, b: CodexPurchase) => { - return state === "desc" - ? (table[b.requestId] || 0) - (table[a.requestId] || 0) - : (table[a.requestId] || 0) - (table[b.requestId] || 0) - } - , -} \ No newline at end of file + sortById: (state: TabSortState) => (a: CodexPurchase, b: CodexPurchase) => { + return state === "desc" + ? b.requestId + .toLocaleLowerCase() + .localeCompare(a.requestId.toLocaleLowerCase()) + : a.requestId + .toLocaleLowerCase() + .localeCompare(b.requestId.toLocaleLowerCase()); + }, + sortByState: (state: TabSortState) => (a: CodexPurchase, b: CodexPurchase) => + state === "desc" + ? b.state.toLocaleLowerCase().localeCompare(a.state.toLocaleLowerCase()) + : a.state.toLocaleLowerCase().localeCompare(b.state.toLocaleLowerCase()), + sortByDuration: + (state: TabSortState) => (a: CodexPurchase, b: CodexPurchase) => + state === "desc" + ? Number(b.request.ask.duration) - Number(a.request.ask.duration) + : Number(a.request.ask.duration) - Number(b.request.ask.duration), + sortByReward: + (state: TabSortState) => (a: CodexPurchase, b: CodexPurchase) => + state === "desc" + ? PurchaseUtils.calculatePrice(b.request) - + PurchaseUtils.calculatePrice(a.request) + : PurchaseUtils.calculatePrice(a.request) - + PurchaseUtils.calculatePrice(b.request), + sortByUploadedAt: + (state: TabSortState, table: Record) => + (a: CodexPurchase, b: CodexPurchase) => { + return state === "desc" + ? (table[b.requestId] || 0) - (table[a.requestId] || 0) + : (table[a.requestId] || 0) - (table[b.requestId] || 0); + }, + calculatePrice(request: CodexStorageRequest) { + return ( + parseInt(request.ask.slotSize, 10) * + parseInt(request.ask.pricePerBytePerSecond, 10) + ); + }, +}; diff --git a/src/components/StorageRequestSetup/StorageRequestCreate.tsx b/src/components/StorageRequestSetup/StorageRequestCreate.tsx index 3158d41..3300982 100644 --- a/src/components/StorageRequestSetup/StorageRequestCreate.tsx +++ b/src/components/StorageRequestSetup/StorageRequestCreate.tsx @@ -83,10 +83,11 @@ export function StorageRequestCreate() { WebStorage.set("storage-request-step", step); if (step == CONFIRM_STATE) { - const { availability, availabilityUnit, expiration, ...rest } = + const { availability, availabilityUnit, expiration, reward, ...rest } = storageRequest; mutateAsync({ ...rest, + pricePerBytePerSecond: reward, duration: Math.trunc(availability * Times.value(availabilityUnit)), expiry: expiration * 60, }); diff --git a/src/components/StorageRequestSetup/StorageRequestReview.tsx b/src/components/StorageRequestSetup/StorageRequestReview.tsx index 787e382..45f4895 100644 --- a/src/components/StorageRequestSetup/StorageRequestReview.tsx +++ b/src/components/StorageRequestSetup/StorageRequestReview.tsx @@ -290,13 +290,13 @@ export function StorageRequestReview({ onValidation={isInvalidNumber} title="Penality tokens"> + title="Price per byte">