Commit 1a85e4aa authored by Lorenzo Trujillo Rojas's avatar Lorenzo Trujillo Rojas
Browse files

Creacion del contexto para obtener las fuentes de datos

parent 07536f80
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
import { createContext, PropsWithChildren, useContext } from "react";
import { StateRepository } from "../domain/repositories/state_repository";
import { StateRepositoryImpl } from "../infrastructure/repositories/state_repository";
import { StateDataSourceImpl } from "../infrastructure/datasource/state_datasource";

type DataContextType = {
    statesRepository: StateRepository | null;
};

type DataContextProviderProps = PropsWithChildren<{}>;

const DataContext = createContext<DataContextType>({
    statesRepository: null
});

export const DataContextProvider = ({ children }: DataContextProviderProps) => {
    const statesDataSource = new StateDataSourceImpl();
    const statesRepository = new StateRepositoryImpl(statesDataSource);
    
    const value = {
        statesRepository
    };

    return (
        <DataContext.Provider value={value}>
            {children}
        </DataContext.Provider>
    );
};

export const useDataContext = () => {
    const context = useContext(DataContext);
    if (!context) {
        throw new Error("useDataContext must be used within a DataContextProvider");
    }
    return context;
}
 No newline at end of file