millelibri/frontend/src/scripts/ipfs.ts

42 lines
1.1 KiB
TypeScript

import { Book } from './searcher';
interface TauriConfig {
index_dir: string;
ipfs_gateways: string[];
}
export const ipfsGateways: string[] = [
// 'cloudflare-ipfs.com',
// 'dweb.link',
// 'ipfs.io',
// 'gateway.pinata.cloud',
// 'nftstorage.link'
'ipfs.copyriot.xyz',
'ipfs2.copyriot.xyz'
];
export default async function getIpfsGateways() {
if (import.meta.env.VITE_TAURI === '1') {
import('@tauri-apps/api').then(api => {
api.invoke('get_config').then((conf) => {
const config = conf as TauriConfig;
return config.ipfs_gateways;
});
})
return <string[]>[];
} else {
const ipfsGateways: string[] = JSON.parse(localStorage.getItem('ipfs_gateways') || '[]');
return ipfsGateways;
}
}
export function parseIpfsGateways(text: string) {
return text.split('\n').filter(g => g.length);
}
export function getDownloadLinkFromIPFS(gateway: string, book: Book) {
return (
`https://${gateway}/ipfs/${book.ipfs_cid}?filename=` +
encodeURIComponent(`${book.title}_${book.author}.${book.extension}`)
);
}