Object Storage


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);
    // Fired when a file is deleted
    case StorageEventType.FileDelete:
      console.log('FileDelete', payload.pathName);
    // Fired when a file is moved or renamed
    case StorageEventType.FileMove:
      console.log('FileMove', payload.pathName, payload.oldPathName);
    // Fired when a new folder is created
    case StorageEventType.FolderCreate:
      console.log('FolderCreate', payload.folder);
    // Fired when a folder is deleted
    case StorageEventType.FolderDelete:
      console.log('FolderDelete', payload.pathName);
    // Fired when a folder is moved or renamed
    case StorageEventType.FolderMove:
      console.log('FolderMove', payload.pathName, payload.oldPathName);

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.



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