import { prepareUploadFile } from "@/lib/bucket/prepareUpload"
import { uploadChunkCount, readFileChunk } from "@/lib/bucket/uploadChunk"
import { storeFile } from "@/services/bucket/store-file"
import { getWalletActor } from "@/services/wallet"
const prepared = await prepareUploadFile(file)
await storeFile(identity, prepared.file, {
bucketId: "icp",
path: prepared.path,
contentType: prepared.contentType,
apiKey: "icp_cloud_…",
})
const actor = await getWalletActor(identity)
const begin = await actor.beginFileUpload(
"icp", "/big.zip", "application/zip", BigInt(file.size), ["icp_cloud_…"]
)
if ("err" in begin) throw new Error(begin.err)
const uploadId = begin.ok
const total = uploadChunkCount(file.size)
for (let i = 0; i < total; i++) {
const bytes = await readFileChunk(file, i, total)
await actor.uploadFileChunkIndexed(uploadId, BigInt(i), bytes)
}
await actor.completeFileUpload(uploadId, ["icp_cloud_…"])
await actor.getUpload(uploadId)
await actor.cancelUpload(uploadId)