Skip to content

Commit

Permalink
simplify context for proposals and rewards (#3408)
Browse files Browse the repository at this point in the history
* simplify context for proposals

* .

* move rewards block context up as well

* move rewards context

* remove import

* fix storybook
  • Loading branch information
mattcasey authored Jan 10, 2024
1 parent f6fabb3 commit d6a5956
Show file tree
Hide file tree
Showing 14 changed files with 214 additions and 225 deletions.
25 changes: 11 additions & 14 deletions components/[pageId]/DocumentPage/DocumentPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import { FormFieldsEditor } from 'components/common/form/FormFieldsEditor';
import { EvaluationSidebar } from 'components/proposals/ProposalPage/components/EvaluationSidebar/EvaluationSidebar';
import { ProposalFormFieldInputs } from 'components/proposals/ProposalPage/components/ProposalFormFieldInputs';
import { ProposalStickyFooter } from 'components/proposals/ProposalPage/components/ProposalStickyFooter/ProposalStickyFooter';
import { ProposalsPageProviders } from 'components/proposals/ProposalsPageProviders';
import { NewInlineReward } from 'components/rewards/components/NewInlineReward';
import { useRewards } from 'components/rewards/hooks/useRewards';
import { useCharmEditor } from 'hooks/useCharmEditor';
Expand Down Expand Up @@ -275,19 +274,17 @@ function DocumentPage({
</>
)}
{proposalId && (
<ProposalsPageProviders>
<ProposalProperties
enableSidebar={enableSidebar}
pageId={page.id}
proposalId={proposalId}
pagePermissions={pagePermissions}
readOnly={readonlyProposalProperties}
proposalPage={page}
openEvaluation={openEvaluation}
proposal={proposal}
refreshProposal={refreshProposal}
/>
</ProposalsPageProviders>
<ProposalProperties
enableSidebar={enableSidebar}
pageId={page.id}
proposalId={proposalId}
pagePermissions={pagePermissions}
readOnly={readonlyProposalProperties}
proposalPage={page}
openEvaluation={openEvaluation}
proposal={proposal}
refreshProposal={refreshProposal}
/>
)}
{reward && (
<RewardProperties
Expand Down
13 changes: 5 additions & 8 deletions components/[pageId]/DocumentPage/DocumentPageProviders.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { PageSidebarProvider } from 'components/[pageId]/DocumentPage/hooks/usePageSidebar';
import { CharmEditorProvider } from 'hooks/useCharmEditor';
import { CurrentPageProvider } from 'hooks/useCurrentPage';
import { ProposalBlocksProvider } from 'hooks/useProposalBlocks';
import { ThreadsProvider } from 'hooks/useThreads';
import { VotesProvider } from 'hooks/useVotes';

Expand All @@ -10,13 +9,11 @@ export function DocumentPageProviders({ children }: { children: React.ReactNode
return (
<CurrentPageProvider>
<CharmEditorProvider>
<ProposalBlocksProvider>
<ThreadsProvider>
<VotesProvider>
<PageSidebarProvider>{children}</PageSidebarProvider>
</VotesProvider>
</ThreadsProvider>
</ProposalBlocksProvider>
<ThreadsProvider>
<VotesProvider>
<PageSidebarProvider>{children}</PageSidebarProvider>
</VotesProvider>
</ThreadsProvider>
</CharmEditorProvider>
</CurrentPageProvider>
);
Expand Down
103 changes: 58 additions & 45 deletions components/common/PageLayout/PageLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@ import { PageDialogGlobal } from 'components/common/PageDialog/PageDialogGlobal'
import { AnnouncementBanner } from 'components/common/PageLayout/components/AnnouncementBanner';
import { BlocksExceededBanner } from 'components/common/PageLayout/components/BlocksExceededBanner';
import { SharedPageLayout } from 'components/common/PageLayout/SharedPageLayout';
import { RewardsBoardProvider } from 'components/rewards/hooks/useRewardsBoard';
import { useCurrentSpace } from 'hooks/useCurrentSpace';
import { FocalboardViewsProvider } from 'hooks/useFocalboardViews';
import { useLocalStorage } from 'hooks/useLocalStorage';
import { useSmallScreen } from 'hooks/useMediaScreens';
import { ProposalBlocksProvider } from 'hooks/useProposalBlocks';
import { useResize } from 'hooks/useResize';
import { RewardBlocksProvider } from 'hooks/useRewardBlocks';
import { useSharedPage } from 'hooks/useSharedPage';
import { useUser } from 'hooks/useUser';
import { useWindowSize } from 'hooks/useWindowSize';
Expand Down Expand Up @@ -185,51 +188,61 @@ function PageLayout({ children }: PageLayoutProps) {
</Head>
<LayoutContainer data-test='space-page-layout'>
<FocalboardViewsProvider>
<DocumentPageProviders>
<PageDialogProvider>
{open !== null && (
<>
<AppBar open={open} sidebarWidth={displaySidebarWidth} position='fixed'>
<Header open={open} openSidebar={handleDrawerOpen} />
<BlocksExceededBanner />
<AnnouncementBanner
actionLabel='Check it out'
actionHref='https://tiny.charmverse.io/prop2-updates'
expiryDate='2024-01-31'
>
NEW governance & decision-making workflow launched.
</AnnouncementBanner>
</AppBar>
{isMobile ? (
<MuiDrawer
open={open}
variant='temporary'
onClose={handleDrawerClose}
ModalProps={{
keepMounted: true
}}
>
<Box width={mobileSidebarWidth} minHeight='100vh'>
{drawerContent}
</Box>
</MuiDrawer>
) : (
<Drawer sidebarWidth={displaySidebarWidth} open={open} variant='permanent'>
{drawerContent}
<Tooltip title={!user || isResizing ? '' : 'Drag to resize'} placement='right' followCursor>
<DraggableHandle onMouseDown={(e) => enableResize(e)} isActive={isResizing} disabled={!user} />
</Tooltip>
</Drawer>
)}
</>
)}
<PageContainer>
<HeaderSpacer />
{children}
<PageDialogGlobal />
</PageContainer>
</PageDialogProvider>
</DocumentPageProviders>
<ProposalBlocksProvider>
<RewardBlocksProvider>
<RewardsBoardProvider>
<DocumentPageProviders>
<PageDialogProvider>
{open !== null && (
<>
<AppBar open={open} sidebarWidth={displaySidebarWidth} position='fixed'>
<Header open={open} openSidebar={handleDrawerOpen} />
<BlocksExceededBanner />
<AnnouncementBanner
actionLabel='Check it out'
actionHref='https://tiny.charmverse.io/prop2-updates'
expiryDate='2024-01-31'
>
NEW governance & decision-making workflow launched.
</AnnouncementBanner>
</AppBar>
{isMobile ? (
<MuiDrawer
open={open}
variant='temporary'
onClose={handleDrawerClose}
ModalProps={{
keepMounted: true
}}
>
<Box width={mobileSidebarWidth} minHeight='100vh'>
{drawerContent}
</Box>
</MuiDrawer>
) : (
<Drawer sidebarWidth={displaySidebarWidth} open={open} variant='permanent'>
{drawerContent}
<Tooltip title={!user || isResizing ? '' : 'Drag to resize'} placement='right' followCursor>
<DraggableHandle
onMouseDown={(e) => enableResize(e)}
isActive={isResizing}
disabled={!user}
/>
</Tooltip>
</Drawer>
)}
</>
)}
<PageContainer>
<HeaderSpacer />
{children}
<PageDialogGlobal />
</PageContainer>
</PageDialogProvider>
</DocumentPageProviders>
</RewardsBoardProvider>
</RewardBlocksProvider>
</ProposalBlocksProvider>
</FocalboardViewsProvider>
</LayoutContainer>
</>
Expand Down
181 changes: 95 additions & 86 deletions components/common/PageLayout/SharedPageLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,12 @@ import CurrentPageFavicon from 'components/common/PageLayout/components/CurrentP
import PageTitleWithBreadcrumbs from 'components/common/PageLayout/components/Header/components/PageTitleWithBreadcrumbs';
import { HeaderSpacer, StyledToolbar } from 'components/common/PageLayout/components/Header/Header';
import PageContainer from 'components/common/PageLayout/components/PageContainer';
import { RewardsBoardProvider } from 'components/rewards/hooks/useRewardsBoard';
import { useCurrentSpace } from 'hooks/useCurrentSpace';
import { useIsSpaceMember } from 'hooks/useIsSpaceMember';
import { useSmallScreen } from 'hooks/useMediaScreens';
import { ProposalBlocksProvider } from 'hooks/useProposalBlocks';
import { RewardBlocksProvider } from 'hooks/useRewardBlocks';
import { useSharedPage } from 'hooks/useSharedPage';
import { useUser } from 'hooks/useUser';
import darkLogoImage from 'public/images/charmverse_logo_icon.png';
Expand Down Expand Up @@ -74,95 +77,101 @@ export function SharedPageLayout({ children, basePageId, basePageType }: Props)
const router = useRouter();

return (
<DocumentPageProviders>
<Head>
<CurrentPageFavicon />
</Head>
<LayoutContainer data-test='public-page-layout'>
<AppBar sidebarWidth={0} position='fixed' open={false}>
<StyledToolbar variant='dense'>
<Box
sx={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
gap: 1,
width: '100%'
}}
>
{!isMobile ? (
<Box display='flex' alignItems='center' gap={6}>
<PageTitleWithBreadcrumbs pageId={basePageId} pageType={basePageType} />
<ProposalBlocksProvider>
<RewardBlocksProvider>
<RewardsBoardProvider>
<DocumentPageProviders>
<Head>
<CurrentPageFavicon />
</Head>
<LayoutContainer data-test='public-page-layout'>
<AppBar sidebarWidth={0} position='fixed' open={false}>
<StyledToolbar variant='dense'>
<Box
sx={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
gap: 1,
width: '100%'
}}
>
{!isMobile ? (
<Box display='flex' alignItems='center' gap={6}>
<PageTitleWithBreadcrumbs pageId={basePageId} pageType={basePageType} />

{publicPageType === 'proposals' && <JoinSpaceWithPublicProposals />}
</Box>
) : (
<PageTitleWithBreadcrumbs pageId={basePageId} pageType={basePageType} />
)}
{publicPageType === 'proposals' && <JoinSpaceWithPublicProposals />}
</Box>
) : (
<PageTitleWithBreadcrumbs pageId={basePageId} pageType={basePageType} />
)}

<Box>
{user && (
<Button
endIcon={<ArrowRightIcon />}
variant='text'
color='inherit'
href='/'
external // avoid space domain being added
>
Go to my space
</Button>
)}
{!user && (
<>
<Button
variant='outlined'
color='inherit'
href={`/?returnUrl=${router.asPath}`}
sx={{ display: { xs: 'none', sm: 'inline-flex' } }}
external // avoid space domain being added
>
Sign in
</Button>
<Button
startIcon={
<Box position='relative' width={24} height={20} mt='-12px'>
<LogoImage
style={{ position: 'absolute', top: 0 }}
width={32}
height={32}
src={logo}
alt=''
/>
</Box>
}
variant='text'
color='inherit'
href='/'
sx={{ ml: 1 }}
external // avoid space domain being added
>
Try CharmVerse
</Button>
</>
<Box>
{user && (
<Button
endIcon={<ArrowRightIcon />}
variant='text'
color='inherit'
href='/'
external // avoid space domain being added
>
Go to my space
</Button>
)}
{!user && (
<>
<Button
variant='outlined'
color='inherit'
href={`/?returnUrl=${router.asPath}`}
sx={{ display: { xs: 'none', sm: 'inline-flex' } }}
external // avoid space domain being added
>
Sign in
</Button>
<Button
startIcon={
<Box position='relative' width={24} height={20} mt='-12px'>
<LogoImage
style={{ position: 'absolute', top: 0 }}
width={32}
height={32}
src={logo}
alt=''
/>
</Box>
}
variant='text'
color='inherit'
href='/'
sx={{ ml: 1 }}
external // avoid space domain being added
>
Try CharmVerse
</Button>
</>
)}
</Box>
</Box>
</StyledToolbar>
{isMobile && publicPageType === 'proposals' && (
<Box sx={{ width: '100%', ml: 1 }}>
<JoinSpaceWithPublicProposals />
</Box>
)}
</Box>
</Box>
</StyledToolbar>
{isMobile && publicPageType === 'proposals' && (
<Box sx={{ width: '100%', ml: 1 }}>
<JoinSpaceWithPublicProposals />
</Box>
)}
</AppBar>
</AppBar>

<PageDialogProvider>
<PageContainer>
<HeaderSpacer />
{children}
<PageDialogGlobal />
</PageContainer>
</PageDialogProvider>
</LayoutContainer>
</DocumentPageProviders>
<PageDialogProvider>
<PageContainer>
<HeaderSpacer />
{children}
<PageDialogGlobal />
</PageContainer>
</PageDialogProvider>
</LayoutContainer>
</DocumentPageProviders>
</RewardsBoardProvider>
</RewardBlocksProvider>
</ProposalBlocksProvider>
);
}
1 change: 1 addition & 0 deletions components/proposals/ProposalsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export function ProposalsPage({ title }: { title: string }) {
const { proposals, mutateProposals } = useProposals();
const loadingData = !proposals;
const { hasAccess, isLoadingAccess } = useHasMemberLevel('member');

const canSeeProposals = hasAccess || isFreeSpace || currentSpace?.publicProposals === true;
const { navigateToSpacePath, updateURLQuery } = useCharmRouter();
const isAdmin = useIsAdmin();
Expand Down
Loading

0 comments on commit d6a5956

Please sign in to comment.