1
0
mirror of https://github.com/fazo96/ipfs-boards synced 2025-02-09 17:14:19 +01:00
ipfs-boards/components/system.js

47 lines
1.1 KiB
JavaScript
Raw Normal View History

2019-10-22 23:38:21 +02:00
export function getGlobalScope() {
try {
return window
} catch (error) {
return global
}
}
export function getGlobalData() {
const scope = getGlobalScope()
if (!scope.ipfsBoards) scope.ipfsBoards = {}
return scope.ipfsBoards
}
export async function getIPFS() {
const data = getGlobalData()
if (data.ipfs) return data.ipfs
const IPFS = await import('ipfs')
data.ipfs = await IPFS.create()
return data.ipfs
}
export async function getOrbitDB() {
const data = getGlobalData()
if (data.orbitDb) return data.orbitDb
const OrbitDB = await import('orbit-db')
const BoardStore = await import('orbit-db-discussion-board')
OrbitDB.addDatabaseType(BoardStore.type, BoardStore)
data.orbitDb = await OrbitDB.createInstance(await getIPFS())
data.boards = {}
return data.orbitDb
}
export async function openBoard(id) {
if (data.boards && data.boards[id]) return data.boards[id]
const BoardStore = await import('orbit-db-discussion-board')
const options = {
type: BoardStore.type,
create: true,
write: ['*']
}
const orbitDb = await getOrbitDB()
const db = await orbitDb.open(id)
data.boards[id] = db
return db
}