2021-09-11 21:52:19 +00:00
|
|
|
import AccordianItem from './accordian-item'
|
2023-10-22 16:54:27 +00:00
|
|
|
import { Input, InputUserSuggest, VariableInput, Checkbox } from './form'
|
2023-07-24 18:35:05 +00:00
|
|
|
import InputGroup from 'react-bootstrap/InputGroup'
|
2023-09-26 00:54:35 +00:00
|
|
|
import { BOOST_MIN, BOOST_MULT, MAX_FORWARDS } from '../lib/constants'
|
2023-10-04 18:47:09 +00:00
|
|
|
import { DEFAULT_CROSSPOSTING_RELAYS } from '../lib/nostr'
|
2022-07-24 00:00:57 +00:00
|
|
|
import Info from './info'
|
2023-08-08 21:04:06 +00:00
|
|
|
import { numWithUnits } from '../lib/format'
|
2023-09-12 20:56:03 +00:00
|
|
|
import styles from './adv-post-form.module.css'
|
2023-10-04 18:47:09 +00:00
|
|
|
import { useMe } from './me'
|
2023-10-09 21:08:33 +00:00
|
|
|
import { useRouter } from 'next/router'
|
2023-11-11 00:18:10 +00:00
|
|
|
import { useFeeButton } from './fee-button'
|
2021-09-11 21:52:19 +00:00
|
|
|
|
multiple forwards on a post (#403)
* multiple forwards on a post
first phase of the multi-forward support
* update the graphql mutation for discussion posts to accept and validate multiple forwards
* update the discussion form to allow multiple forwards in the UI
* start working on db schema changes
* uncomment db schema, add migration to create the new model, and update create_item, update_item
stored procedures
* Propagate updates from discussion to poll, link, and bounty forms
Update the create, update poll sql functions for multi forward support
* Update gql, typedefs, and resolver to return forwarded users in items responses
* UI changes to show multiple forward recipients, and conditional upvote logic changes
* Update notification text to reflect multiple forwards upon vote action
* Disallow duplicate stacker entries
* reduce duplication in populating adv-post-form initial values
* Update item_act sql function to implement multi-way forwarding
* Update referral functions to scale referral bonuses for forwarded users
* Update notification text to reflect non-100% forwarded sats cases
* Update wallet history sql queries to accommodate multi-forward use cases
* Block zaps for posts you are forwarded zaps at the API layer, in addition
to in the UI
* Delete fwdUserId column from Item table as part of migration
* Fix how we calculate stacked sats after partial forwards in wallet history
* Exclude entries from wallet history that are 0 stacked sats from posts with 100% forwarded to other users
* Fix wallet history query for forwarded stacked sats to be scaled by the fwd pct
* Reduce duplication in adv post form, and do some style tweaks for better layout
* Use MAX_FORWARDS constants
* Address various PR feedback
* first enhancement pass
* enhancement pass too
---------
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-23 22:44:17 +00:00
|
|
|
const EMPTY_FORWARD = { nym: '', pct: '' }
|
|
|
|
|
2023-10-22 16:54:27 +00:00
|
|
|
export function AdvPostInitial ({ forward, boost }) {
|
2022-08-18 18:15:24 +00:00
|
|
|
return {
|
2023-09-26 00:54:35 +00:00
|
|
|
boost: boost || '',
|
multiple forwards on a post (#403)
* multiple forwards on a post
first phase of the multi-forward support
* update the graphql mutation for discussion posts to accept and validate multiple forwards
* update the discussion form to allow multiple forwards in the UI
* start working on db schema changes
* uncomment db schema, add migration to create the new model, and update create_item, update_item
stored procedures
* Propagate updates from discussion to poll, link, and bounty forms
Update the create, update poll sql functions for multi forward support
* Update gql, typedefs, and resolver to return forwarded users in items responses
* UI changes to show multiple forward recipients, and conditional upvote logic changes
* Update notification text to reflect multiple forwards upon vote action
* Disallow duplicate stacker entries
* reduce duplication in populating adv-post-form initial values
* Update item_act sql function to implement multi-way forwarding
* Update referral functions to scale referral bonuses for forwarded users
* Update notification text to reflect non-100% forwarded sats cases
* Update wallet history sql queries to accommodate multi-forward use cases
* Block zaps for posts you are forwarded zaps at the API layer, in addition
to in the UI
* Delete fwdUserId column from Item table as part of migration
* Fix how we calculate stacked sats after partial forwards in wallet history
* Exclude entries from wallet history that are 0 stacked sats from posts with 100% forwarded to other users
* Fix wallet history query for forwarded stacked sats to be scaled by the fwd pct
* Reduce duplication in adv post form, and do some style tweaks for better layout
* Use MAX_FORWARDS constants
* Address various PR feedback
* first enhancement pass
* enhancement pass too
---------
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-23 22:44:17 +00:00
|
|
|
forward: forward?.length ? forward : [EMPTY_FORWARD]
|
2022-08-18 18:15:24 +00:00
|
|
|
}
|
2021-09-11 21:52:19 +00:00
|
|
|
}
|
|
|
|
|
2023-10-22 16:54:27 +00:00
|
|
|
export default function AdvPostForm ({ children }) {
|
2023-10-04 18:47:09 +00:00
|
|
|
const me = useMe()
|
2023-10-09 21:08:33 +00:00
|
|
|
const router = useRouter()
|
2023-11-11 00:18:10 +00:00
|
|
|
const { merge } = useFeeButton()
|
2023-10-04 18:47:09 +00:00
|
|
|
|
2021-09-11 21:52:19 +00:00
|
|
|
return (
|
|
|
|
<AccordianItem
|
2021-09-12 16:55:38 +00:00
|
|
|
header={<div style={{ fontWeight: 'bold', fontSize: '92%' }}>options</div>}
|
2021-09-11 21:52:19 +00:00
|
|
|
body={
|
2022-04-18 20:19:07 +00:00
|
|
|
<>
|
2023-10-22 16:54:27 +00:00
|
|
|
{children}
|
2022-04-18 20:19:07 +00:00
|
|
|
<Input
|
2022-07-24 00:00:57 +00:00
|
|
|
label={
|
2023-09-26 00:54:35 +00:00
|
|
|
<div className='d-flex align-items-center'>boost
|
2022-07-24 00:00:57 +00:00
|
|
|
<Info>
|
2023-07-24 18:35:05 +00:00
|
|
|
<ol className='fw-bold'>
|
2022-07-24 00:00:57 +00:00
|
|
|
<li>Boost ranks posts higher temporarily based on the amount</li>
|
2023-08-08 21:04:06 +00:00
|
|
|
<li>The minimum boost is {numWithUnits(BOOST_MIN, { abbreviate: false })}</li>
|
2023-09-26 00:54:35 +00:00
|
|
|
<li>Each {numWithUnits(BOOST_MULT, { abbreviate: false })} of boost is equivalent to one trusted upvote
|
2022-07-24 00:00:57 +00:00
|
|
|
<ul>
|
2023-09-26 00:54:35 +00:00
|
|
|
<li>e.g. {numWithUnits(BOOST_MULT * 5, { abbreviate: false })} is like 5 votes</li>
|
2022-07-24 00:00:57 +00:00
|
|
|
</ul>
|
|
|
|
</li>
|
2023-09-26 00:54:35 +00:00
|
|
|
<li>The decay of boost "votes" increases at 1.25x the rate of organic votes
|
2022-07-24 00:00:57 +00:00
|
|
|
<ul>
|
|
|
|
<li>i.e. boost votes fall out of ranking faster</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2023-07-09 17:37:12 +00:00
|
|
|
<li>100% of sats from boost are given back to top stackers as rewards</li>
|
2022-07-24 00:00:57 +00:00
|
|
|
</ol>
|
|
|
|
</Info>
|
|
|
|
</div>
|
|
|
|
}
|
2022-04-18 20:19:07 +00:00
|
|
|
name='boost'
|
2023-11-11 00:18:10 +00:00
|
|
|
onChange={(_, e) => merge({
|
|
|
|
boost: {
|
|
|
|
term: `+ ${e.target.value}`,
|
|
|
|
label: 'boost',
|
|
|
|
modifier: cost => cost + Number(e.target.value)
|
|
|
|
}
|
|
|
|
})}
|
2022-04-18 20:19:07 +00:00
|
|
|
hint={<span className='text-muted'>ranks posts higher temporarily based on the amount</span>}
|
|
|
|
append={<InputGroup.Text className='text-monospace'>sats</InputGroup.Text>}
|
|
|
|
/>
|
multiple forwards on a post (#403)
* multiple forwards on a post
first phase of the multi-forward support
* update the graphql mutation for discussion posts to accept and validate multiple forwards
* update the discussion form to allow multiple forwards in the UI
* start working on db schema changes
* uncomment db schema, add migration to create the new model, and update create_item, update_item
stored procedures
* Propagate updates from discussion to poll, link, and bounty forms
Update the create, update poll sql functions for multi forward support
* Update gql, typedefs, and resolver to return forwarded users in items responses
* UI changes to show multiple forward recipients, and conditional upvote logic changes
* Update notification text to reflect multiple forwards upon vote action
* Disallow duplicate stacker entries
* reduce duplication in populating adv-post-form initial values
* Update item_act sql function to implement multi-way forwarding
* Update referral functions to scale referral bonuses for forwarded users
* Update notification text to reflect non-100% forwarded sats cases
* Update wallet history sql queries to accommodate multi-forward use cases
* Block zaps for posts you are forwarded zaps at the API layer, in addition
to in the UI
* Delete fwdUserId column from Item table as part of migration
* Fix how we calculate stacked sats after partial forwards in wallet history
* Exclude entries from wallet history that are 0 stacked sats from posts with 100% forwarded to other users
* Fix wallet history query for forwarded stacked sats to be scaled by the fwd pct
* Reduce duplication in adv post form, and do some style tweaks for better layout
* Use MAX_FORWARDS constants
* Address various PR feedback
* first enhancement pass
* enhancement pass too
---------
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-23 22:44:17 +00:00
|
|
|
<VariableInput
|
|
|
|
label='forward sats to'
|
2022-04-18 20:19:07 +00:00
|
|
|
name='forward'
|
multiple forwards on a post (#403)
* multiple forwards on a post
first phase of the multi-forward support
* update the graphql mutation for discussion posts to accept and validate multiple forwards
* update the discussion form to allow multiple forwards in the UI
* start working on db schema changes
* uncomment db schema, add migration to create the new model, and update create_item, update_item
stored procedures
* Propagate updates from discussion to poll, link, and bounty forms
Update the create, update poll sql functions for multi forward support
* Update gql, typedefs, and resolver to return forwarded users in items responses
* UI changes to show multiple forward recipients, and conditional upvote logic changes
* Update notification text to reflect multiple forwards upon vote action
* Disallow duplicate stacker entries
* reduce duplication in populating adv-post-form initial values
* Update item_act sql function to implement multi-way forwarding
* Update referral functions to scale referral bonuses for forwarded users
* Update notification text to reflect non-100% forwarded sats cases
* Update wallet history sql queries to accommodate multi-forward use cases
* Block zaps for posts you are forwarded zaps at the API layer, in addition
to in the UI
* Delete fwdUserId column from Item table as part of migration
* Fix how we calculate stacked sats after partial forwards in wallet history
* Exclude entries from wallet history that are 0 stacked sats from posts with 100% forwarded to other users
* Fix wallet history query for forwarded stacked sats to be scaled by the fwd pct
* Reduce duplication in adv post form, and do some style tweaks for better layout
* Use MAX_FORWARDS constants
* Address various PR feedback
* first enhancement pass
* enhancement pass too
---------
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-23 22:44:17 +00:00
|
|
|
min={0}
|
|
|
|
max={MAX_FORWARDS}
|
|
|
|
emptyItem={EMPTY_FORWARD}
|
|
|
|
hint={<span className='text-muted'>Forward sats to up to 5 other stackers. Any remaining sats go to you.</span>}
|
|
|
|
>
|
|
|
|
{({ index, placeholder }) => {
|
|
|
|
return (
|
|
|
|
<div key={index} className='d-flex flex-row'>
|
|
|
|
<InputUserSuggest
|
|
|
|
name={`forward[${index}].nym`}
|
|
|
|
prepend={<InputGroup.Text>@</InputGroup.Text>}
|
|
|
|
showValid
|
2023-09-12 20:56:03 +00:00
|
|
|
groupClassName={`${styles.name} me-3 mb-0`}
|
multiple forwards on a post (#403)
* multiple forwards on a post
first phase of the multi-forward support
* update the graphql mutation for discussion posts to accept and validate multiple forwards
* update the discussion form to allow multiple forwards in the UI
* start working on db schema changes
* uncomment db schema, add migration to create the new model, and update create_item, update_item
stored procedures
* Propagate updates from discussion to poll, link, and bounty forms
Update the create, update poll sql functions for multi forward support
* Update gql, typedefs, and resolver to return forwarded users in items responses
* UI changes to show multiple forward recipients, and conditional upvote logic changes
* Update notification text to reflect multiple forwards upon vote action
* Disallow duplicate stacker entries
* reduce duplication in populating adv-post-form initial values
* Update item_act sql function to implement multi-way forwarding
* Update referral functions to scale referral bonuses for forwarded users
* Update notification text to reflect non-100% forwarded sats cases
* Update wallet history sql queries to accommodate multi-forward use cases
* Block zaps for posts you are forwarded zaps at the API layer, in addition
to in the UI
* Delete fwdUserId column from Item table as part of migration
* Fix how we calculate stacked sats after partial forwards in wallet history
* Exclude entries from wallet history that are 0 stacked sats from posts with 100% forwarded to other users
* Fix wallet history query for forwarded stacked sats to be scaled by the fwd pct
* Reduce duplication in adv post form, and do some style tweaks for better layout
* Use MAX_FORWARDS constants
* Address various PR feedback
* first enhancement pass
* enhancement pass too
---------
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-23 22:44:17 +00:00
|
|
|
/>
|
|
|
|
<Input
|
|
|
|
name={`forward[${index}].pct`}
|
|
|
|
type='number'
|
2023-08-28 19:31:28 +00:00
|
|
|
step={5}
|
|
|
|
min={1}
|
|
|
|
max={100}
|
multiple forwards on a post (#403)
* multiple forwards on a post
first phase of the multi-forward support
* update the graphql mutation for discussion posts to accept and validate multiple forwards
* update the discussion form to allow multiple forwards in the UI
* start working on db schema changes
* uncomment db schema, add migration to create the new model, and update create_item, update_item
stored procedures
* Propagate updates from discussion to poll, link, and bounty forms
Update the create, update poll sql functions for multi forward support
* Update gql, typedefs, and resolver to return forwarded users in items responses
* UI changes to show multiple forward recipients, and conditional upvote logic changes
* Update notification text to reflect multiple forwards upon vote action
* Disallow duplicate stacker entries
* reduce duplication in populating adv-post-form initial values
* Update item_act sql function to implement multi-way forwarding
* Update referral functions to scale referral bonuses for forwarded users
* Update notification text to reflect non-100% forwarded sats cases
* Update wallet history sql queries to accommodate multi-forward use cases
* Block zaps for posts you are forwarded zaps at the API layer, in addition
to in the UI
* Delete fwdUserId column from Item table as part of migration
* Fix how we calculate stacked sats after partial forwards in wallet history
* Exclude entries from wallet history that are 0 stacked sats from posts with 100% forwarded to other users
* Fix wallet history query for forwarded stacked sats to be scaled by the fwd pct
* Reduce duplication in adv post form, and do some style tweaks for better layout
* Use MAX_FORWARDS constants
* Address various PR feedback
* first enhancement pass
* enhancement pass too
---------
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-23 22:44:17 +00:00
|
|
|
append={<InputGroup.Text className='text-monospace'>%</InputGroup.Text>}
|
2023-09-12 20:56:03 +00:00
|
|
|
groupClassName={`${styles.percent} mb-0`}
|
multiple forwards on a post (#403)
* multiple forwards on a post
first phase of the multi-forward support
* update the graphql mutation for discussion posts to accept and validate multiple forwards
* update the discussion form to allow multiple forwards in the UI
* start working on db schema changes
* uncomment db schema, add migration to create the new model, and update create_item, update_item
stored procedures
* Propagate updates from discussion to poll, link, and bounty forms
Update the create, update poll sql functions for multi forward support
* Update gql, typedefs, and resolver to return forwarded users in items responses
* UI changes to show multiple forward recipients, and conditional upvote logic changes
* Update notification text to reflect multiple forwards upon vote action
* Disallow duplicate stacker entries
* reduce duplication in populating adv-post-form initial values
* Update item_act sql function to implement multi-way forwarding
* Update referral functions to scale referral bonuses for forwarded users
* Update notification text to reflect non-100% forwarded sats cases
* Update wallet history sql queries to accommodate multi-forward use cases
* Block zaps for posts you are forwarded zaps at the API layer, in addition
to in the UI
* Delete fwdUserId column from Item table as part of migration
* Fix how we calculate stacked sats after partial forwards in wallet history
* Exclude entries from wallet history that are 0 stacked sats from posts with 100% forwarded to other users
* Fix wallet history query for forwarded stacked sats to be scaled by the fwd pct
* Reduce duplication in adv post form, and do some style tweaks for better layout
* Use MAX_FORWARDS constants
* Address various PR feedback
* first enhancement pass
* enhancement pass too
---------
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-23 22:44:17 +00:00
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}}
|
|
|
|
</VariableInput>
|
2023-10-09 21:08:33 +00:00
|
|
|
{me && router.query.type === 'discussion' &&
|
2023-10-04 18:47:09 +00:00
|
|
|
<Checkbox
|
|
|
|
label={
|
|
|
|
<div className='d-flex align-items-center'>crosspost to nostr
|
|
|
|
<Info>
|
|
|
|
<ul className='fw-bold'>
|
|
|
|
<li>crosspost this discussion item to nostr</li>
|
|
|
|
<li>requires NIP-07 extension for signing</li>
|
|
|
|
<li>we use your NIP-05 relays if set</li>
|
|
|
|
<li>otherwise we default to these relays:</li>
|
|
|
|
<ul>
|
|
|
|
{DEFAULT_CROSSPOSTING_RELAYS.map((relay, i) => (
|
|
|
|
<li key={i}>{relay}</li>
|
|
|
|
))}
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</Info>
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
name='crosspost'
|
|
|
|
/>}
|
2022-04-18 20:19:07 +00:00
|
|
|
</>
|
2021-09-11 21:52:19 +00:00
|
|
|
}
|
|
|
|
/>
|
|
|
|
)
|
|
|
|
}
|