Skip to content

Commit

Permalink
clients/web: remove personal org concept
Browse files Browse the repository at this point in the history
  • Loading branch information
frankie567 committed Jul 17, 2024
1 parent d25489f commit 0c8bf0c
Show file tree
Hide file tree
Showing 26 changed files with 122 additions and 352 deletions.
28 changes: 13 additions & 15 deletions clients/apps/web/src/app/(topbar)/(backer)/(sidebar)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,37 +6,35 @@ import {
SetupProductsUpsell,
} from '@/components/Dashboard/Upsell'
import PurchaseSidebar from '@/components/Purchases/PurchasesSidebar'
import { useAuth, useGitHubAccount, usePersonalOrganization } from '@/hooks'
import { useAuth, useGitHubAccount } from '@/hooks'
import { useListMemberOrganizations, useProducts } from '@/hooks/queries'
import { PropsWithChildren, useEffect } from 'react'

export default function Layout({ children }: PropsWithChildren) {
const { authenticated, reloadUser } = useAuth()
const { isLoading: adminOrgsAreLoading } = useListMemberOrganizations()
const personalOrg = usePersonalOrganization()
const organizations = useListMemberOrganizations()
const products = useProducts(
organizations.data?.items?.map((o) => o.id) || [],
)
const githubAccount = useGitHubAccount()

// Reload user on page load to make sure that the github oauth data is up to date
useEffect(() => {
reloadUser()
}, [])

const products = useProducts(personalOrg?.id)
const productsAreLoading = products.isLoading
const shouldShowMaintainerUpsell =
authenticated &&
!organizations.isLoading &&
organizations.data?.pagination.total_count === 0

const shouldShowProductsUpsell =
!adminOrgsAreLoading &&
!productsAreLoading &&
!!personalOrg &&
personalOrg.feature_settings?.subscriptions_enabled &&
!organizations.isLoading &&
!products.isLoading &&
(products?.data?.items?.filter((p) => p.type !== 'free').length ?? 0) < 1

const githubAccount = useGitHubAccount()
const shouldShowGitHubAuthUpsell = authenticated && !githubAccount

const listOrganizationQuery = useListMemberOrganizations()

const shouldShowMaintainerUpsell =
authenticated && !listOrganizationQuery.isLoading && !personalOrg

return (
<div className="flex h-full flex-col gap-12 md:flex-row">
<div className="flex h-full w-full flex-shrink-0 flex-col gap-y-6 self-stretch md:sticky md:top-[3rem] md:max-w-xs">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,8 @@ import AccountSetup from '@/components/Accounts/AccountSetup'
import AccountsList from '@/components/Accounts/AccountsList'
import { Modal } from '@/components/Modal'
import { useModal } from '@/components/Modal/useModal'
import { useAuth, usePersonalOrganization } from '@/hooks'
import {
useAccount,
useListAccounts,
useOrganizationAccount,
} from '@/hooks/queries'
import { useAuth } from '@/hooks'
import { useAccount, useListAccounts } from '@/hooks/queries'
import { ALL_ACCOUNT_TYPES } from '@/utils/account'
import { api } from '@/utils/api'
import { ShadowBoxOnMd } from 'polarkit/components/ui/atoms/shadowbox'
Expand All @@ -19,7 +15,6 @@ import { useCallback, useEffect, useState } from 'react'

export default function ClientPage() {
const { currentUser, reloadUser } = useAuth()
const personalOrganization = usePersonalOrganization()
const { data: accounts } = useListAccounts()
const {
isShown: isShownSetupModal,
Expand All @@ -33,22 +28,13 @@ export default function ClientPage() {
// eslint-disable-next-line
}, [])

const { data: organizationAccount } = useOrganizationAccount(
personalOrganization?.id,
)
const { data: personalAccount } = useAccount(currentUser?.account_id)

const [linkAccountLoading, setLinkAccountLoading] = useState(false)
const onLinkAccount = useCallback(
async (accountId: string) => {
setLinkAccountLoading(true)
try {
if (personalOrganization) {
await api.organizations.setAccount({
id: personalOrganization.id,
body: { account_id: accountId },
})
}
await api.users.setAccount({
body: { account_id: accountId },
})
Expand All @@ -58,15 +44,15 @@ export default function ClientPage() {
setLinkAccountLoading(false)
}
},
[personalOrganization, reloadUser],
[reloadUser],
)
return (
<div className="flex flex-col gap-y-6">
{accounts && (
<AccountSetup
organization={personalOrganization}
organization={undefined}
organizationAccount={undefined}
accounts={accounts.items || []}
organizationAccount={organizationAccount}
personalAccount={personalAccount}
loading={linkAccountLoading}
onLinkAccount={onLinkAccount}
Expand Down Expand Up @@ -100,7 +86,6 @@ export default function ClientPage() {
<AccountCreateModal
onClose={hideSetupModal}
accountTypes={ALL_ACCOUNT_TYPES}
forOrganizationId={personalOrganization?.id}
forUserId={currentUser?.id}
returnPath="/finance/account"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,8 @@ import AccountBalance from '@/components/Transactions/AccountBalance'
import AccountBanner from '@/components/Transactions/AccountBanner'
import PayoutTransactionsList from '@/components/Transactions/PayoutTransactionsList'
import TransactionsList from '@/components/Transactions/TransactionsList'
import { useAuth, usePersonalOrganization } from '@/hooks'
import {
useAccount,
useOrganizationAccount,
useSearchTransactions,
} from '@/hooks/queries'
import { useAuth } from '@/hooks'
import { useAccount, useSearchTransactions } from '@/hooks/queries'
import {
DataTablePaginationState,
DataTableSortingState,
Expand All @@ -24,7 +20,7 @@ import {
TabsList,
TabsTrigger,
} from 'polarkit/components/ui/atoms/tabs'
import { useCallback, useMemo } from 'react'
import { useCallback } from 'react'

export default function ClientPage({
pagination,
Expand All @@ -37,7 +33,6 @@ export default function ClientPage({
const router = useRouter()
const pathname = usePathname()
const params = useSearchParams()
const personalOrganization = usePersonalOrganization()

const setActiveTab = useCallback(
(value: string) => {
Expand Down Expand Up @@ -76,13 +71,8 @@ export default function ClientPage({
)
}

const { data: organizationAccount, isLoading: accountIsLoading } =
useOrganizationAccount(personalOrganization?.id)
const { data: personalAccount } = useAccount(currentUser?.account_id)

const account = useMemo(
() => organizationAccount || personalAccount,
[organizationAccount, personalAccount],
const { data: account, isLoading: accountIsLoading } = useAccount(
currentUser?.account_id,
)

const balancesHook = useSearchTransactions({
Expand All @@ -109,13 +99,7 @@ export default function ClientPage({

return (
<div className="flex flex-col gap-y-8">
{personalOrganization && currentUser && (
<AccountBanner
organization={personalOrganization}
user={currentUser}
isPersonal
/>
)}
{currentUser && <AccountBanner user={currentUser} />}
{account && (
<AccountBalance
account={account}
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import AccountBanner from '@/components/Transactions/AccountBanner'
import TransactionsList from '@/components/Transactions/TransactionsList'
import { useAuth, usePersonalOrganization } from '@/hooks'
import { useAuth } from '@/hooks'
import { useSearchTransactions } from '@/hooks/queries'
import {
DataTablePaginationState,
Expand All @@ -23,7 +23,6 @@ export default function ClientPage({
const router = useRouter()
const pathname = usePathname()
const { currentUser } = useAuth()
const personalOrganization = usePersonalOrganization()

const setPagination = (
updaterOrValue:
Expand Down Expand Up @@ -64,13 +63,7 @@ export default function ClientPage({

return (
<div className="flex flex-col gap-y-6">
{personalOrganization && currentUser && (
<AccountBanner
organization={personalOrganization}
user={currentUser}
isPersonal
/>
)}
{currentUser && <AccountBanner user={currentUser} />}
<ShadowBoxOnMd>
<div className="mb-8 flex flex-row items-center justify-between">
<div className="flex flex-col gap-y-2">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@

import { HeaderPill, RewardsContent } from '@/components/Finance/Finance'
import AccountBanner from '@/components/Transactions/AccountBanner'
import { useAuth, usePersonalOrganization } from '@/hooks'
import { useAuth } from '@/hooks'
import { useListRewardsToUser } from '@/hooks/queries'

export default function Page() {
const { currentUser } = useAuth()
const rewards = useListRewardsToUser(currentUser?.id)
const organization = usePersonalOrganization()

const rewardsSum = rewards.data?.items
? rewards.data.items.map((r) => r.amount.amount).reduce((a, b) => a + b, 0)
Expand All @@ -18,13 +17,7 @@ export default function Page() {
<>
{rewards.data?.items && currentUser && (
<div className="flex flex-col space-y-8">
{organization && (
<AccountBanner
organization={organization}
user={currentUser}
isPersonal
/>
)}
<AccountBanner user={currentUser} />
<HeaderPill
title="Your rewards"
amount={rewardsSum}
Expand Down
3 changes: 0 additions & 3 deletions clients/apps/web/src/app/maintainer/[organization]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ export default async function Layout({
// User does not have access to organization
const org = orgs.find((o) => o.slug === params.organization)

const personalOrganization = orgs.find((o) => o.is_personal)

if (!org) {
return notFound()
}
Expand All @@ -54,7 +52,6 @@ export default async function Layout({
organization={org}
memberOrganizations={orgs}
adminOrganizations={adminOrgs}
personalOrganization={personalOrganization}
>
{children}
</MaintainerOrganizationContextProvider>
Expand Down
27 changes: 3 additions & 24 deletions clients/apps/web/src/app/maintainer/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,17 @@ import Gatekeeper from '@/components/Gatekeeper/Gatekeeper'
import { Progress50 } from '@/components/Issues/IssueProgress'
import DashboardLayout from '@/components/Layout/DashboardLayout'
import FakePullRequest from '@/components/Settings/FakePullRequest'
import { useAuth, usePersonalOrganization } from '@/hooks'
import { shouldBeOnboarded } from '@/hooks/onboarding'
import { useAuth } from '@/hooks'
import { useListMemberOrganizations } from '@/hooks/queries'
import { CONFIG } from '@/utils/config'
import Link from 'next/link'
import { redirect, useRouter } from 'next/navigation'
import { useRouter } from 'next/navigation'
import Button from 'polarkit/components/ui/atoms/button'
import { useCallback, useEffect } from 'react'

export default function Page() {
const { authenticated, currentUser, reloadUser } = useAuth()
const listOrganizationsQuery = useListMemberOrganizations()
const personalOrg = usePersonalOrganization()

const router = useRouter()
const orgs = listOrganizationsQuery?.data?.items
Expand Down Expand Up @@ -47,22 +45,7 @@ export default function Page() {
}

if (!listOrganizationsQuery.isFetched) return

// redirect to first org
if (personalOrg) {
shouldBeOnboarded(personalOrg)
? redirect(`/maintainer/${personalOrg.slug}/onboarding`)
: redirect(`/maintainer/${personalOrg.slug}/overview`)
return
}
}, [
listOrganizationsQuery,
orgs,
router,
authenticated,
currentUser,
personalOrg,
])
}, [listOrganizationsQuery, orgs, router, authenticated, currentUser])

const steps = [
{
Expand All @@ -83,10 +66,6 @@ export default function Page() {
listOrganizationsQuery.isFetched &&
listOrganizationsQuery.data?.items?.length === 0

if (!personalOrg) {
return null
}

return (
<Gatekeeper>
<DashboardLayout>
Expand Down
24 changes: 0 additions & 24 deletions clients/apps/web/src/app/me/page.tsx

This file was deleted.

Loading

0 comments on commit 0c8bf0c

Please sign in to comment.