File size: 1,272 Bytes
cc276cc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"use client";

import React, { createContext, useContext } from 'react';
import { app, auth, db, rtdb, storage } from "@/lib/firebase-client"; // Correctly import from the new client-side file
import { getAuth, Auth } from "firebase/auth";
import { getFirestore, Firestore } from "firebase/firestore";
import { getDatabase, Database } from "firebase/database";
import { getStorage, FirebaseStorage } from "firebase/storage";
import { FirebaseApp } from 'firebase/app';

interface FirebaseContextValue {
    app: FirebaseApp;
    auth: Auth;
    db: Firestore;
    rtdb: Database;
    storage: FirebaseStorage;
}

// The services are already initialized in firebase-client.ts, so we just pass them here.
const firebaseValue = { app, auth, db, rtdb, storage };

const FirebaseContext = createContext<FirebaseContextValue>(firebaseValue);

export const useFirebase = () => {
    const context = useContext(FirebaseContext);
    if (!context) {
        throw new Error("useFirebase must be used within a FirebaseProvider");
    }
    return context;
};

export const FirebaseProvider = ({ children }: { children: React.ReactNode }) => {
    return (
        <FirebaseContext.Provider value={firebaseValue}>
            {children}
        </FirebaseContext.Provider>
    );
};