Skip to content

Instantly share code, notes, and snippets.

View trblackw's full-sized avatar

Tucker Blackwell trblackw

View GitHub Profile
import React, { createContext, ReactNode, useEffect, useState } from "react"
import { User as FirebaseUser } from "firebase/app"
import { Firestore } from "firebaseTypes"
import FirebaseApp from "../index"
import { User } from "state/users/userTypes"
import UserModel from "state/users/userModel"
type FirestoreContextType = {
firestore: Firestore | null
currentUser: User | null
import FirebaseApp from "./index"
class AuthManager {
async login({ email, password }: { email: string; password: string }) {
await FirebaseApp.auth().signInWithEmailAndPassword(email, password)
}
async logout() {
return FirebaseApp.auth().signOut()
}
import { FirebaseModel } from "../firebaseTypes"
import { User } from "./userTypes"
export default class UserModel extends FirebaseModel {
public async getCurrentUser(userId: string): Promise<User> {
const currentUser = await this.store
.collection(UserModel.userCollection)
.doc(userId)
.get()
return { ...currentUser.data(), id: currentUser.id } as User
import firebase from 'firebase/app';
import FirebaseApp from '../index';
import { Firestore } from 'firebaseTypes';
export enum Collections {
USERS = 'users'
}
export default class FirebaseModel {
public store: Firestore;
import React from "react"
import { render } from "react-dom"
import "styles/index.css"
import App from "App"
import { firebaseConfig } from "config/firebaseConfig"
import { initializeApp } from "firebase/app"
export default initializeApp(firebaseConfig)
render(<App />, document.getElementById("app"))
const firebaseConfig = {
apiKey: "xxxxxxxxxx",
authDomain: "xxxxxxxxxx",
databaseURL: "xxxxxxxxxx",
projectId: "xxxxxxxxxx",
storageBucket: "xxxxxxxxxx",
messagingSenderId: "xxxxxxxxxx",
appId: "xxxxxxxxxx",
measurementId: "xxxxxxxxxx",
}