pod-space-folder

This library was generated with tsdx.

Usage no npm install needed!

<script type="module">
  import podSpaceFolder from 'https://cdn.skypack.dev/pod-space-folder';
</script>

README

pod-space-folder

This library was generated with tsdx.

This package prepare file management ui for specific userGroupHash based on podspace endpoints.

❗⚠️❗ Warning:

This package designed for react apps

usage

npm i pod-space-folder --save

import PodSpaceFolder from 'pod-space-folder';";
const App = () => {

 const handleError = (error: Error) => {
  //you can handle errors of package requests to podspace server
  console.log(error);
 };

 const onRefresh = (): Promise<string | null> => {
  return new Promise(async (resolve, reject) => {
   // on 401 status error code you should refresh token
   await RefreshToken();
   resolve(newRefreshToken);
  });
 };

 const onSuccess = (fileHash: string, userGroupHash: string): Promise<boolean> => {
  return new Promise(async (resolve, reject) => {
   // share hash of uploaded file to usergroupHash with your bussiness token
   // resolve promise with true if share request is successfull and false if not
   resolve(true);
  });
 };

 const onSelect = (file: IFile) => {
  console.log(file);
 };

  return (
    <div>
     <PodSpaceFolder
      userToken={''}
      userGroupHash={''}
      handleError={handleError}
      onSuccess={onSuccess}
      podspaceApi={''} // podspace backend server
      onRefresh={onRefresh}
      onSelect={onSelect} // return selected file details
      // You can define your menu for each file in list
      menu={[
       {
        text: 'first title',
        onClick: (file: IFile) => console.log(file),
        icon: <AppleIcon />,//
       },
       {
        text: 'second title',
        onClick: (file: IFile) => console.log(file),
        icon: <AccessAlarmIcon />,
       },
       {
        text: 'third title',
        onClick: (file: IFile) => console.log(file),
        icon: <AcUnitIcon />,
       },
      ]}
     />
    </div>
  );

};

Interfaces (if you using typescript):


    declare interface IFile {

        hash: string;

        name: string;

        type: string;

        parentHash: string;

        owner: IUser;

        uploader: IUser;

        attributes: string[];

        created: number;

        updated: number;

        extension: string;

        size: number;

        metaData: string;

        version: number;

        thumbnail: 'WAITING_FOR_THUMBNAIL' | string;

        uploadTime?: number;

    }



    declare interface IUser {

        avatar: string;

        name: string;

        roles: ERoles[];

        ssoId: number;

        username: string;

    }



    enum ERoles {

        USER_ROLE = 'USER_ROLE',

        USER_GROUP_MANAGER_ROLE = 'USER_GROUP_MANAGER_ROLE',

        ADMIN_ROLE = 'ADMIN_ROLE',

    }

;)