From 9a9ffe25f2720ca8f6fe07a598dc5fe3a92c17e7 Mon Sep 17 00:00:00 2001 From: Arnaud Date: Tue, 8 Oct 2024 12:43:41 +0200 Subject: [PATCH] Add a temporary link between the storage request CID and the metadata --- src/proxy.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/proxy.ts b/src/proxy.ts index ad1c8ec..4ae93a3 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -1,13 +1,16 @@ import { + CodexCreateStorageRequestInput, CodexData, CodexDataResponse, CodexMarketplace, + CodexPurchase, SafeValue, UploadResponse, } from "@codex-storage/sdk-js"; import { CodexSdk as Sdk } from "./sdk/codex"; import { WebStorage } from "./utils/web-storage"; import { FilesStorage } from "./utils/file-storage"; +import { PurchaseDatesStorage, PurchaseStorage } from "./utils/purchases-storage"; class CodexDataMock extends CodexData { override upload( @@ -80,7 +83,46 @@ class CodexDataMock extends CodexData { } } + class CodexMarketplaceMock extends CodexMarketplace { + // override async purchases(): Promise> { + // const res = await super.purchases() + + // if (res.error) { + // return res + // } + + // const defaultDate = new Date(0, 0, 0, 0, 0, 0).toJSON() + // const dates = await Promise.all(res.data.map(p => PurchaseDatesStorage.get(p.requestId))) + + // return { + // error: false, data: res.data + // .map((p, index) => ({ ...p, createdAt: new Date(dates[index] || defaultDate).getTime() })) + // .sort((a, b) => b.createdAt - a.createdAt) + // } + // } + + /** + * Maintains a temporary link between the CID and the file metadata. + * When the metadata is available in the manifest, the CID link + * should still be maintained, but the metadata should be retrieved + * using a REST API call. + */ + override async createStorageRequest(input: CodexCreateStorageRequestInput): Promise> { + const res = await super.createStorageRequest(input) + + if (res.error) { + return res + } + + await PurchaseStorage.set("0x" + res.data, input.cid) + + // await PurchaseDatesStorage.set(res.data, new Date().toJSON()) + + return res + } + + // override createStorageRequest( // input: CodexCreateStorageRequestInput // ): Promise> {