parent
63621ab968
commit
f8296831fc
@ -1,12 +0,0 @@ |
|||||||
import { createContext } from "react"; |
|
||||||
import type { Container } from "@/.ldo/container.typings"; |
|
||||||
|
|
||||||
interface DataContextType { |
|
||||||
contactsContainer: Container | undefined; |
|
||||||
contacts: Array<{ "@id": string }>; |
|
||||||
isContactsLoading: boolean; |
|
||||||
containerOverlay: string; |
|
||||||
} |
|
||||||
|
|
||||||
export const DataContext = createContext<DataContextType | undefined>(undefined); |
|
||||||
export type { DataContextType }; |
|
@ -1,10 +0,0 @@ |
|||||||
import { useContext } from "react"; |
|
||||||
import { DataContext } from "@/contexts/DataContext"; |
|
||||||
|
|
||||||
export const useData = () => { |
|
||||||
const context = useContext(DataContext); |
|
||||||
if (!context) { |
|
||||||
throw new Error("useData must be used within a DataProvider"); |
|
||||||
} |
|
||||||
return context; |
|
||||||
}; |
|
@ -1,49 +0,0 @@ |
|||||||
import type React from "react"; |
|
||||||
import type { ReactNode } from "react"; |
|
||||||
import { useNextGraphAuth } from "@/lib/nextgraph"; |
|
||||||
import { useResource, useSubject } from "@/lib/nextgraph"; |
|
||||||
import { ContainerShapeType } from "@/.ldo/container.shapeTypes"; |
|
||||||
import type { NextGraphAuth } from "@/types/nextgraph"; |
|
||||||
import { DataContext, type DataContextType } from "@/contexts/DataContext"; |
|
||||||
|
|
||||||
interface DataProviderProps { |
|
||||||
children: ReactNode; |
|
||||||
} |
|
||||||
|
|
||||||
export const DataProvider: React.FC<DataProviderProps> = ({ children }) => { |
|
||||||
const nextGraphAuth = useNextGraphAuth() as NextGraphAuth; |
|
||||||
const { session } = nextGraphAuth || {}; |
|
||||||
const isAuthenticated = Boolean(session?.ng); |
|
||||||
|
|
||||||
const canSubscribe = |
|
||||||
isAuthenticated && session?.privateStoreId && session?.ng; |
|
||||||
|
|
||||||
useResource(canSubscribe ? `did:ng:${session?.privateStoreId}` : undefined, { |
|
||||||
subscribe: true, |
|
||||||
}); |
|
||||||
|
|
||||||
const contactsContainer = useSubject( |
|
||||||
ContainerShapeType, |
|
||||||
canSubscribe && session?.privateStoreId |
|
||||||
? `did:ng:${session.privateStoreId.substring(0, 46)}` |
|
||||||
: undefined, |
|
||||||
); |
|
||||||
|
|
||||||
const contacts = contactsContainer?.contains |
|
||||||
? Array.from(contactsContainer.contains) |
|
||||||
: []; |
|
||||||
const isContactsLoading = canSubscribe && !contactsContainer; |
|
||||||
|
|
||||||
const containerOverlay = session?.privateStoreId |
|
||||||
? session.privateStoreId.substring(46) |
|
||||||
: ""; |
|
||||||
|
|
||||||
const value: DataContextType = { |
|
||||||
contactsContainer, |
|
||||||
contacts, |
|
||||||
isContactsLoading, |
|
||||||
containerOverlay, |
|
||||||
}; |
|
||||||
|
|
||||||
return <DataContext.Provider value={value}>{children}</DataContext.Provider>; |
|
||||||
}; |
|
Loading…
Reference in new issue