writeFiles method
Upload multiple WalrusFiles as a quilt in a single call.
Reads bytes, identifiers, and tags from each file, encodes them into a quilt, and uploads as a single Walrus blob.
Returns a list of WriteFileResult with the patch ID for each file.
Mirrors the TS SDK's writeFiles().
Implementation
Future<List<WriteFileResult>> writeFiles({
required List<WalrusFile> files,
required int epochs,
required SuiAccount signer,
required bool deletable,
String? owner,
String? walCoinObjectId,
Map<String, String?>? attributes,
}) async {
final blobs = <QuiltBlob>[];
for (var i = 0; i < files.length; i++) {
final file = files[i];
blobs.add(
QuiltBlob(
contents: await file.bytes(),
identifier: await file.getIdentifier() ?? 'file-$i',
tags: await file.getTags(),
),
);
}
final result = await writeQuilt(
blobs: blobs,
epochs: epochs,
signer: signer,
deletable: deletable,
owner: owner,
walCoinObjectId: walCoinObjectId,
attributes: attributes,
);
return result.patches.map((patch) {
return WriteFileResult(
id: patch.patchId,
blobId: result.blobId,
blobObjectId: result.blobObjectId,
);
}).toList();
}