@ixily/activ
Version:
Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.
41 lines (35 loc) • 955 B
text/typescript
import { IpfsStoreProvider } from '../../interfaces'
const state = {
providers: [] as IpfsStoreProvider[],
}
const addProvider = async (provider: IpfsStoreProvider) => {
state.providers.push(provider)
}
const add = async (obj: any) => {
if (state.providers.length === 0) throw new Error('No providers added.')
for (const provider of state.providers) {
try {
const cid = await provider.add(obj)
return cid
} catch (e) {
console.error('Error adding object to IPFS: ', e)
console.error('Provider: ', provider.name)
}
}
throw new Error('Failed to add object to IPFS.')
}
const recover = async <T>(cid: string) => {
if (state.providers.length === 0) throw new Error('No providers added.')
for (const provider of state.providers) {
try {
const obj = await provider.recover(cid)
if (obj !== undefined) return obj as T
} catch (e) {}
}
return undefined
}
export const IpfsStoreModule = {
addProvider,
add,
recover,
}