Managing Files
Stores allow you to exchange and save files. In this section, we'll take a closer look at file structures and how to manage them effectively. We'll also cover some best practices when working with Stores.
About Files
Along with a file's main content, additional metadata is stored to allow easy file management. Below is the structure of the metadata associated with each file:
field | type | encrypted | description |
---|---|---|---|
info | ServerFileInfo | yes | additional information assigned by the server e.g. author, creationDate , storeID and fileID |
publicMeta | binary | no | additional public information about the message, also accessible through Platform REST API |
privateMeta | binary | yes | additional information about the message |
size | number | yes | The size of file in getBytes |
authorPubKey | string | yes | The public key of the author of the file |
statusCode | number | no | 0 if the file was decrypted successfully |
Listing files
Here's how you can retrieve and list files from a Store:
const files = await Endpoint.connection().store('STORE_ID').getFiles(0, {
sort: 'desc',
pageSize: 100
});
const decoder = new TextDecoder();
files.readItems.forEach((file) => {
const privateMeta = decoder.decode(file.privateMeta);
const publicMeta = decoder.decode(file.publicMeta);
return {
...file,
publicMeta,
privateMeta
};
});
Deleting Files
Deleting a file is straightforward, but be aware that this action is irreversible:
await Endpoint.connection().stores.deleteFile("FILE_ID");