* Upgrade crust-pin to Crust Mainnet * Update yarn lock * Files Module (#6) * Describe file's README * Change Endpoint name and location * Update file's README * Add locales for files * Files Module (#6) * Describe file's README * Change Endpoint name and location * Update file's README * Add locales for files * Update yarn locks file * Update Crust Pinner to bearer authorization (#7) * Fix yarn lock * Add folder support (#8) * Add folder support * Fix * Fix files download * Fix translation * Upgrade react component * Fix ipfs gateway (#9) * Fix yarnlock * Upgrade metadata * Resolve polkadot-js version * Change copyright * Fix lint(copyright) Co-authored-by: Eericxu <2681350846@qq.com> Co-authored-by: Gavin Fu <gavfu@outlook.com> Co-authored-by: Yashiro <51014425+yuhui1208@users.noreply.github.com>
47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
// Copyright 2017-2022 @polkadot/app-files authors & contributors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
import store from 'store';
|
|
|
|
import { SaveFile } from './types';
|
|
|
|
export interface Files {
|
|
files: SaveFile[],
|
|
}
|
|
|
|
export interface WrapFiles extends Files {
|
|
isLoad: boolean,
|
|
setFiles: (files: SaveFile[]) => void
|
|
}
|
|
|
|
const defFilesObj = { files: [], isLoad: true };
|
|
|
|
export function useFiles (): WrapFiles {
|
|
const [filesObj, setFilesObj] = useState<Files>(defFilesObj);
|
|
const [isLoad, setIsLoad] = useState(true);
|
|
|
|
useEffect(() => {
|
|
try {
|
|
const f = store.get('files', defFilesObj) as Files;
|
|
|
|
if (f !== defFilesObj) {
|
|
setFilesObj(f);
|
|
}
|
|
|
|
setIsLoad(false);
|
|
} catch (e) {
|
|
setIsLoad(false);
|
|
console.error(e);
|
|
}
|
|
}, []);
|
|
const setFiles = useCallback((nFiles: SaveFile[]) => {
|
|
const nFilesObj = { ...filesObj, files: nFiles };
|
|
|
|
setFilesObj(nFilesObj);
|
|
store.set('files', nFilesObj);
|
|
}, [filesObj]);
|
|
|
|
return useMemo(() => ({ ...filesObj, isLoad, setFiles }), [filesObj, setFiles, isLoad]);
|
|
}
|