* Clean up some markup & dead code
* Order comments in Firestore instead of on client
* Order bets in Firestore instead of on client
* Make indexes file up to date with production
* WIP liking markets with tip
* Refactor Userlink, add MultiUserLink
* Lint
* Lint
* Fix merge
* Fix imports
* wip liked contracts list
* Cache likes and liked by user ids on contract
* Refactor tip amount, reduce to M
* Move back to M
* Change positioning for large screens
* De-feedify contract bets list
* De-feedify contract comments lists
* Clean up a bunch of duplicated work in the comments list stuff
* Remove wrapper markup from comment replies list
* Fix sort order on comments I broke
* Kill now unhelpful `CommentRepliesList` wrapper component
* More random cleanup
* More cleanup and fix some styling I had broken
* Make bet calculations less wrong
* Keep up to date with master
* Make copy link component copy better URL
* Make highlighted comments align properly
* Make user header left align with content on comments
* Fix some free response UI stuff up
* WIP persistence work
* Fix up close date filter, kill custom scroll restoration
* Use built-in Next.js scroll restoration machinery
* Tweaking stuff
* Implement 'history state' idea
* Clean up and unify persistent state stores
* Respect options for persisting contract search
* Fix typing in common lib
* Clean up console logging
* Create backend for Dashboards
* Rm lastupdatetime for now
* Added a create-dashboard and sharable view dashboard page
* Various nit fixes.
* Renamed Dashboards to Posts
* Fix nits
* Convert useUserBets to react query
* Fix duplicate key warnings
* Fix react-query workaround to use refetchOnMount: always'
* Use react query for portfolio history
* Fix useUserBet workaround
* Script to back fill unique bettors in all contracts
* React query for user bet contracts, using uniqueBettorsId!
* Prefetch user bets / portfolio data
* Make portfolio graph on profile not load extra data
* Clean up unused props
* Tidy up markup
* Enable "daily" option again on portfolio history picker
* add utility class for `word-break: break-word`
* refactor visuallyHidden style out of Page
* refactor out ref sizing hack in sidebar
* replace style props with tailwind classes
* Allow to follow/unfollow markets, backfill as well
* remove yarn script edit
* add decrement comment
* Lint
* Decrement follow count on unfollow
* Follow/unfollow button logic
* Unfollow/follow => heart
* Add user to followers in place-bet and sell-shares
* Add tracking
* Show contract follow modal for first time following
* Increment follower count as well
* Remove add follow from bet trigger
* restore on-create-bet
* Add pubsub to dev.sh, show heart on FR, remove from answer trigger
* Remove some old loan code
* Almost complete implementation of updateLoans cloud function
* Merge fixes
* Use invested instead of sale value, check if eligible, perform payouts
* Run monday 12am
* Implement loan income notification
* Fix imports
* Loan update fixes / debug
* Handle NaN and negative loan calcs
* Working loan notification
* Loan modal!
* Move loans calculation to /common
* Better layout
* Pay back loan on sell shares
* Pay back fraction of loan on redeem
* Sell bet loan: negate buy bet's loan
* Modal tweaks
* Compute and store nextLoanCached for all users
* lint
* Update loans with newest portfolio
* Filter loans to only unresolved contracts
* Tweak spacing
* Increase memory
* Revert "Revert "Tile contract cards in masonry layout (#761)""
This reverts commit 62728e52b7.
* Sort the contracts in the correct masonry order
* Fix ordering on single columns
* Use react-masonry-css to accomplish masonry view
* Improve comment
* Remove gridClassName
Everything is spaced with m-4, too bad
* Send out email template for 3 trending markets
* Rich text to plaintext descriptions, other ui changes
* Lint
* Filter for closed markets
* Change sign
* First order must be closeTime
* Send 6 emails, check flag twice
* Exclude contracts with trump and president in the name
* interesting markets email
* sendInterestingMarketsEmail
* Change subject line back
Co-authored-by: mantikoros <sgrugett@gmail.com>
* rename BetRow -> BetButton
* Replace bet modal in embed with inline betting
- Also simplifies graph height calculation
* Move bet row above graph, in "mini modal"
* Show signup button if not signed up
* Show probability change
* Show error after modal
- Show balance if insufficient funds
- Clear error from amount input if amount deleted entirely
* Fix error state conditions
- Reset amount input on success
- Reset success state on user input
* Make input smaller (80px)
Headless UI's Modal component autofocuses the first focusable item
inside it when opened. This is by design for accessibility reasons.
See https://headlessui.com/react/dialog#managing-initial-focus
Ironically this means we'll have to remove keyboard focus for tooltips
because this causes the tooltips to pop up unnecessarily for all users
whenever the dialog is opened. The alternative is managing focus
manually for several dialogs, which may not be possible as some of our
modals lack a sensible element to focus by default.
* fix https
* add beasts
* Remove extra file
* Prettier-ify code
* Prettier-ify
* add basic land guesser
also added fetcher to filter all cards instead of only unique art
* default to original
makes basic better
* added set symbol to basics
added set symbol to the basics game mode. Changed name to "How Basic"
* cleanup
* changed some pixels
* only load set data if needed
* hacked fix for removing image from name
* removed check from original
* remove check from original
* sort names by set instead of by set symbol
* include battlebond
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
* fix https
* add beasts
* Remove extra file
* Prettier-ify code
* Prettier-ify
* add basic land guesser
also added fetcher to filter all cards instead of only unique art
* default to original
makes basic better
* added set symbol to basics
added set symbol to the basics game mode. Changed name to "How Basic"
* cleanup
* changed some pixels
* only load set data if needed
* hacked fix for removing image from name
* removed check from original
* remove check from original
* sort names by set instead of by set symbol
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
* fix https
* add beasts
* Remove extra file
* Prettier-ify code
* Prettier-ify
* add basic land guesser
also added fetcher to filter all cards instead of only unique art
* default to original
makes basic better
* added set symbol to basics
added set symbol to the basics game mode. Changed name to "How Basic"
* cleanup
* changed some pixels
* only load set data if needed
* hacked fix for removing image from name
* removed check from original
* remove check from original
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
* fix https
* add beasts
* Remove extra file
* Prettier-ify code
* Prettier-ify
* add basic land guesser
also added fetcher to filter all cards instead of only unique art
* default to original
makes basic better
* added set symbol to basics
added set symbol to the basics game mode. Changed name to "How Basic"
* cleanup
* changed some pixels
* only load set data if needed
* hacked fix for removing image from name
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
* Add min, max, isLogScale to numeric market API return
* Add lastUpdatedTime to market API
* Return a string description in market API
* Accept string descriptions in market POST api
* install prettier eslint config. fix import
* fix another import
* Make `groupConsecutive` more capable
* Put denormalized `contractQuestion` and `contractSlug` on comments
* Update user profile UI to use new denormalized fields
* `/Austin` -> `/market`
* Rewrite useQueryAndSortParams machinery to be faster/simpler/better
* Politely debounce Algolia querying
* Tidy some stuff up
* Style changes suggested by James
* Move search controls into separate component
* Fix up typing on pill groups thingy
* More precise comparison per James
* Make sure `additionalFilter` is passed into controls
* Load bets and comments tabs data on user page independently
* Implement basic pagination on profile comments list
* Tweak server auth to return `null` instead of `undefined`
* Switch to SSR for user page
* Fix lint
* Fix broken contract fetching in user bets list
* Tidying
* Return both user and privateUser from `createuser`
* Make `useStateCheckEquality` more flexible
* Make `AuthContext` track the private user doc
* Change `usePrivateUser` hook to use the auth context data
* Pass both user and private user through SSR to auth context
* Fix bug in create user flow
* Make all tooltips use our component
* Stop mobile tooltip crop (daisy -> floating-ui)
* Show tooltip on tap for touch devices
Except tooltips on buttons
* migrate another daisy tooltip to ours
* Prevent hidden tooltip from covering click/hover
* Embed a tweet by URL
* Clean up imports
* Prevent tweetId from getting interpreted as a number
* Use a single place to embed iframe, Youtube, and Tweets
* Support Manifold and Metaculus embeds
* Remove unused import
* Simplify Manifold paste logic
* Clean up embed rewrite code
* Add back comment
* Rejigger config so tsx is only in web/
* Clean up comment
* Revert unnecessary tsconfig change
* Fix placeholder
* Lighten placeholder
* Embed markets using the "add markets" template
* Override dev domain
* Improve market modal style
- contract searchbar now sticky
- entire card clickable to select (if quickbet is hidden)
- adjust selected card styles
* remove extra export
* Hide pills
* Fix browser redirect warning
* Insert all markets instead of just one
* fix type error
* fixup "Insert all markets instead of just one"
Co-authored-by: Sinclair Chen <abc.sinclair@gmail.com>
* Allow focus on all parts of editor
* Fix background and text colors
* Restrict height of image in comment
* Remove "Type *markdown*" placeholder
it's a little misleading (can't do markdown links) and messes with focus
to be replaced with a highlight menu in the future
* Fix problems with visibility checking code
* Tear out old contract tracking stuff per James
* Use `useEvent` in VisibilityObserver per James suggestion
* Revert "Revert "Switch comments/chat to rich text editor (#703)""
This reverts commit 33906adfe4.
* Fix typing after being weird on Android
Issue: character from mention gets deleted. Most weird on Swiftkey:
mention gets duplicated instead of deleting.
See https://github.com/ProseMirror/prosemirror/issues/565https://bugs.chromium.org/p/chromium/issues/detail?id=612446
The keyboard still closes unexpectedly when you delete :(
* On reply, put space instead of \n after mention
* Remove image upload from placeholder text
- Redundant with image upload button
- Too long on mobile
* fix dependency
* Add cloud function to get custom token from API auth
* Use custom token to authenticate Firebase SDK on server
* Make sure getcustomtoken cloud function is fast
* Make server auth code maximally robust
* Refactor cookie code, make set and delete more flexible
* Challenge bets
* Store avatar url
* Fix before and after probs
* Check balance before creation
* Calculate winning shares
* pretty
* Change winning value
* Set shares to equal each other
* Fix share challenge link
* pretty
* remove lib refs
* Probability of bet is set to market
* Remove peer pill
* Cleanup
* Button on contract page
* don't show challenge if not binary or if resolved
* challenge button (WIP)
* fix accept challenge: don't change pool/probability
* Opengraph preview [WIP]
* elim lib
* Edit og card props
* Change challenge text
* New card gen attempt
* Get challenge on server
* challenge button styling
* Use env domain
* Remove other window ref
* Use challenge creator as avatar
* Remove user name
* Remove s from property, replace prob with outcome
* challenge form
* share text
* Add in challenge parts to template and url
* Challenge url params optional
* Add challenge params to parse request
* Parse please
* Don't remove prob
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Add to readme about how to dev og-image
* Add emojis
* button: gradient background, 2xl size
* beautify accept bet screen
* update question button
* Add separate challenge template
* Accepted challenge sharing card, fix accept bet call
* accept challenge button
* challenge winner page
* create challenge screen
* Your outcome/cost=> acceptorOutcome/cost
* New create challenge panel
* Fix main merge
* Add challenge slug to bet and filter by it
* Center title
* Add helper text
* Add FAQ section
* Lint
* Columnize the user areas in preview link too
* Absolutely position
* Spacing
* Orientation
* Restyle challenges list, cache contract name
* Make copying easy on mobile
* Link spacing
* Fix spacing
* qr codes!
* put your challenges first
* eslint
* Changes to contract buttons and create challenge modal
* Change titles around for current bet
* Add back in contract title after winning
* Cleanup
* Add challenge enabled flag
* Spacing of switch button
* market share row
* Add lite market endpoint
* 500 mana email (#687)
* Create 500-mana.html
* Update 500-mana.html
Fixed typos and links not working
* Added "create a good market" guide
added page creating-market.html
For Stephen to set up condition (email 3 days after signing up)
* Update 500-mana.html
updated 500 Mana email (still need to make changes to create market guide)
* email changes
* sendOneWeekBonusEmail logic
* add dayjs as dependency
* don't use mailgun scheduling
Co-authored-by: mantikoros <sgrugett@gmail.com>
* Challenge Bets (#679)
* Challenge bets
* Store avatar url
* Fix before and after probs
* Check balance before creation
* Calculate winning shares
* pretty
* Change winning value
* Set shares to equal each other
* Fix share challenge link
* pretty
* remove lib refs
* Probability of bet is set to market
* Remove peer pill
* Cleanup
* Button on contract page
* don't show challenge if not binary or if resolved
* challenge button (WIP)
* fix accept challenge: don't change pool/probability
* Opengraph preview [WIP]
* elim lib
* Edit og card props
* Change challenge text
* New card gen attempt
* Get challenge on server
* challenge button styling
* Use env domain
* Remove other window ref
* Use challenge creator as avatar
* Remove user name
* Remove s from property, replace prob with outcome
* challenge form
* share text
* Add in challenge parts to template and url
* Challenge url params optional
* Add challenge params to parse request
* Parse please
* Don't remove prob
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Add to readme about how to dev og-image
* Add emojis
* button: gradient background, 2xl size
* beautify accept bet screen
* update question button
* Add separate challenge template
* Accepted challenge sharing card, fix accept bet call
* accept challenge button
* challenge winner page
* create challenge screen
* Your outcome/cost=> acceptorOutcome/cost
* New create challenge panel
* Fix main merge
* Add challenge slug to bet and filter by it
* Center title
* Add helper text
* Add FAQ section
* Lint
* Columnize the user areas in preview link too
* Absolutely position
* Spacing
* Orientation
* Restyle challenges list, cache contract name
* Make copying easy on mobile
* Link spacing
* Fix spacing
* qr codes!
* put your challenges first
* eslint
* Changes to contract buttons and create challenge modal
* Change titles around for current bet
* Add back in contract title after winning
* Cleanup
* Add challenge enabled flag
* Spacing of switch button
* Put sharing qr code in modal
Co-authored-by: mantikoros <sgrugett@gmail.com>
* See challenges you've accepted too
* Remove max height
* Notify mentioned users on market publish (#683)
* Add function to parse at mentions
* Notify mentioned users on market create
- refactor createNotification to accept list of recipients' ids
* Switch comments/chat to rich text editor (#703)
* Switch comments/chat to rich text editor
* Remove TruncatedComment
* Re-add submit on enter
* Insert at mention on reply
* Update editor style for send button
* only submit on enter in chat
* code review: refactor
* use more specific type for upload
* fix ESlint and errors from merge
* fix trigger on every render eslint warning
* Notify people mentioned in comment
* fix type errors
* Revert "Switch comments/chat to rich text editor (#703)"
This reverts commit f52da72115.
* merge conflict
* share modal
* merge issue
* eslint
* bigger link icion
Co-authored-by: Ian Philips <iansphilips@gmail.com>
Co-authored-by: James Grugett <jahooma@gmail.com>
Co-authored-by: SirSaltyy <104849031+SirSaltyy@users.noreply.github.com>
Co-authored-by: Sinclair Chen <abc.sinclair@gmail.com>
* Switch comments/chat to rich text editor
* Remove TruncatedComment
* Re-add submit on enter
* Insert at mention on reply
* Update editor style for send button
* only submit on enter in chat
* code review: refactor
* use more specific type for upload
* fix ESlint and errors from merge
* fix trigger on every render eslint warning
* Notify people mentioned in comment
* fix type errors
* Challenge bets
* Store avatar url
* Fix before and after probs
* Check balance before creation
* Calculate winning shares
* pretty
* Change winning value
* Set shares to equal each other
* Fix share challenge link
* pretty
* remove lib refs
* Probability of bet is set to market
* Remove peer pill
* Cleanup
* Button on contract page
* don't show challenge if not binary or if resolved
* challenge button (WIP)
* fix accept challenge: don't change pool/probability
* Opengraph preview [WIP]
* elim lib
* Edit og card props
* Change challenge text
* New card gen attempt
* Get challenge on server
* challenge button styling
* Use env domain
* Remove other window ref
* Use challenge creator as avatar
* Remove user name
* Remove s from property, replace prob with outcome
* challenge form
* share text
* Add in challenge parts to template and url
* Challenge url params optional
* Add challenge params to parse request
* Parse please
* Don't remove prob
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Challenge card styling
* Add to readme about how to dev og-image
* Add emojis
* button: gradient background, 2xl size
* beautify accept bet screen
* update question button
* Add separate challenge template
* Accepted challenge sharing card, fix accept bet call
* accept challenge button
* challenge winner page
* create challenge screen
* Your outcome/cost=> acceptorOutcome/cost
* New create challenge panel
* Fix main merge
* Add challenge slug to bet and filter by it
* Center title
* Add helper text
* Add FAQ section
* Lint
* Columnize the user areas in preview link too
* Absolutely position
* Spacing
* Orientation
* Restyle challenges list, cache contract name
* Make copying easy on mobile
* Link spacing
* Fix spacing
* qr codes!
* put your challenges first
* eslint
* Changes to contract buttons and create challenge modal
* Change titles around for current bet
* Add back in contract title after winning
* Cleanup
* Add challenge enabled flag
* Spacing of switch button
* Put sharing qr code in modal
Co-authored-by: mantikoros <sgrugett@gmail.com>
* Add in group chat bubble
* Show chat bubble on nav with unseen notifs
* Spacing
* More spacing
* Remove chat tab
* Show chat on help/welcome/updates/features groups
* Cleanup
* Scroll with updated height
* Update group links in trigger and api
* Remove extra call during creation
* Remove grouplinks on frontend
* Deserialize
* Consolidate logic
* Move function locally
* In progress refactor to not use Algolia components
* Cleanup
* Only query when necessary
* Read and update url params for query and sort
* Don't push router
* Don't update url if using default sort
* Add popstate listener to improve home navigation
* Remove console.logs
* Make better tabs components, apply to user page
* Remove fishy unused href property from tabs
* Remove tab ID property
* Clean up crufty markup in tabs component
* Fix naming to be right (thanks James!)
* Move concurrently dep upwards
* Add express as explicit dependency
* Accept just one HTTP method per endpoint
* Fix endpoint option coalescing
* Expressification of cloud functions
* Nicer logging of API requests
* Refactor web package.json
* Add ts-node and nodemon to dev dependencies, bring back cors
* Add scaffolding to point dev server at local functions
* Enable emulator in dev server scaffolding
* Fix up a little stuff I broke
* Add @ mentions to editor
* Fix mention list not loading
* Sort mention list by prefix, follow count
* Render at mention with Linkify component
- mentions are now Next <Link> rather than <a>
- fix bug where editor.getText() returns [object Object] for mentions
- fix mention rendering for posted markets
* Try embedding iframes in tiptap
* When iframe code is pasted, inject it into the editor
* Code cleanups and comments
* Remove clsx dependency
Cuz it doesn't exist in `common` anyways
* Rename to tiptap-iframe
* Prototype range limit order UI
* Conditionally show YES or NO max payout
* Range bet executes both bets immediately.
* Validate lowLimitProb < highLimitProb
* Show error if low limit is higher than high limit
* Update range order UI
* Revert "Validate lowLimitProb < highLimitProb"
This reverts commit c261fc2743.
* Revert "Range bet executes both bets immediately."
This reverts commit 30b95d75d9.
* Buy panel only non-limit orders
* Bet choice => outcome
* More iterating on range UI
* betChoice => outcome
* Lighten placeholder text
* Referrals page added to sidebar; useSaveReferral; InfoBox
* text color
* eslint
* migrate useUsers hook to react-query (#674)
* Remove bet button from free response comments
* Make answer replies more closely spaced together
* Host Ida and Alex's MTG Guesser game (#656)
* Copy over code from Mtg Guesser
* Run Prettier
* CSS Tweaks: Hover feedback, button positioning
* Hide all but counterspell & burn, for now
* Move to /mtg directory
* Fix prettierignore
* smaller jsons (#673)
limited burn to only red cards and also added limited json files to only have fields needed to play
* Add Ida's tweak to card position
Co-authored-by: marsteralex <bob.masteralex@gmail.com>
* Adjust card positioning
* Make the select screen index.html
* Remove other guessing games
* Remove alternate versions; add Alex's email
* Remove unused jsons
* Small FR comments tweaks
* Spacing tweak
* Changing manalinks table UI (#665)
From table to card view
* Fix comment spacing on non-FR
* Move "Send M$" lower in sidebar More list.
* Move leaderboards up in mobile nav
* eslint
* prettier
Co-authored-by: Sinclair Chen <abc.sinclair@gmail.com>
Co-authored-by: James Grugett <jahooma@gmail.com>
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
Co-authored-by: marsteralex <bob.masteralex@gmail.com>
Co-authored-by: ingawei <46611122+ingawei@users.noreply.github.com>
* Make a React context to manage the logged in user events
* Remove unnecessary new user creation promise machinery
* Slight refactoring to auth context code
* Improvements in response to James feedback
* Copy over code from Mtg Guesser
* Run Prettier
* CSS Tweaks: Hover feedback, button positioning
* Hide all but counterspell & burn, for now
* Move to /mtg directory
* Fix prettierignore
* smaller jsons (#673)
limited burn to only red cards and also added limited json files to only have fields needed to play
* Add Ida's tweak to card position
Co-authored-by: marsteralex <bob.masteralex@gmail.com>
* Cache notifs in local, gives instant load of old notifs
* Small refactor, add ss auth
* unused vars
* Add back in replaceAll
* Save all notifs
* Memoize paginated notifs
* Replace all => replace with regexp
* Set a cookie with an up-to-date Firebase ID token
* Implement server-side authentication cookie reading logic
* Change index page to redirect for authed users
* No branch necessary for logged in users on index page
* Add helpers for creating server-side redirects
* Add some common sense redirects
- links and blockquotes have light font weight, like other text
- font size in editor matches font size in description
- old descriptions have same style as new
- placeholder text matches editor style
- decrease line-height a bit
* Use rich text editor on the description
* Write a new line to description when the question is changed
* Stop showing categories
* Allow anyone to edit their own question
* fixed manalinks bug of claiming own manalink, and also rerouting to home upon claiming if not logged in
* no more multiple hardcoded manalink messages
* minor tweaks of manalink form, adding M$ in front of amount and changing expire time to dropdown instead of calendar selection
* made minimum for uses and amount 1, it seems otherwise it does not generate a link at all
* start on script
* Revert "Remove category filters"
This reverts commit d6e808e1a3.
* Convert categories to official default groups
* Add new users to default groups
* Rework group cards
* Cleanup
* Add unique bettors to contract and sort by them
* Most bettors to most popular
* Unused vars
* Track unique bettor ids on contracts
* Add followed users' bets to personal markets
* Add new users to welcome, bugs, and updates groups
* Add users to fewer default cats
* Add TipTap editor and renderer components
* Change market description editor to rich text
* Type description as JSON, fix string-based logic
- Delete make-predictions.tsx
- Delete feed logic that showed descriptions
* wip Fix API validation
* fix type error
* fix extension import (backend)
In firebase, typescript compiles imports into common js imports
like `const StarterKit = require("@tiptap/starter-kit")`
Even though StarterKit is exported from the cjs file, it gets imported
as undefined. But it magically works if we import *
If you're reading this in the future, consider replacing StarterKit with
the entire list of extensions.
* Stop load on fail create market, improve warning
* Refactor editor as hook / fix infinite submit bug
Move state of editor back up to parent
We have to do this later anyways to allow parent to edit
* Add images - display, paste + uploading
* add uploading state of image
* Fix placeholder, misc styling
min height, quote
* Fix appending to description
* code review fixes: rename, refactor, chop carets
* Add hint & upload button on new lines
- bump to Tailwind 3.1 for arbitrary variants
* clean up, run prettier
* rename FileButton to FileUploadButton
* add image extension as functions dependency
* Simple limit order UI
* Update bet schema
* Restrict bet panel / bet row to only CPMMBinaryContracts (all binary DPM are resolved)
* Limit orders partway implemented
* Update follow leaderboard copy
* Change cpmm code to take some state instead of whole contract
* Write more of matching algorithm
* Fill in more of placebet
* Use client side contract search for emulator
* More correct matching
* Merge branch 'main' into limit-orders
* Some cleanup
* Listen for unfilled bets in bet panel. Calculate how the probability moves based on open limit orders.
* Simpler switching between bet & limit bet.
* Render your open bets (unfilled limit orders)
* Cancel bet endpoint.
* Fix build error
* Rename open bets to limit bets. Tweak payout calculation
* Limit probability selector to 1-99
* Deduct user balance only on each fill. Store orderAmount of bet. Timestamp of fills.
* Use floating equal to check if have shares
* Add limit order switcher to mobile bet dialog
* Support limit orders on numeric markets
* Allow CORS exception for Vercel deployments
* Remove console.logs
* Update user balance by new bet amount
* Tweak vercel cors
* Try another regexp for vercel cors
* Test another vercel regex
* Slight notifications refactor
* Fix docs edit link (#624)
* Fix docs edit link
* Update github links
* Small groups UX changes
* Groups UX on mobile
* Leaderboards => Rankings on groups
* Unused vars
* create: remove automatic setting of log scale
* Use react-query to cache notifications (#625)
* Use react-query to cache notifications
* Fix imports
* Cleanup
* Limit unseen notifs query
* Catch the bounced query
* Don't use interval
* Unused var
* Avoid flash of page nav
* Give notification question priority & 2 lines
* Right justify timestamps
* Rewording
* Margin
* Simplify error msg
* Be explicit about limit for unseen notifs
* Pass limit > 0
* Remove category filters
* Remove category selector references
* Track notification clicks
* Analyze tab usage
* Bold more on new group chats
* Add API route for listing a bets by user (#567)
* Add API route for getting a user's bets
* Refactor bets API to use /bets
* Update /markets to use zod validation
* Update docs
* Clone missing indexes from firestore
* Minor notif spacing adjustments
* Enable tipping on group chats w/ notif (#629)
* Tweak cors regex for vercel
* Your limit bets
* Implement selling shares
* Merge branch 'main' into limit-orders
* Fix lint
* Move binary search to util file
* Add note that there might be closed form
* Add tooltip to explain limit probability
* Tweak
* Cancel your limit orders if you run out of money
* Don't show amount error in probability input
* Require limit prob to be >= .1% and <= 99.9%
* Fix focus input bug
* Simplify mobile betting dialog
* Move mobile limit bets list into bet dialog.
* Small fixes to existing sell shares client
* Lint
* Refactor useSaveShares to actually read from localStorage, use less bug-prone interface.
* Fix NaN error
* Remove TODO
* Simple bet fill notification
* Tweak wording
* Sort limit bets by limit prob
* Padding on limit bets
* Match header size
Co-authored-by: Ian Philips <iansphilips@gmail.com>
Co-authored-by: ahalekelly <ahalekelly@gmail.com>
Co-authored-by: mantikoros <sgrugett@gmail.com>
Co-authored-by: Ben Congdon <ben@congdon.dev>
Co-authored-by: Austin Chen <akrolsmir@gmail.com>
* Show tip notifications
* Optimizing notifications for mobile
* Unused vars
* Move income reason logic to income notif
* Remove unnecessary icons
* Unused vars
* create pseudo-numeric contracts
* graph and bet panel for pseudo numeric
* pseudo numeric market layout, quick betting
* Estimated value
* sell panel
* fix graph
* pseudo numeric resolution
* bets tab
* redemption for pseudo numeric markets
* create log scale market, validation
* log scale
* create: initial value can't be min or max
* don't allow log scale for ranges with negative values (b/c of problem with graph library)
* prettier delenda est
* graph: handle min value of zero
* bet labeling
* validation
* prettier
* pseudo numeric embeds
* update disclaimer
* validation
* validation
* add trigger for updated user
* Add referral bonuses and notifications for them
* Cleanup
* Add share group button, cleanup
* Cleanup
* Add referrals list to user profile
* Remove unused
* Referral bonus => constant
* Refactor
* Add referral txn to helper fn
* Move reads into firebase transaction
* Use effects to write referral info
* Flex-wrap profile objects
* Small ui changes
* Restrict referral user to one update
* Remove rogue semicolon
* Note about group referral query details
* Track referrals, add them to settings list
* Update resolve-market to be a v2 function
* Cleanup API error responses
* Update frontend to use v2 version of resolvemarket
* Appease ESLint
* Address review comments
* Appease ESLint
* Remove unnecessary auth check
* Fix logic bug in FR market validation
* Make it so you can specify runtime opts for v2 functions
* Cleanup to resolve market API resolutions input, fixes
* Fix up tiny lint
* Last minute cleanup to resolvemarket FR API input validation
Co-authored-by: Benjamin <ben@congdon.dev>
* More liberal .gitignores on TS output directories
* Use project references for Typescript functions project
* Use /dist dir for Cloud Functions deployment payload
* Fix Github actions functions tsc job