From 17f819e155287d0f0c4f28fa3ff97b17ba866cc2 Mon Sep 17 00:00:00 2001 From: Marshall Polaris Date: Tue, 28 Jun 2022 13:16:57 -0700 Subject: [PATCH] Decentralize definitions from schema file (James feedback) --- web/hooks/use-contract.ts | 7 +++++-- web/hooks/use-user.ts | 2 +- web/lib/firebase/contracts.ts | 6 ++++-- web/lib/firebase/groups.ts | 11 +++++++++-- web/lib/firebase/manalinks.ts | 5 +++-- web/lib/firebase/schema.ts | 19 ------------------- web/lib/firebase/txns.ts | 7 ++++--- web/lib/firebase/users.ts | 12 ++++++++++-- web/lib/firebase/utils.ts | 7 +++++++ 9 files changed, 43 insertions(+), 33 deletions(-) delete mode 100644 web/lib/firebase/schema.ts diff --git a/web/hooks/use-contract.ts b/web/hooks/use-contract.ts index b6937ed4..acaf7730 100644 --- a/web/hooks/use-contract.ts +++ b/web/hooks/use-contract.ts @@ -1,7 +1,10 @@ import { useEffect } from 'react' import { useFirestoreDocumentData } from '@react-query-firebase/firestore' -import { Contract, listenForContract } from 'web/lib/firebase/contracts' -import { contracts } from 'web/lib/firebase/schema' +import { + Contract, + contracts, + listenForContract, +} from 'web/lib/firebase/contracts' import { useStateCheckEquality } from './use-state-check-equality' import { doc, DocumentData } from 'firebase/firestore' diff --git a/web/hooks/use-user.ts b/web/hooks/use-user.ts index 7378b76a..158235ca 100644 --- a/web/hooks/use-user.ts +++ b/web/hooks/use-user.ts @@ -10,8 +10,8 @@ import { listenForPrivateUser, listenForUser, User, + users, } from 'web/lib/firebase/users' -import { users } from 'web/lib/firebase/schema' import { useStateCheckEquality } from './use-state-check-equality' import { identifyUser, setUserProperty } from 'web/lib/service/analytics' diff --git a/web/lib/firebase/contracts.ts b/web/lib/firebase/contracts.ts index 0f4660e3..d5fb85cb 100644 --- a/web/lib/firebase/contracts.ts +++ b/web/lib/firebase/contracts.ts @@ -15,8 +15,7 @@ import { } from 'firebase/firestore' import { sortBy, sum } from 'lodash' -import { getValues, listenForValue, listenForValues } from './utils' -import { contracts } from './schema' +import { coll, getValues, listenForValue, listenForValues } from './utils' import { BinaryContract, Contract } from 'common/contract' import { getDpmProbability } from 'common/calculate-dpm' import { createRNG, shuffle } from 'common/util/random' @@ -27,6 +26,9 @@ import { MAX_FEED_CONTRACTS } from 'common/recommended-contracts' import { Bet } from 'common/bet' import { Comment } from 'common/comment' import { ENV_CONFIG } from 'common/envs/constants' + +export const contracts = coll('contracts') + export type { Contract } export function contractPath(contract: Contract) { diff --git a/web/lib/firebase/groups.ts b/web/lib/firebase/groups.ts index 66a6a0a6..36b05452 100644 --- a/web/lib/firebase/groups.ts +++ b/web/lib/firebase/groups.ts @@ -9,10 +9,17 @@ import { import { sortBy } from 'lodash' import { Group } from 'common/group' import { getContractFromId } from './contracts' -import { groups } from './schema' -import { getValue, getValues, listenForValue, listenForValues } from './utils' +import { + coll, + getValue, + getValues, + listenForValue, + listenForValues, +} from './utils' import { filterDefined } from 'common/util/array' +export const groups = coll('groups') + export function groupPath( groupSlug: string, subpath?: 'edit' | 'questions' | 'about' | 'chat' diff --git a/web/lib/firebase/manalinks.ts b/web/lib/firebase/manalinks.ts index fd5a121b..532534df 100644 --- a/web/lib/firebase/manalinks.ts +++ b/web/lib/firebase/manalinks.ts @@ -1,11 +1,12 @@ import { getDoc, orderBy, query, setDoc, where } from 'firebase/firestore' import { doc } from 'firebase/firestore' import { Manalink } from '../../../common/manalink' -import { manalinks } from './schema' import { customAlphabet } from 'nanoid' -import { listenForValues } from './utils' +import { coll, listenForValues } from './utils' import { useEffect, useState } from 'react' +export const manalinks = coll('manalinks') + export async function createManalink(data: { fromId: string amount: number diff --git a/web/lib/firebase/schema.ts b/web/lib/firebase/schema.ts deleted file mode 100644 index f203cb0a..00000000 --- a/web/lib/firebase/schema.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { db } from './init' -import { collection, CollectionReference } from 'firebase/firestore' - -import { Contract } from 'common/contract' -import { User, PrivateUser } from 'common/user' -import { Txn } from 'common/txn' -import { Group } from 'common/group' -import { Manalink } from 'common/manalink' - -const coll = (path: string, ...rest: string[]) => { - return collection(db, path, ...rest) as CollectionReference -} - -export const groups = coll('groups') -export const manalinks = coll('manalinks') -export const privateUsers = coll('private-users') -export const txns = coll('txns') -export const contracts = coll('contracts') -export const users = coll('users') diff --git a/web/lib/firebase/txns.ts b/web/lib/firebase/txns.ts index d72a6ba7..17e9a09b 100644 --- a/web/lib/firebase/txns.ts +++ b/web/lib/firebase/txns.ts @@ -1,10 +1,11 @@ -import { ManalinkTxn, DonationTxn, TipTxn } from 'common/txn' +import { ManalinkTxn, DonationTxn, TipTxn, Txn } from 'common/txn' import { orderBy, query, where } from 'firebase/firestore' -import { txns } from './schema' -import { getValues, listenForValues } from './utils' +import { coll, getValues, listenForValues } from './utils' import { useState, useEffect } from 'react' import { orderBy as _orderBy } from 'lodash' +export const txns = coll('txns') + const getCharityQuery = (charityId: string) => query( txns, diff --git a/web/lib/firebase/users.ts b/web/lib/firebase/users.ts index 09d27f97..7f04e61e 100644 --- a/web/lib/firebase/users.ts +++ b/web/lib/firebase/users.ts @@ -23,15 +23,23 @@ import { import { throttle, zip } from 'lodash' import { app, db } from './init' -import { privateUsers, users } from './schema' import { PortfolioMetrics, PrivateUser, User } from 'common/user' import { createUser } from './fn-call' -import { getValue, getValues, listenForValue, listenForValues } from './utils' +import { + coll, + getValue, + getValues, + listenForValue, + listenForValues, +} from './utils' import { feed } from 'common/feed' import { CATEGORY_LIST } from 'common/categories' import { safeLocalStorage } from '../util/local' import { filterDefined } from 'common/util/array' +export const users = coll('users') +export const privateUsers = coll('private-users') + export type { User } export type Period = 'daily' | 'weekly' | 'monthly' | 'allTime' diff --git a/web/lib/firebase/utils.ts b/web/lib/firebase/utils.ts index 1a9e13c5..e63c2d96 100644 --- a/web/lib/firebase/utils.ts +++ b/web/lib/firebase/utils.ts @@ -1,10 +1,17 @@ import { + collection, getDoc, getDocs, onSnapshot, Query, + CollectionReference, DocumentReference, } from 'firebase/firestore' +import { db } from './init' + +export const coll = (path: string, ...rest: string[]) => { + return collection(db, path, ...rest) as CollectionReference +} export const getValue = async (doc: DocumentReference) => { const snap = await getDoc(doc)