Object Storage
Setup
Here is how to use the Object Storage service of the Crewdle SDK. Each user wanting to join must open a bucket with the same name.
import { PayloadAction, StorageEventType } from '@crewdle/web-sdk-types';
const objectStore = await cluster.openObjectStoreBucket('objectStore');
You can now either subscribe to the object store to allow you to catch events being fired.
objectStore.subscribe(({ event, payload}) => {
switch (event) {
// Fired when a new file is written or updated
case StorageEventType.FileWrite:
console.log('FileWrite', payload.file);
break;
// Fired when a file is deleted
case StorageEventType.FileDelete:
console.log('FileDelete', payload.pathName);
break;
// Fired when a file is moved or renamed
case StorageEventType.FileMove:
console.log('FileMove', payload.pathName, payload.oldPathName);
break;
// Fired when a new folder is created
case StorageEventType.FolderCreate:
console.log('FolderCreate', payload.folder);
break;
// Fired when a folder is deleted
case StorageEventType.FolderDelete:
console.log('FolderDelete', payload.pathName);
break;
// Fired when a folder is moved or renamed
case StorageEventType.FolderMove:
console.log('FolderMove', payload.pathName, payload.oldPathName);
break;
}
});
Or publish actions to be performed on the object store.
let file = new File(['Writing', 'a', 'file'], 'crewdleFile');
const path = '/';
const newPath = '/newPath';
await objectStore.publish({ action: PayloadAction.File, file, path });
await objectStore.publish({ action: PayloadAction.Folder, path: `${path}crewdle-folder`});
await objectStore.publish({ action: PayloadAction.Move, path, newPath });
If you need to delete an element from the object store, you can simply unpublish it.
await objectStore.unpublish(newPath);
You can also get a list of files and folders available in the bucket. The search can be recursive which means you will get a folder and all its subfolders along with the files or not recursive which will only give you the files and folders of the specified folder.
await objectStore.list(newPath); await objectStore.list(path, true); file = await objectStore.get(newPath);
When you no longer need to interact with the object store, you can either unsubscribe or close it altogether.
objectStore.unsubscribe(); objectStore.close();
Additional Resources
See the Getting Started section for more information about initiating the SDK and a cluster.
To see a full example of our Object Store being used, checkout our Object Store sample. For more information on the services used in this page, head to our SDK reference