@@ -20,8 +20,7 @@ export const getServerSideProps = getGetServerSideProps({
20
20
notFound : data => ! data . item
21
21
} )
22
22
23
- // TODO: cleanup
24
- const SUB_QUERY = gql `
23
+ const SUB_BASECOST = gql `
25
24
query Sub($name: String!) {
26
25
sub(name: $name) {
27
26
name
@@ -39,16 +38,8 @@ export default function PostEdit ({ ssrData }) {
39
38
const { me } = useMe ( )
40
39
const [ sub , setSub ] = useState ( item . subName )
41
40
42
- // TODO: cleanup
43
- const { data : oldSubData } = useQuery ( SUB_QUERY , {
44
- variables : { name : item . subName } ,
45
- skip : ! item . subName
46
- } )
47
-
48
- const { data : newSubData } = useQuery ( SUB_QUERY , {
49
- variables : { name : sub } ,
50
- skip : ! sub
51
- } )
41
+ // we need to fetch the new sub to calculate the cost difference
42
+ const { data : newSubData } = useQuery ( SUB_BASECOST , { variables : { name : sub } } )
52
43
53
44
const [ , , editThreshold ] = useCanEdit ( item )
54
45
@@ -68,7 +59,7 @@ export default function PostEdit ({ ssrData }) {
68
59
itemType = 'BOUNTY'
69
60
}
70
61
71
- function editLineItems ( oldSub , newSub ) {
62
+ function editLineItems ( newSub ) {
72
63
const existingBoostLineItem = item . boost
73
64
? {
74
65
existingBoost : {
@@ -79,15 +70,24 @@ export default function PostEdit ({ ssrData }) {
79
70
}
80
71
}
81
72
: undefined
73
+
74
+ const isSwitchingSub = item . subName !== newSub ?. name
75
+ const subCostDifference = isSwitchingSub && {
76
+ ...postCommentBaseLineItems ( {
77
+ baseCost : Math . max ( 0 , ( newSub ?. baseCost ?? 0 ) - ( item ?. sub ?. baseCost ?? 0 ) ) ,
78
+ me : ! ! me
79
+ } )
80
+ }
81
+
82
82
return {
83
- ...( item . subName !== newSub ?. name ? postCommentBaseLineItems ( { baseCost : Math . max ( 0 , newSub ?. baseCost - oldSub ?. baseCost ) , me : ! ! me } ) : undefined ) ,
83
+ ...subCostDifference ,
84
84
...existingBoostLineItem
85
85
}
86
86
}
87
87
88
88
return (
89
89
< CenterLayout sub = { sub } >
90
- < FeeButtonProvider baseLineItems = { editLineItems ( oldSubData ?. sub , newSubData ?. sub ) } >
90
+ < FeeButtonProvider baseLineItems = { editLineItems ( newSubData ?. sub ) } >
91
91
< FormType item = { item } editThreshold = { editThreshold } >
92
92
{ ! item . isJob &&
93
93
< SubSelect
0 commit comments