Skip to content

Commit

Permalink
clients: start experimenting with a new lightweight client based on o…
Browse files Browse the repository at this point in the history
…penapi-fetch
  • Loading branch information
frankie567 committed Feb 6, 2025
1 parent b70ba27 commit 80d0714
Show file tree
Hide file tree
Showing 55 changed files with 24,818 additions and 297 deletions.
3 changes: 2 additions & 1 deletion clients/.changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"web",
"@examples/checkout-embed",
"@examples/checkout-components",
"@polar-sh/api"
"@polar-sh/api",
"@polar-sh/client"
]
}
1 change: 1 addition & 0 deletions clients/apps/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"@observablehq/plot": "^0.6.16",
"@polar-sh/api": "workspace:*",
"@polar-sh/checkout": "workspace:^",
"@polar-sh/client": "workspace:*",
"@polar-sh/mdx": "workspace:*",
"@polar-sh/sdk": "^0.24.0",
"@polar-sh/ui": "workspace:*",
Expand Down
2 changes: 1 addition & 1 deletion clients/apps/web/src/app/(main)/(topbar)/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Topbar from '@/components/Layout/Public/Topbar'
import PublicLayout from '@/components/Layout/PublicLayout'
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getAuthenticatedUser, getUserOrganizations } from '@/utils/user'

