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