{"version":3,"sources":["services/bucket/candid/idl.js","utils/error.ts","services/bucket/mappers.ts","services/httpError.ts","services/candidService.ts","services/bucket/bucket.client.ts","assets/dfn.svg","pages/Login.tsx","components/NavBar.tsx","pages/Dashboard.tsx","pages/UploadFile.tsx","pages/CreateFolder.tsx","pages/BuyStorage.tsx","index.tsx"],"names":["idlFactory","_ref","IDL","Version","Record","Nat32","BuyStorageArgs","Bool","BuyStorageResponse","Variant","Null","FileArgs","Vec","Nat8","Text","Nat64","Opt","Nat","FileCreationResponse","FolderInfoArgs","FolderInfoResponse","FileInfoArgs","FileInfoSuccessResult","FileInfoResponse","SaveUserArgs","UserRecord","SaveUserResponse","UserFilesArgs","UserFilesResponse","UserArgs","UserResponse","Service","Func","UnsupportedValueError","_Error","_inherits","_super","_createSuper","msg","value","_classCallCheck","call","concat","_createClass","_wrapNativeSuper","Error","uploadChunkResponse","candid","fileId","Success","file_id","fileInfoResponse","kind","isOwner","is_owner","fileSize","file_size","fileHash","Array","isArray","file_hash","Uint8Array","userResponse","byteLimit","byte_limit","bytesUsed","bytes_used","saveUserResponse","buyStorageResponse","createFolderResponse","userFilesResponse","files","forEach","file","push","name","mimeType","mime_type","HttpError","code","error","_this","message","stack","AuthError","_HttpError","_super2","_this2","toHttpError","statusLine","split","map","l","trim","toLowerCase","find","startsWith","parts","length","valueText","valueParts","parseInt","isNaN","CandidService","agent","factory","canisterId","service","this","Actor","createActor","key","_handleResponse","_asyncToGenerator","_regeneratorRuntime","mark","_callee","mapper","args","response","wrap","_context","prev","next","sent","t0","console","log","abrupt","stop","_x","_x2","_x3","apply","arguments","BucketClient","_CandidService","hash","totalSize","chunkSize","chunkIndex","bytes","expiryTimestampMillis","folderId","handleResponse","create_file","chunk_index","undefined","total_size","chunk_size","expiry","folder_id","file_info","user_info","userId","save_user","user_id","buy_storage","create_folder","user_files","Login","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","className","setClassName","handleLogin","_callee2","e","authClient","days","hours","nanoseconds","_context2","preventDefault","localStorage","removeItem","AuthClient","create","BigInt","login","onSuccess","_onSuccess","handleAuthenticated","identityProvider","maxTimeToLive","_handleAuthenticated","_callee3","host","_identity","_context3","process","getIdentity","isAuthenticated","HttpAgent","identity","retryTimes","fetchRootKey","Principal","fromText","saveUser","getPrincipal","then","catch","_jsx","children","_jsxs","onClick","src","dfn","alt","NavBar","logout","Dashboard","isLoaded","setIsLoaded","_useState3","_useState4","setFiles","_useState5","_useState6","folders","setFolders","_useState7","principalId","_useState8","userInfo","setUserInfo","useEffect","getUserInfo","storageFolderId","getItem","getFiles","storageFolders","JSON","parse","setItem","stringify","userFiles","_ref2","principal","toString","_userInfo","_Fragment","folder","_folder$folderId2","selectedFolder","removed","_folder$folderId","filteredFolders","filter","handleFolderNavigation","fileURL","_fileURL","replace","window","open","DownloadFile","UploadFile","inputRef","useRef","selectedFile","setSelectedFile","fileName","setFileName","fileAlert","setFileAlert","setIsFilePicked","_useState9","_useState10","openFileSelector","_inputRef$current","current","click","uploadChunk","data","hashBytes","sha3_256","update","arrayBuffer","submitHandler","event","reader","type","size","FileReader","onload","result","readAsArrayBuffer","htmlFor","readOnly","ref","onChange","target","CreateFolder","alertMessage","folderName","state","setState","prevState","_objectSpread","bucketClient","createFolder","placeholder","BuyStorage","buyStorage","ReactDOM","render","React","StrictMode","BrowserRouter","Routes","Route","index","element","path","document","getElementById"],"mappings":"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","file":"static/js/main.81a750bb.chunk.js","sourcesContent":["export const idlFactory = ({ IDL }) => {\n const Version = IDL.Record({\n 'major' : IDL.Nat32,\n 'minor' : IDL.Nat32,\n 'patch' : IDL.Nat32,\n });\n const InitArgs = IDL.Record({\n 'test_mode' : IDL.Bool,\n 'wasm_version' : Version,\n });\n const BuyStorageArgs = IDL.Record({});\n const BuyStorageResponse = IDL.Variant({\n 'Success' : IDL.Null,\n 'UserNotFound' : IDL.Null,\n });\n const FileArgs = IDL.Record({\n 'chunk_index' : IDL.Nat32,\n 'hash' : IDL.Vec(IDL.Nat8),\n 'name' : IDL.Text,\n 'mime_type' : IDL.Text,\n 'total_size' : IDL.Nat64,\n 'bytes' : IDL.Vec(IDL.Nat8),\n 'expiry' : IDL.Opt(IDL.Nat64),\n 'folder_id' : IDL.Opt(IDL.Nat),\n 'chunk_size' : IDL.Nat32,\n 'file_id' : IDL.Opt(IDL.Nat),\n });\n const FileCreationResponse = IDL.Variant({\n 'ChunkAlreadyExists' : IDL.Null,\n 'Full' : IDL.Null,\n 'ChunkSizeMismatch' : IDL.Null,\n 'FileTooBig' : IDL.Null,\n 'ChunkIndexTooHigh' : IDL.Null,\n 'Success' : IDL.Record({ 'file_id' : IDL.Nat }),\n 'FileExpired' : IDL.Null,\n 'HashMismatch' : IDL.Null,\n 'FileAlreadyExists' : IDL.Null,\n 'AllowanceExceeded' : IDL.Null,\n 'InvalidFileId' : IDL.Null,\n 'UserNotFound' : IDL.Null,\n });\n const FolderInfoArgs = IDL.Record({\n 'name' : IDL.Text,\n 'folder_id' : IDL.Opt(IDL.Nat),\n });\n const FolderInfoResponse = IDL.Variant({\n 'Success' : IDL.Record({ 'file_id' : IDL.Nat }),\n 'UserNotFound' : IDL.Null,\n });\n const FileInfoArgs = IDL.Record({ 'file_id' : IDL.Nat });\n const FileInfoSuccessResult = IDL.Record({\n 'is_owner' : IDL.Bool,\n 'file_hash' : IDL.Vec(IDL.Nat8),\n 'file_size' : IDL.Nat64,\n });\n const FileInfoResponse = IDL.Variant({\n 'NotFound' : IDL.Null,\n 'Success' : FileInfoSuccessResult,\n });\n const SaveUserArgs = IDL.Record({});\n const UserRecord = IDL.Record({\n 'byte_limit' : IDL.Nat64,\n 'bytes_used' : IDL.Nat64,\n });\n const SaveUserResponse = IDL.Variant({ 'Success' : UserRecord });\n const UserFilesArgs = IDL.Record({ 'folder_id' : IDL.Opt(IDL.Nat) });\n const UserFilesResponse = IDL.Variant({\n 'Success' : IDL.Vec(\n IDL.Record({\n 'name' : IDL.Opt(IDL.Text),\n 'mime_type' : IDL.Text,\n 'file_size' : IDL.Nat64,\n 'file_id' : IDL.Nat,\n })\n ),\n });\n const UserArgs = IDL.Record({});\n const UserResponse = IDL.Variant({\n 'Success' : UserRecord,\n 'UserNotFound' : IDL.Null,\n });\n return IDL.Service({\n 'buy_storage' : IDL.Func([BuyStorageArgs], [BuyStorageResponse], []),\n 'create_file' : IDL.Func([FileArgs], [FileCreationResponse], []),\n 'create_folder' : IDL.Func([FolderInfoArgs], [FolderInfoResponse], []),\n 'file_info' : IDL.Func([FileInfoArgs], [FileInfoResponse], ['query']),\n 'save_user' : IDL.Func([SaveUserArgs], [SaveUserResponse], []),\n 'user_files' : IDL.Func([UserFilesArgs], [UserFilesResponse], ['query']),\n 'user_info' : IDL.Func([UserArgs], [UserResponse], ['query']),\n });\n};\nexport const init = ({ IDL }) => {\n const Version = IDL.Record({\n 'major' : IDL.Nat32,\n 'minor' : IDL.Nat32,\n 'patch' : IDL.Nat32,\n });\n const InitArgs = IDL.Record({\n 'test_mode' : IDL.Bool,\n 'wasm_version' : Version,\n });\n return [InitArgs];\n};\n","export class UnsupportedValueError extends Error {\n constructor(msg: string, value: never) {\n super(`${msg}: ${value}`);\n }\n}\n","import type { \n CandidFileInfoResponse, \n CandidFileCreationResponse, \n CandidUserResponse, \n CandidSaveUserResponse, \n CandidBuyStorageResponse,\n CandidFolderInfoResponse,\n CandidUserFilesResponse,\n} from \"./candid/idl\";\nimport type { \n FileInfoResponse, \n UploadChunkResponse, \n UserResponse, \n SaveUserResponse, \n BuyStorageResponse,\n FolderInfoResponse,\n UserFilesResponse,\n} from \"../../domain/bucket\";\nimport { UnsupportedValueError } from \"../../utils/error\";\n\nexport function uploadChunkResponse(candid: CandidFileCreationResponse): UploadChunkResponse {\n if (\"Success\" in candid) {\n return {\n fileId: candid.Success.file_id,\n };\n }\n if (\"FileAlreadyExists\" in candid) {\n return \"file_already_exists\";\n }\n if (\"FileTooBig\" in candid) {\n return \"file_too_big\";\n }\n if (\"FileExpired\" in candid) {\n return \"file_expired\";\n }\n if (\"ChunkAlreadyExists\" in candid) {\n return \"chunk_already_exists\";\n }\n if (\"ChunkSizeMismatch\" in candid) {\n return \"chunk_size_mismatch\";\n }\n if (\"ChunkIndexTooHigh\" in candid) {\n return \"chunk_index_too_high\";\n }\n if (\"AllowanceExceeded\" in candid) {\n return \"allowance_exceeded\";\n }\n if (\"UserNotFound\" in candid) {\n return \"user_not_found\";\n }\n if (\"HashMismatch\" in candid) {\n return \"hash_mismatch\";\n }\n if (\"InvalidFileId\" in candid) {\n return \"invalid_file_id\";\n }\n if (\"Full\" in candid) {\n return \"full\";\n }\n throw new UnsupportedValueError(\"Unknown Bucket.CandidFileCreationResponse type received\", candid);\n}\n\nexport function fileInfoResponse(candid: CandidFileInfoResponse): FileInfoResponse {\n if (\"Success\" in candid) {\n return {\n kind: \"success\",\n isOwner: candid.Success.is_owner,\n fileSize: candid.Success.file_size,\n fileHash: Array.isArray(candid.Success.file_hash)\n ? new Uint8Array(candid.Success.file_hash)\n : candid.Success.file_hash,\n };\n }\n if (\"NotFound\" in candid) {\n return { kind: \"file_not_found\" };\n }\n throw new UnsupportedValueError(\"Unknown Bucket.CandidFileInfoResponse type received\", candid);\n}\n\nexport function userResponse(candid: CandidUserResponse): UserResponse {\n if (\"Success\" in candid) {\n return {\n kind: \"user\",\n byteLimit: candid.Success.byte_limit,\n bytesUsed: candid.Success.bytes_used,\n };\n }\n if (\"UserNotFound\" in candid) {\n return { kind: \"user_not_found\" };\n }\n throw new Error(\"CandidUserResponse type received\");\n}\n\nexport function saveUserResponse(candid: CandidSaveUserResponse): SaveUserResponse {\n if (\"Success\" in candid) {\n return {\n kind: \"user\",\n byteLimit: candid.Success.byte_limit,\n bytesUsed: candid.Success.bytes_used,\n };\n }\n throw new Error(\"CandidUserResponse type received\");\n}\n\nexport function buyStorageResponse(candid: CandidBuyStorageResponse): BuyStorageResponse {\n if (\"Success\" in candid) {\n return {\n kind: \"success\",\n \n };\n }\n if (\"UserNotFound\" in candid) {\n return { kind: \"user_not_found\" };\n }\n throw new Error(\"BuyStorageResponse type received\");\n}\n\nexport function createFolderResponse(candid: CandidFolderInfoResponse): FolderInfoResponse {\n if (\"Success\" in candid) {\n return {\n kind: \"success\",\n fileId: candid.Success.file_id,\n \n };\n }\n if (\"UserNotFound\" in candid) {\n return { kind: \"user_not_found\" };\n }\n throw new Error(\"BuyStorageResponse type received\");\n}\n\nexport function userFilesResponse(candid: CandidUserFilesResponse): UserFilesResponse {\n if (\"Success\" in candid) {\n let files: any[] = [];\n candid.Success.forEach((file) => {\n files.push({\n name: file.name,\n mimeType: file.mime_type,\n fileSize: file.file_size,\n fileId: file.file_id,\n });\n });\n return files;\n }\n throw new Error(\"UserFilesResponse type received\");\n}","export class HttpError extends Error {\n constructor(public code: number, error: Error) {\n super(error.message);\n this.stack = error.stack;\n this.name = \"HttpError\";\n }\n}\n\nexport class AuthError extends HttpError {\n constructor(public code: number, error: Error) {\n super(code, error);\n this.name = \"AuthError\";\n }\n}\n\nexport function toHttpError(error: Error): HttpError {\n let code = 500;\n\n const statusLine = error.message\n .split(\"\\n\")\n .map((l) => l.trim().toLowerCase())\n .find((l) => l.startsWith(\"code:\") || l.startsWith(\"http status code:\"));\n\n if (statusLine) {\n const parts = statusLine.split(\":\");\n if (parts && parts.length > 1) {\n let valueText = parts[1].trim();\n const valueParts = valueText.split(\" \");\n if (valueParts && valueParts.length > 1) {\n valueText = valueParts[0].trim();\n }\n code = parseInt(valueText, 10);\n if (isNaN(code)) {\n code = 500;\n }\n }\n }\n\n return code === 401 || code === 403 ? new AuthError(code, error) : new HttpError(code, error);\n}\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\nimport type { IDL } from \"@dfinity/candid\";\nimport type { Principal } from \"@dfinity/principal\";\nimport { toHttpError } from \"./httpError\";\n\nexport abstract class CandidService {\n protected service: T;\n\n protected constructor(agent: HttpAgent, factory: IDL.InterfaceFactory, canisterId: Principal) {\n this.service = Actor.createActor(factory, {\n agent,\n canisterId,\n });\n }\n\n protected async handleResponse(\n service: Promise,\n mapper: (from: From) => To,\n args?: unknown\n ): Promise {\n let response: From;\n try {\n response = await service;\n \n } catch (e) {\n console.log(e, args);\n throw toHttpError(e as Error);\n }\n return mapper(response);\n }\n}\n","import type { HttpAgent } from \"@dfinity/agent\";\nimport type { Principal } from \"@dfinity/principal\";\nimport type { IBucketClient } from \"./bucket.client.interface\";\nimport { idlFactory, BucketService } from \"./candid/idl\";\nimport { \n fileInfoResponse, \n uploadChunkResponse, \n userResponse,\n saveUserResponse,\n buyStorageResponse,\n createFolderResponse,\n userFilesResponse,\n} from \"./mappers\";\nimport { CandidService } from \"../candidService\";\nimport type { \n FileInfoResponse, \n UploadChunkResponse, \n UserResponse, \n SaveUserResponse, \n BuyStorageResponse, \n FolderInfoResponse,\n UserFilesResponse,\n} from \"../../domain/bucket\";\n\nexport class BucketClient extends CandidService implements IBucketClient {\n constructor(agent: HttpAgent, canisterId: Principal) {\n super(agent, idlFactory, canisterId);\n }\n\n uploadChunk(\n fileId: bigint | undefined,\n hash: Uint8Array,\n mimeType: string,\n totalSize: bigint,\n chunkSize: number,\n chunkIndex: number,\n bytes: Uint8Array,\n expiryTimestampMillis: bigint | undefined,\n name: string,\n folderId: bigint | undefined\n ): Promise {\n return this.handleResponse(\n this.service.create_file({\n chunk_index: chunkIndex,\n file_id: fileId !== undefined ? [fileId] : [],\n hash,\n mime_type: mimeType,\n total_size: totalSize,\n bytes,\n chunk_size: chunkSize,\n expiry: expiryTimestampMillis !== undefined ? [expiryTimestampMillis] : [],\n name,\n folder_id: folderId !== undefined ? [folderId] : [],\n }),\n uploadChunkResponse\n );\n }\n\n fileInfo(fileId: bigint): Promise {\n return this.handleResponse(\n this.service.file_info({ file_id: fileId }),\n fileInfoResponse\n )\n }\n\n userInfo(): Promise {\n return this.handleResponse(\n this.service.user_info({}),\n userResponse\n )\n }\n\n saveUser(userId: Principal, byte_limit: bigint): Promise {\n return this.handleResponse(\n this.service.save_user({\n byte_limit: byte_limit,\n user_id: userId\n }),\n saveUserResponse\n )\n }\n\n buyStorage(): Promise {\n return this.handleResponse(\n this.service.buy_storage({}),\n buyStorageResponse\n )\n }\n\n createFolder(name: string, folderId: bigint | undefined): Promise {\n return this.handleResponse(\n this.service.create_folder({\n name: name,\n folder_id: folderId !== undefined ? [folderId] : [],\n }),\n createFolderResponse\n )\n }\n\n userFiles(folderId: bigint | undefined): Promise {\n return this.handleResponse(\n this.service.user_files({\n folder_id: folderId !== undefined ? [folderId] : [],\n }),\n userFilesResponse\n )\n }\n}\n","export default __webpack_public_path__ + \"static/media/dfn.44b3ce7e.svg\";","import React from 'react';\nimport { useState } from 'react';\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { Identity, HttpAgent } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useNavigate } from \"react-router-dom\";\nimport { BucketClient } from \"../services/bucket/bucket.client\";\nimport dfn from '../assets/dfn.svg';\nimport './Login.css';\n\n\nfunction Login() {\n let navigate = useNavigate();\n const [className, setClassName] = useState('login-button');\n \n const handleLogin = async (e: React.FormEvent) => {\n e.preventDefault();\n setClassName('login-button-disabled');\n localStorage.removeItem('userInfo');\n localStorage.removeItem('folderId');\n localStorage.removeItem('folders');\n const authClient = await AuthClient.create();\n const days = BigInt(1);\n const hours = BigInt(24);\n const nanoseconds = BigInt(3600000000000); \n authClient.login({\n onSuccess: async () => {\n handleAuthenticated(authClient);\n },\n identityProvider:\n process.env.REACT_APP_DFX_NETWORK === \"ic\"\n ? \"https://identity.ic0.app/#authorize\"\n : `http://localhost:8000?canisterId=${process.env.REACT_APP_LOCAL_II_CANISTER}`,\n maxTimeToLive: days * hours * nanoseconds,\n });\n }\n\n async function handleAuthenticated(authClient: AuthClient) {\n const host = process.env.REACT_APP_IC_URL;\n const canisterId = process.env.REACT_APP_CANISTER_ID;\n \n const _identity = (await authClient.getIdentity()) as unknown as Identity;\n const isAuth = await authClient.isAuthenticated();\n if (!isAuth) {\n }\n const agent = new HttpAgent({ identity: _identity, host, retryTimes: 5 });\n agent.fetchRootKey();\n const bucketClient = new BucketClient(agent, Principal.fromText(canisterId!));\n bucketClient.saveUser(_identity.getPrincipal(), BigInt(1024)).then((response)=>{\n navigate(\"/dashboard\");\n }).catch(error => {\n console.log(\"Error: \", error);\n });\n }\n\n return (\n
\n
\n

OPEN INTERNET

\n
\n
PUBLIC CRYPTO-CLOUD WEB HOSTING
\n \n
\n
\n
\n );\n}\n\nexport default Login;","import React, { useEffect, useState } from 'react';\nimport './NavBar.css';\nimport { useNavigate } from \"react-router-dom\";\nimport { AuthClient } from \"@dfinity/auth-client\";\n\n\nfunction NavBar() {\n let navigate = useNavigate();\n const goToDashboard = () => {\n navigate(\"/dashboard\");\n }\n\n const logout = async () => {\n localStorage.removeItem('userInfo');\n localStorage.removeItem('folderId');\n localStorage.removeItem('folders');\n const authClient = await AuthClient.create();\n authClient.logout()\n navigate(\"/\")\n }\n\n return (\n \n );\n}\n\nexport default NavBar;","import { useEffect, useState } from 'react';\nimport { Principal } from \"@dfinity/principal\";\nimport { Identity, HttpAgent } from \"@dfinity/agent\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { useNavigate } from \"react-router-dom\";\nimport { BucketClient } from \"../services/bucket/bucket.client\";\nimport type { \n UserFilesResponse,\n} from \"../domain/bucket\";\nimport NavBar from '../components/NavBar';\nimport './Dashboard.css';\n\nfunction Dashboard() {\n let navigate = useNavigate();\n const [isLoaded, setIsLoaded] = useState(false);\n const [files, setFiles] = useState([]);\n const [folders, setFolders] = useState([{\n name: 'Home',\n folderId: undefined\n }]);\n const [userInfo, setUserInfo] = useState({\n principalId: '',\n bytesUsed: 0,\n byteLimit: 0,\n });\n\n useEffect(() => {\n if(!isLoaded){\n setIsLoaded(true);\n getUserInfo();\n let storageFolderId = localStorage.getItem('folderId') \n if(storageFolderId==='undefined' || !storageFolderId){\n getFiles(undefined);\n }\n else {\n getFiles(BigInt(storageFolderId!));\n }\n const storageFolders = JSON.parse(localStorage.getItem('folders') || '[]'); \n if(storageFolders.length > 0){\n setFolders(storageFolders);\n }\n else {\n localStorage.setItem('folders', JSON.stringify(folders));\n }\n }\n }, [userInfo]);\n\n const getFiles = async (folderId: bigint|undefined) => { \n const authClient = await AuthClient.create();\n const host = process.env.REACT_APP_IC_URL;\n const canisterId = process.env.REACT_APP_CANISTER_ID;\n const _identity = (await authClient.getIdentity()) as unknown as Identity;\n const isAuth = await authClient.isAuthenticated();\n if(!isAuth){\n navigate('/');\n }\n const agent = new HttpAgent({ identity: _identity, host, retryTimes: 5 });\n const bucketClient = new BucketClient(agent, Principal.fromText(canisterId!));\n bucketClient.userFiles(folderId).then((response)=>{\n setFiles(response);\n }).catch(error => {\n console.log(\"Error: \", error);\n });\n };\n\n const getUserInfo = async () => { \n const authClient = await AuthClient.create();\n const host = process.env.REACT_APP_IC_URL;\n const canisterId = process.env.REACT_APP_CANISTER_ID;\n const _identity = (await authClient.getIdentity()) as unknown as Identity;\n let principal = _identity.getPrincipal().toString();\n const isAuth = await authClient.isAuthenticated();\n if(!isAuth){\n navigate('/');\n }\n const agent = new HttpAgent({ identity: _identity, host, retryTimes: 5 });\n const bucketClient = new BucketClient(agent, Principal.fromText(canisterId!));\n bucketClient.userInfo().then((response: any)=>{\n let _userInfo = {\n principalId: principal,\n byteLimit: response.byteLimit.toString(),\n bytesUsed: response.bytesUsed.toString(),\n };\n localStorage.setItem(\"userInfo\", JSON.stringify(_userInfo));\n setUserInfo(_userInfo);\n\n \n }).catch(error => {\n console.log(\"Error: \", error);\n });\n };\n\n const buyStorage = () => {\n navigate('/buy-storage');\n }\n\n const createFolder = () => {\n navigate('/create-folder');\n }\n\n const UploadFile = () => {\n navigate('/upload-file');\n }\n\n const DownloadFile = (e:any, file: any) => {\n const canisterId: string = process.env.REACT_APP_CANISTER_ID!;\n let fileURL: string = process.env.REACT_APP_URL_BLOB!; \n if(file.mimeType == 'inode/directory'){\n folders.push({\n name: file.name,\n folderId: file.fileId,\n });\n localStorage.setItem('folderId', file.fileId)\n const storageFolders = JSON.parse(localStorage.getItem('folders') || '[]');\n storageFolders.push({\n name: file.name[0],\n folderId: file.fileId.toString(),\n }); \n localStorage.setItem('folders', JSON.stringify(storageFolders));\n getFiles(file.fileId);\n }\n else {\n fileURL = fileURL?.replace('{canisterId}', canisterId).replace(\"{fileId}\", file.fileId)\n window.open(fileURL, '_blank');\n }\n }\n\n const handleFolderNavigation = (selectedFolder: any) => {\n let removed = false;\n folders.map((folder: any) =>{\n folder.removed = removed\n folder.folderId = folder.folderId ? folder.folderId?.toString() : folder.folderId;\n if(folder.folderId == selectedFolder.folderId) {\n removed = true;\n }\n });\n const filteredFolders = folders.filter((folder: any) => {return folder.removed == false});\n localStorage.setItem('folderId', selectedFolder.folderId);\n localStorage.setItem('folders', JSON.stringify(filteredFolders));\n getFiles(selectedFolder.folderId === undefined ? undefined: BigInt(selectedFolder.folderId));\n setFolders(filteredFolders);\n }\n\n return (\n <>\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n {\n folders.map((folder: any) =>{\n return (\n handleFolderNavigation(folder)}>> {folder.name} \n );\n })\n }\n
\n
\n \n
\n {\n files.map((file) =>{\n return (\n
\n DownloadFile(e, file)}>{file.name} \n {\n file.mimeType == 'inode/directory'\n ?Folder\n :{file.mimeType}\n }\n {\n file.mimeType == 'inode/directory'\n ?\n :{file.fileSize.toString()} bytes \n }\n
\n );\n })\n }\n
\n
\n \n );\n}\n\nexport default Dashboard;","import { useEffect, useState, useRef } from 'react';\nimport './UploadFile.css';\nimport NavBar from '../components/NavBar';\nimport { Principal } from \"@dfinity/principal\";\nimport { HttpAgent } from \"@dfinity/agent\";\nimport { BucketClient } from \"../services/bucket/bucket.client\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { useNavigate } from \"react-router-dom\";\nimport { sha3_256 } from \"js-sha3\";\n\n\nfunction UploadFile() {\n let navigate = useNavigate();\n const inputRef = useRef(null);\n\tconst [selectedFile, setSelectedFile] = useState();\n\tconst [fileName, setFileName] = useState('Select the files you want to upload');\n\tconst [fileAlert, setFileAlert] = useState('');\n\tconst [isFilePicked, setIsFilePicked] = useState(false);\n const [userInfo, setUserInfo] = useState({\n principalId: '',\n bytesUsed: 0,\n byteLimit: 0,\n });\n\n useEffect(() => {\n const _userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}');\n if(!userInfo.principalId){\n setUserInfo(_userInfo);\n }\n });\n\n const openFileSelector = () => {\n inputRef.current?.click()\n }\n\n const changeHandler = (event: any) => {\n let file = event.target.files[0];\n if(!file){\n return;\n }\n setFileName(file.name);\n\t\tsetSelectedFile(file);\n\t\tsetIsFilePicked(true);\n\t};\n const uploadChunk = async (data: any) => {\n const host = process.env.REACT_APP_IC_URL;\n const canisterId = process.env.REACT_APP_CANISTER_ID;\n const authClient = await AuthClient.create();\n let identity = authClient.getIdentity();\n const isAuth = await authClient.isAuthenticated();\n if(!isAuth){\n navigate('/');\n }\n const agent = new HttpAgent({ identity: identity, host, retryTimes: 5 });\n agent.fetchRootKey();\n const bucketClient = new BucketClient(agent, Principal.fromText(canisterId!));\n bucketClient.uploadChunk(\n data.fileId, \n data.hash, \n data.mimeType, \n data.totalSize, data.chunkSize, \n data.chunkIndex, \n data.bytes, \n data.expiryTimestampMillis, \n data.name, \n data.folderId\n ).then((response: any) => {\n console.log(\"response : \", response);\n if(response == 'file_too_big'){\n setFileAlert('the file is larger than the available space');\n }\n else{\n navigate('/dashboard');\n }\n }).catch((error: any) => {\n console.log(\"Error: \", error);\n });\n }\n\n const hashBytes = (bytes: ArrayBuffer) => {\n const hash = sha3_256.create();\n hash.update(bytes);\n return hash.arrayBuffer();\n }\n\n const submitHandler = async (event: any) => {\n if(!selectedFile){\n setFileAlert('Select a file');\n return;\n }\n let fileId: any = undefined;\n let mimeType = selectedFile.type; \n let name = selectedFile.name;\n let chunkIndex = 0;\n let totalSize = BigInt(selectedFile.size);\n let chunkSize = 524288;\n let storageFolderId = localStorage.getItem('folderId');\n let folderId: any = undefined; \n if(storageFolderId != null && storageFolderId != 'undefined'){\n folderId = BigInt(storageFolderId);\n }\n let expiryTimestampMillis: any = undefined;\n var reader = new FileReader();\n let file = selectedFile;\n reader.onload = function () {\n var arrayBuffer = this.result;\n let bytes = new Uint8Array(arrayBuffer as ArrayBuffer);\n let data = {\n fileId, \n hash: new Uint8Array(hashBytes(bytes)), \n mimeType, \n totalSize, \n chunkSize, \n chunkIndex, \n bytes, \n expiryTimestampMillis, \n name, \n folderId\n };\n uploadChunk(data);\n }\n reader.readAsArrayBuffer(file);\n\t};\n\n return (\n <>\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n \n \n Choose file\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n );\n}\n\nexport default UploadFile;","import { useEffect, useState } from 'react';\nimport { Principal } from \"@dfinity/principal\";\nimport { Identity, HttpAgent } from \"@dfinity/agent\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { useNavigate } from \"react-router-dom\";\nimport { BucketClient } from \"../services/bucket/bucket.client\";\nimport NavBar from '../components/NavBar';\nimport './CreateFolder.css';\n\n\nfunction CreateFolder() {\n let navigate = useNavigate();\n const [state, setState] = useState({\n principalId: '',\n bytesUsed: 0,\n byteLimit: 0,\n alertMessage: '',\n folderName: '',\n });\n\n useEffect(() => {\n const _userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}');\n if(!state.principalId){\n setState((prevState) => ({...prevState, ..._userInfo}));\n }\n });\n\n const changeHandler = (event: any) => {\n setState((prevState) => ({...prevState, folderName: event.target.value}));\n\t};\n\n const submitHandler = async (event: any) => {\n let folderName = state.folderName;\n if(!folderName){\n setState((prevState) => ({...prevState, alertMessage: 'Select a folder name'}));\n return;\n }\n const host = process.env.REACT_APP_IC_URL;\n const canisterId = process.env.REACT_APP_CANISTER_ID;\n const authClient = await AuthClient.create();\n const isAuth = await authClient.isAuthenticated();\n if (!isAuth) {\n navigate(\"/\");\n }\n const identity = (await authClient.getIdentity()) as unknown as Identity;\n const agent = new HttpAgent({ identity: identity, host, retryTimes: 5 });\n agent.fetchRootKey();\n const bucketClient = new BucketClient(agent, Principal.fromText(canisterId!));\n let storageFolderId = localStorage.getItem('folderId');\n let folderId: any = undefined;\n if(storageFolderId!= null && storageFolderId != 'undefined'){\n folderId = BigInt(storageFolderId);\n }\n bucketClient.createFolder(folderName, folderId).then((response)=>{ \n navigate(\"/dashboard\");\n }).catch(error => {\n console.log(\"Error: \", error);\n })\n};\n\n return (\n <>\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n {changeHandler(e)}} placeholder='folder name'/>\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n );\n}\n\nexport default CreateFolder;","import { useEffect, useState, useRef } from 'react';\nimport { Principal } from \"@dfinity/principal\";\nimport { Identity, HttpAgent } from \"@dfinity/agent\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { useNavigate } from \"react-router-dom\";\nimport { BucketClient } from \"../services/bucket/bucket.client\";\nimport NavBar from '../components/NavBar';\nimport './BuyStorage.css';\n\n\nfunction BuyStorage() {\n let navigate = useNavigate();\n const inputRef = useRef(null);\n const [state, setState] = useState({\n principalId: '',\n bytesUsed: 0,\n byteLimit: 0,\n });\n\n useEffect(() => {\n const _userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}');\n if(!state.principalId){\n setState((prevState) => ({...prevState, ..._userInfo}));\n }\n });\n\n const submitHandler = async () => {\n const host = process.env.REACT_APP_IC_URL;\n const canisterId = process.env.REACT_APP_CANISTER_ID;\n const authClient = await AuthClient.create();\n const isAuth = await authClient.isAuthenticated();\n if (!isAuth) {\n navigate(\"/\");\n }\n const identity = (await authClient.getIdentity()) as unknown as Identity;\n const agent = new HttpAgent({ identity: identity, host, retryTimes: 5 });\n agent.fetchRootKey();\n const bucketClient = new BucketClient(agent, Principal.fromText(canisterId!));\n bucketClient.buyStorage().then(()=>{\n navigate(\"/dashboard\");\n }).catch(error => {\n console.log(\"Error: \", error);\n });\n }\n\n return (\n <>\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
1 ICP
\n
1024 mb
\n
\n
\n \n
\n
\n
\n
\n \n );\n}\n\nexport default BuyStorage;","import React from 'react';\nimport './index.css';\nimport ReactDOM from \"react-dom\";\nimport { BrowserRouter, Route, Routes } from \"react-router-dom\";\nimport Login from './pages/Login';\nimport Dashboard from \"./pages/Dashboard\";\nimport UploadFile from \"./pages/UploadFile\";\nimport CreateFolder from \"./pages/CreateFolder\";\nimport BuyStorage from \"./pages/BuyStorage\";\n\nReactDOM.render(\n \n \n \n } />\n } />\n } />\n } />\n } />\n \n \n ,\n document.getElementById('root')\n);\n"],"sourceRoot":""}