Skip to content

Commit 730aa7e

Browse files
authored
Pull billing components from @kittycad/react-shared (#8094)
1 parent bb3fb2f commit 730aa7e

File tree

9 files changed

+571
-350
lines changed

9 files changed

+571
-350
lines changed
-5.47 KB
Loading

package-lock.json

Lines changed: 507 additions & 115 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"@headlessui/react": "^1.7.19",
3434
"@headlessui/tailwindcss": "^0.2.2",
3535
"@kittycad/lib": "^2.0.46",
36+
"@kittycad/react-shared": "^0.1.4",
3637
"@lezer/highlight": "^1.2.1",
3738
"@lezer/lr": "^1.4.1",
3839
"@microlink/react-json-view": "^1.27.0",

src/components/BillingDialog.tsx

Lines changed: 0 additions & 57 deletions
This file was deleted.

src/components/BillingRemaining.tsx

Lines changed: 0 additions & 143 deletions
This file was deleted.

src/components/StatusBar/defaultStatusBarItems.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import type { Location } from 'react-router-dom'
33
import { PATHS } from '@src/lib/paths'
44
import { APP_VERSION, getReleaseUrl } from '@src/routes/utils'
55
import {
6+
BillingDialog,
67
BillingRemaining,
78
BillingRemainingMode,
8-
} from '@src/components/BillingRemaining'
9+
} from '@kittycad/react-shared'
910
import { billingActor } from '@src/lib/singletons'
10-
import { BillingDialog } from '@src/components/BillingDialog'
1111
import { Popover } from '@headlessui/react'
1212
import Tooltip from '@src/components/Tooltip'
1313
import { HelpMenu } from '@src/components/HelpMenu'
@@ -19,6 +19,8 @@ import {
1919
EnvironmentChip,
2020
EnvironmentDescription,
2121
} from '@src/components/environment/Environment'
22+
import { useSelector } from '@xstate/react'
23+
import { openExternalBrowserIfDesktop } from '@src/lib/openWindow'
2224

2325
export const defaultGlobalStatusBarItems = ({
2426
location,
@@ -83,6 +85,7 @@ export const defaultGlobalStatusBarItems = ({
8385
]
8486

8587
function BillingStatusBarItem() {
88+
const billingContext = useSelector(billingActor, ({ context }) => context)
8689
return (
8790
<Popover className="relative flex items-stretch">
8891
<Popover.Button
@@ -91,7 +94,9 @@ function BillingStatusBarItem() {
9194
>
9295
<BillingRemaining
9396
mode={BillingRemainingMode.ProgressBarFixed}
94-
billingActor={billingActor}
97+
error={billingContext.error}
98+
credits={billingContext.credits}
99+
allowance={billingContext.allowance}
95100
/>
96101
<Tooltip
97102
position="top"
@@ -103,7 +108,13 @@ function BillingStatusBarItem() {
103108
</Tooltip>
104109
</Popover.Button>
105110
<Popover.Panel className="absolute left-0 bottom-full mb-1 w-64 flex flex-col gap-1 align-stretch rounded-lg shadow-lg text-sm">
106-
<BillingDialog billingActor={billingActor} />
111+
<BillingDialog
112+
upgradeHref={withSiteBaseURL('/design-studio-pricing')}
113+
upgradeClick={openExternalBrowserIfDesktop()}
114+
error={billingContext.error}
115+
credits={billingContext.credits}
116+
allowance={billingContext.allowance}
117+
/>
107118
</Popover.Panel>
108119
</Popover>
109120
)

src/components/billing.test.tsx

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ import { setupServer } from 'msw/node'
1414
// React and XState code to test
1515
import type { Models } from '@kittycad/lib'
1616
import { createActor } from 'xstate'
17-
import {
18-
BillingRemaining,
19-
BillingRemainingMode,
20-
} from '@src/components/BillingRemaining'
17+
import { useSelector } from '@xstate/react'
18+
import { BillingRemaining, BillingRemainingMode } from '@kittycad/react-shared'
2119
import {
2220
BILLING_CONTEXT_DEFAULTS,
2321
billingMachine,
@@ -100,6 +98,18 @@ const createUserPaymentSubscriptionsResponse = (opts: {
10098
},
10199
})
102100

101+
function BillingRemainingWithSelector({ billingActor, mode }) {
102+
const billingContext = useSelector(billingActor, ({ context }) => context)
103+
return (
104+
<BillingRemaining
105+
mode={mode}
106+
error={billingContext.error}
107+
credits={billingContext.credits}
108+
allowance={billingContext.allowance}
109+
/>
110+
)
111+
}
112+
103113
test('Shows a loading spinner when uninitialized credit count', async () => {
104114
server.use(
105115
http.get('*/user/payment/balance', (req, res, ctx) => {
@@ -118,10 +128,7 @@ test('Shows a loading spinner when uninitialized credit count', async () => {
118128
}).start()
119129

120130
const { queryByTestId } = render(
121-
<BillingRemaining
122-
mode={BillingRemainingMode.ProgressBarFixed}
123-
billingActor={billingActor}
124-
/>
131+
<BillingRemainingWithSelector billingActor={billingActor} />
125132
)
126133

127134
await expect(queryByTestId('spinner')).toBeVisible()
@@ -158,7 +165,7 @@ test('Shows the total credits for Unknown subscription', async () => {
158165
}).start()
159166

160167
const { queryByTestId } = render(
161-
<BillingRemaining
168+
<BillingRemainingWithSelector
162169
mode={BillingRemainingMode.ProgressBarFixed}
163170
billingActor={billingActor}
164171
/>
@@ -209,7 +216,7 @@ test('Progress bar reflects ratio left of Free subscription', async () => {
209216
}).start()
210217

211218
const { queryByTestId } = render(
212-
<BillingRemaining
219+
<BillingRemainingWithSelector
213220
mode={BillingRemainingMode.ProgressBarFixed}
214221
billingActor={billingActor}
215222
/>
@@ -270,7 +277,7 @@ test('Shows infinite credits for Pro subscription', async () => {
270277
}).start()
271278

272279
const { queryByTestId } = render(
273-
<BillingRemaining
280+
<BillingRemainingWithSelector
274281
mode={BillingRemainingMode.ProgressBarFixed}
275282
billingActor={billingActor}
276283
/>
@@ -326,7 +333,7 @@ test('Shows infinite credits for Enterprise subscription', async () => {
326333
}).start()
327334

328335
const { queryByTestId } = render(
329-
<BillingRemaining
336+
<BillingRemainingWithSelector
330337
mode={BillingRemainingMode.ProgressBarFixed}
331338
billingActor={billingActor}
332339
/>

0 commit comments

Comments
 (0)