export default async function Layout({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
import ClientPage from './ClientPage'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getCustomerById } from '@/utils/customer'
import {
BreadcrumbLink,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import {
BreadcrumbLink,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI as getNewServerSideAPI } from '@/utils/client/serverside'
import { fromISODate, toISODate } from '@/utils/metrics'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { TimeInterval } from '@polar-sh/api'
Expand All @@ -25,9 +26,9 @@ export default async function Page({
product_id?: string | string[]
}
}) {
const api = getServerSideAPI()
const newAPI = getNewServerSideAPI()
const organization = await getOrganizationBySlugOrNotFound(
api,
newAPI,
params.organization,
)

Expand Down Expand Up @@ -64,6 +65,7 @@ export default async function Page({
? fromISODate(searchParams.end_date)
: defaultEndDate

const api = getServerSideAPI()
const limits = await api.metrics.limits()
const minDate = fromISODate(limits.min_date)
const maxDate = addDays(startDate, limits.intervals[interval].max_days - 1)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
import ClientPage from './ClientPage'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
} from '@/utils/datatable'

import { AddOutlined, Search } from '@mui/icons-material'
import { Customer, Organization } from '@polar-sh/api'
import { components } from '@polar-sh/client'
import Avatar from '@polar-sh/ui/components/atoms/Avatar'
import Button from '@polar-sh/ui/components/atoms/Button'
import {
Expand All @@ -29,7 +29,7 @@ import { useRouter } from 'next/navigation'
import React, { useCallback, useEffect, useState } from 'react'

interface ClientPageProps {
organization: Organization
organization: components['schemas']['Organization']
pagination: DataTablePaginationState
sorting: DataTableSortingState
query: string | undefined
Expand Down Expand Up @@ -130,7 +130,7 @@ const ClientPage: React.FC<ClientPageProps> = ({
const customers = customersHook.data?.items || []
const pageCount = customersHook.data?.pagination.max_page ?? 1

const columns: DataTableColumnDef<Customer>[] = [
const columns: DataTableColumnDef<components['schemas']['Customer']>[] = [
{
accessorKey: 'email',
enableSorting: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ import {
defaultMetricMarks,
metricDisplayNames,
} from '@/utils/metrics'
import { Customer, Metrics, MetricType, Organization } from '@polar-sh/api'
import { Metrics, MetricType } from '@polar-sh/api'
import { components } from '@polar-sh/client'
import Button from '@polar-sh/ui/components/atoms/Button'
import { DataTable } from '@polar-sh/ui/components/atoms/DataTable'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
Expand Down Expand Up @@ -52,7 +53,10 @@ const rangeDisplayNames: Record<Range, string> = {
'24h': '24h',
}

const getRangeStartDate = (range: Range, customer: Customer) => {
const getRangeStartDate = (
range: Range,
customer: components['schemas']['Customer'],
) => {
switch (range) {
case 'all_time':
return new Date(customer.created_at)
Expand All @@ -68,8 +72,8 @@ const getRangeStartDate = (range: Range, customer: Customer) => {
}

interface ClientPageProps {
organization: Organization
customer: Customer
organization: components['schemas']['Organization']
customer: components['schemas']['Customer']
}

const ClientPage: React.FC<ClientPageProps> = ({ organization, customer }) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getCustomerById } from '@/utils/customer'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
import ClientPage from './ClientPage'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Contributors from '@/components/Finance/IssueFunding/Contributors'
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Current from '@/components/Finance/IssueFunding/Current'
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Rewarded from '@/components/Finance/IssueFunding/Rewarded'
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI as getNewServerSideAPI } from '@/utils/client/serverside'
import { getMeterById } from '@/utils/meter'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand All @@ -22,11 +23,12 @@ export default async function Page({
}: {
params: { organization: string; id: string }
}) {
const api = getServerSideAPI()
const newAPI = getNewServerSideAPI()
const organization = await getOrganizationBySlugOrNotFound(
api,
newAPI,
params.organization,
)
const api = getServerSideAPI()
const meter = await getMeterById(api, params.id)

return <ClientPage organization={organization} meter={meter} />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI as getNewServerSideAPI } from '@/utils/client/serverside'
import { getMeterById } from '@/utils/meter'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand All @@ -22,11 +23,12 @@ export default async function Page({
}: {
params: { organization: string; id: string }
}) {
const api = getServerSideAPI()
const newAPI = getNewServerSideAPI()
const organization = await getOrganizationBySlugOrNotFound(
api,
newAPI,
params.organization,
)
const api = getServerSideAPI()
const meter = await getMeterById(api, params.id)

return <ClientPage organization={organization} meter={meter} />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
import ClientPage from './ClientPage'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI as getNewServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { getProductById } from '@/utils/product'
Expand All @@ -19,12 +20,13 @@ export default async function Page({
params: { organization: string; id: string }
searchParams: DataTableSearchParams
}) {
const api = getServerSideAPI()
const newAPI = getNewServerSideAPI()
const organization = await getOrganizationBySlugOrNotFound(
api,
newAPI,
params.organization,
)

const api = getServerSideAPI()
const product = await getProductById(api, params.id)

if (!product) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
import ClientPage from './ClientPage'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { useOrder } from '@/hooks/queries/orders'
import { useRefunds } from '@/hooks/queries/refunds'
import { markdownOptionsJustText } from '@/utils/markdown'
import { Order, Organization, Product, RefundReason } from '@polar-sh/api'
import { components } from '@polar-sh/client'
import Button from '@polar-sh/ui/components/atoms/Button'
import { DataTable } from '@polar-sh/ui/components/atoms/DataTable'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
Expand Down Expand Up @@ -115,7 +116,11 @@ const ClientPage: React.FC<ClientPageProps> = ({
</div>
}
className="gap-y-8"
contextView={<CustomerContextView customer={order.customer} />}
contextView={
<CustomerContextView
customer={order.customer as components['schemas']['Customer']}
/>
}
>
<ShadowBox className="dark:divide-polar-700 flex flex-col divide-y divide-gray-200 border-gray-200 bg-transparent p-0">
<div className="flex flex-col gap-6 p-8">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI as getNewServerSideAPI } from '@/utils/client/serverside'
import { getOrderById } from '@/utils/order'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { Metadata } from 'next'
Expand All @@ -15,11 +16,12 @@ export default async function Page({
}: {
params: { organization: string; id: string }
}) {
const api = getServerSideAPI()
const newAPI = getNewServerSideAPI()
const organization = await getOrganizationBySlugOrNotFound(
api,
newAPI,
params.organization,
)
const api = getServerSideAPI()
const order = await getOrderById(api, params.id)

return <ClientPage organization={organization} order={order} />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { ProductPriceType } from '@polar-sh/api'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import UpdateSubscriptionModal from '@/components/Subscriptions/UpdateSubscripti
import { useProduct, useSubscription } from '@/hooks/queries'
import { markdownOptionsJustText } from '@/utils/markdown'
import { Organization, Product, Subscription } from '@polar-sh/api'
import { components } from '@polar-sh/client'
import Button from '@polar-sh/ui/components/atoms/Button'
import Pill from '@polar-sh/ui/components/atoms/Pill'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
Expand Down Expand Up @@ -91,7 +92,11 @@ const ClientPage: React.FC<ClientPageProps> = ({
</div>
}
className="gap-y-8"
contextView={<CustomerContextView customer={subscription.customer} />}
contextView={
<CustomerContextView
customer={subscription.customer as components['schemas']['Customer']}
/>
}
>
<ShadowBox className="dark:divide-polar-700 flex flex-col divide-y divide-gray-200 border-gray-200 bg-transparent p-0">
<div className="flex flex-col gap-6 p-8">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI as getNewServerSideAPI } from '@/utils/client/serverside'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { getSubscriptionById } from '@/utils/subscription'
import { Metadata } from 'next'
Expand All @@ -15,11 +16,12 @@ export default async function Page({
}: {
params: { organization: string; id: string }
}) {
const api = getServerSideAPI()
const newAPI = getNewServerSideAPI()
const organization = await getOrganizationBySlugOrNotFound(
api,
newAPI,
params.organization,
)
const api = getServerSideAPI()
const subscription = await getSubscriptionById(api, params.id)

return <ClientPage organization={organization} subscription={subscription} />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { getServerSideAPI } from '@/utils/api/serverside'
import { getServerSideAPI } from '@/utils/client/serverside'
import { DataTableSearchParams, parseSearchParams } from '@/utils/datatable'
import { getOrganizationBySlugOrNotFound } from '@/utils/organization'
import { SubscriptionStatus } from '@polar-sh/api'
import { Metadata } from 'next'
import ClientPage from './ClientPage'

Expand All @@ -18,7 +17,7 @@ export default async function Page({
params: { organization: string }
searchParams: DataTableSearchParams & {
product_id?: string
status?: Extract<SubscriptionStatus, 'active' | 'canceled'> | 'any'
status?: 'active' | 'canceled' | 'any'
}
}) {
const api = getServerSideAPI()
Expand Down
Loading

0 comments on commit 80d0714

Please sign in to comment.