* Add follow button to user page
* Update follows in the database using follow button.
* Add toggle for followed market creators to home
* Hide follow toggle from user's markets page
* Check that sold bet is by auth'd user
* Change follow toggle to category pill
* Remove unused imports
* Remove console.logs
* Improve typing of client CORS helper
* Take node-fetch as a dependency
* Add explicit Firebase region into config
* Add new Vercel proxy API routes that talk to backend
* Call Vercel proxy routes from `api-call` module
* Tweak import to try to get Vercel happy
* Tidy up a tiny bit
* Set common package.json sideEffects: false
* Configure SWC to modularize lodash imports
* Import specific lodash functions instead of _
* Add an eslint rule to avoid full lodash import
* Remove needless wrappers from API requests and responses
* Return real HTTP status codes instead of status field
* More robustly handle API errors
* Fix broken error handling in NumericResolutionPanel warmup
* Rename `lib/firebase/api-call` -> `lib/firebase/fn-call`
This relieves ambiguity now that we will be using our actual
public API in the client.
* Rewrite client API calls to createContract, placeBet
* Tiny fixup for client market creation code
* Numeric contract type
* Create market numeric type
* Add numeric graph (coded without testing)
* Outline of numeric bet panel
* Update bet panel logic
* create numeric contracts
* remove batching for antes for numeric markets
* Remove focus
* numeric market range [1, 100]
* Zoom graph
* Hide bet panels
* getNumericBets
* Add numeric resolution panel
* Use getNumericBets in bet panel calc
* Switch bucket count to 100
* Parallelize ante creation
* placeBet for numeric markets
* halve std of numeric bets
* Update resolveMarket with numeric type
* Set min and max for contract
* lower std for numeric bets
* calculateNumericDpmShares: use sorted order
* Use min and max to map the input
* Fix probability calc
* normpdf variance mislabeled
* range input
* merge
* change numeric graph color
* fix getNewContract params
* bet panel labels
* validation
* number input
* fix bucketing
* bucket input, numeric resolution panel
* outcome label
* merge
* numeric bet panel on mobile
* Make text underneath filled green answer bar selectable
* Default to 'all' feed category when loading page.
* fix numeric resolution panel
* fix numeric bet panel calculations
* display numeric resolution
* don't render NumericBetPanel for non numeric markets
* numeric bets: store shares, bet amounts across buckets in each bet object
* restore your bets for numeric markets
* numeric pnl calculations
* remove hasUserHitManaLimit
* contrain contract type
* handle undefined allOutcomeShares
* numeric ante bet amount
* use correct amount for numeric dpm payouts
* change numeric graph/outcome color
* numeric constants
* hack to show correct numeric payout in calculateDpmPayoutAfterCorrectBet
* remove comment
* fix ante display in bet list
* halve bucket count
* cast to NumericContract
* fix merge imports
* OUTCOME_TYPES
* typo
* lower bucket count to 200
* store raw numeric value with bet
* store raw numeric resolution value
* number input max length
* create page: min, max to undefined if not numeric market
* numeric resolution formatting
* expected value for numeric markets
* expected value for numeric markets
* rearrange lines for readability
* move normalpdf to util/math
* show bets tab
* check if outcomeMode is undefined
* remove extraneous auto-merge cruft
* hide comment status for numeric markets
* import
Co-authored-by: mantikoros <sgrugett@gmail.com>
* Remove unused bets and sort in query
* remove console
* Explicitly ignore or include redemptions
* Pass options from parent function
* Fix let=>const
* Show user bets on their profile
* Add an alert for current users
* Replace `/portfolio` with `/Austin?tab=Bets`
* Replace `/Austin?tab=Bets` with `/Austin/bets`
* Use replaceState for better browser history
* Remove two console.logs
* Note a bug
* Fix path
* Write in description of why we're doing this
* Add /private-users/apiKey to DB
* Add field to edit API key on profile
* Move API key to bottom of profile page
Austin thinks this is better since most people don't care about it.
* basic market categories
* use tags to store market category
* display category in market
* display full category
* category selector component on feed
* Move feed data fetching to new file
* Decrease batch size for updating feed to prevent out-of-memory error
* Compute and update category feeds!
* Show feeds based on category tabs
* Add react-query package!
* Use react query to cache contracts
* Remove 'other' category
* Add back personal / friends to feed categories
* Show scrollbar temporarily for categories
* Remove 5 categories, change geopolitics to world
* finance => economics
* Show categories on two lines on larger screens
Co-authored-by: James Grugett <jahooma@gmail.com>
* Configure functions module to allow absolute imports
* Convert common imports in functions to be absolute
* Convert common imports in web to be absolute
* Convert lib imports in web to be absolute
* Convert hooks imports in web to be absolute
* Convert components imports in web to be absolute
* WIP - got comments on the user page
* Remove number from chosen FR answer
* Distinguish wining and losing FR answers
* Show no answers text
* Simplify get answer items logic
* Show answer number
* Show answer # when resolving
* Fix import path
* Add user's collated comments onto profile
* Allow linking to comments/markets in profile
* Allow preload of users contracts in profile
* Remove unused check
* Small code improvements
* Store view counts & last viewed time
* Schedule updating user recommendations. Compute using tf-idf.
* Update contract's lastBetTime and lastCommentTime on new bets and comments.
* Remove contract's lastUpdatedTime
* Remove folds activity feed
* Implement getFeed cloud function
* Hook up client to use getFeed
* Script to cache viewCounts and lastViewTime
* Batched wait all userRecommendations
* Cache view script runs on all users
* Update user feed each hour and get feed from cache doc.
* Delete view cache script
* Update feed script
* Tweak feed algorithm
* Compute recommendation scores from updateUserFeed
* Disable lastViewedScore factor
* Update lastCommentTime script
* Comment out console.log
* Fix timeout issue by calling new cloud functions with part of the work.
* Listen for contract updates to feed.
* Handle new user: use default feed of top markets this week
* Track lastUpdatedTime
* Tweak logic of calling cloud functions in batches
* Tweak cloud function batching
* Add components for CPM landing and charity pages
* Remove misc.ts to fix build
* Set up cloud function for writing txns
* More plumbing for txns
* Fix up API call
* Use Date.now() to keep timestamps simple
* Some styles for charity list page
* Hard code charities data
* Pass charity data to charity page
* Update txn type
* Listen for charity txns
* Handle txn to non-user by burning it
* Read txns for charity card and charity page.
* Set images to object contain
* Clean up txn types
* Move pic to top of card. Other misc styling.
* Update charity short & long descriptions
* Add `token` and `category` to Txn
* Fix breakages
* Show Charity link in the sidebar
* Fix typing issues
* Fix not reading from the right type
* Switch out icon
* Also show Charity icon on mobile
* Update copy
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
Co-authored-by: James Grugett <jahooma@gmail.com>
* Allow free comments with optional bets
* Send emails for comments without bets
* Refactor to share logic
* No free comments on free response questions
* Minor fixes
* Condense line
* Split BuyAmountInput out of AmountInput
* Buy and sell tabs. Compute some sell info
* In progress
* BuyPanel & SellPanel with banner above that shows current shares and toggle button
* Remove "Remaining balance"
* Bring back 'Place a trade'. Tweaks
* Sell shares cloud function.
* Sell all shares by default. Switch back to buy if sell all your shares.
* Cache your shares in local storage so sell banner doesn't flicker.
* Compute sale value of shares with binary search to keep k constant.
* Update bets table to show BUY or SELL
* Fixes from Stephen's review
* Don't allow selling more than max shares in cloud function
* Use modal for sell shares on desktop.
* Handle floating point precision in max shares you can sell.