Files
bee-dashboard/src/providers/Feeds.tsx
T
Cafe137 25b65c3fb7 feat: add identity and feed management (#272)
* feat(wip): add basic feed operations

* ci: bump checks

* ci: bump checks

* feat: rework stamps and add feed functionalities

* refactor: polish and fixes

* feat(wip): add formulas

* feat: show bzz.link for websites

* feat: add stamp empty states and formatBzz

* feat: add feed download

* chore: update manifest-js version

* feat: dev mode support with bee-js 3.1.0 (#273)

* feat: dev mode support with bee-js 3.1.0

* fix: added missing package-lock.json file

* build: remove PR preview

* style: work on design

* feat: add TroubleshootConnectionCard

* build: remove depcheck

Co-authored-by: Attila Gazso <agazso@gmail.com>
2021-12-21 10:58:54 +01:00

44 lines
1.1 KiB
TypeScript

import { createContext, ReactChild, ReactElement, useEffect, useState } from 'react'
export type IdentityType = 'V3' | 'PRIVATE_KEY'
export interface Identity {
uuid: string
name: string
feedHash?: string
identity: string
address: string
type: IdentityType
}
interface ContextInterface {
identities: Identity[]
setIdentities: (identities: Identity[]) => void
}
const initialValues: ContextInterface = {
identities: [],
setIdentities: () => {}, // eslint-disable-line
}
export const Context = createContext<ContextInterface>(initialValues)
export const Consumer = Context.Consumer
interface Props {
children: ReactChild
}
export function Provider({ children }: Props): ReactElement {
const [identities, setIdentities] = useState<Identity[]>(initialValues.identities)
useEffect(() => {
try {
setIdentities(JSON.parse(localStorage.getItem('feeds') || '[]'))
} catch {
setIdentities([])
}
}, []) // eslint-disable-line react-hooks/exhaustive-deps
return <Context.Provider value={{ identities, setIdentities }}>{children}</Context.Provider>
}