Skip to content

Commit 57a205d

Browse files
authored
Merge pull request #1859 from mfts/fix/dataroom-index
feat: server-side detection if dataroom index enabled
2 parents 8579515 + e34578e commit 57a205d

File tree

7 files changed

+73
-12
lines changed

7 files changed

+73
-12
lines changed

components/datarooms/folders/view-tree.tsx

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,25 @@ import { HomeIcon } from "lucide-react";
88
import { cn } from "@/lib/utils";
99
import {
1010
HIERARCHICAL_DISPLAY_STYLE,
11-
useHierarchicalDisplayName,
11+
getHierarchicalDisplayName,
1212
} from "@/lib/utils/hierarchical-display";
1313

1414
import { FileTree } from "@/components/ui/nextra-filetree";
1515

1616
import { buildNestedFolderStructureWithDocs } from "./utils";
1717

1818
const ViewerDocumentFileItem = memo(
19-
({ document }: { document: DataroomDocumentWithVersion }) => {
20-
const documentDisplayName = useHierarchicalDisplayName(
19+
({
20+
document,
21+
dataroomIndexEnabled,
22+
}: {
23+
document: DataroomDocumentWithVersion;
24+
dataroomIndexEnabled?: boolean;
25+
}) => {
26+
const documentDisplayName = getHierarchicalDisplayName(
2127
document.name,
2228
document.hierarchicalIndex,
29+
dataroomIndexEnabled || false,
2330
);
2431

2532
return (
@@ -83,18 +90,21 @@ const FolderComponent = memo(
8390
folderId,
8491
setFolderId,
8592
folderPath,
93+
dataroomIndexEnabled,
8694
}: {
8795
folder: DataroomFolderWithDocuments;
8896
folderId: string | null;
8997
setFolderId: React.Dispatch<React.SetStateAction<string | null>>;
9098
folderPath: Set<string> | null;
99+
dataroomIndexEnabled?: boolean;
91100
}) => {
92101
const router = useRouter();
93102

94103
// Get hierarchical display name for the folder
95-
const folderDisplayName = useHierarchicalDisplayName(
104+
const folderDisplayName = getHierarchicalDisplayName(
96105
folder.name,
97106
folder.hierarchicalIndex,
107+
dataroomIndexEnabled || false,
98108
);
99109

100110
// Memoize the rendering of the current folder's documents
@@ -107,9 +117,10 @@ const FolderComponent = memo(
107117
...doc,
108118
versions: [], // Not needed for display
109119
}}
120+
dataroomIndexEnabled={dataroomIndexEnabled}
110121
/>
111122
)),
112-
[folder.documents],
123+
[folder.documents, dataroomIndexEnabled],
113124
);
114125

115126
// Recursively render child folders if they exist
@@ -122,9 +133,16 @@ const FolderComponent = memo(
122133
folderId={folderId}
123134
setFolderId={setFolderId}
124135
folderPath={folderPath}
136+
dataroomIndexEnabled={dataroomIndexEnabled}
125137
/>
126138
)),
127-
[folder.childFolders, folderId, setFolderId],
139+
[
140+
folder.childFolders,
141+
folderId,
142+
setFolderId,
143+
folderPath,
144+
dataroomIndexEnabled,
145+
],
128146
);
129147

130148
const isActive = folder.id === folderId;
@@ -197,11 +215,13 @@ const SidebarFolders = ({
197215
documents,
198216
folderId,
199217
setFolderId,
218+
dataroomIndexEnabled,
200219
}: {
201220
folders: DataroomFolder[];
202221
documents: DataroomDocumentWithVersion[];
203222
folderId: string | null;
204223
setFolderId: React.Dispatch<React.SetStateAction<string | null>>;
224+
dataroomIndexEnabled?: boolean;
205225
}) => {
206226
const nestedFolders = useMemo(() => {
207227
if (folders) {
@@ -235,6 +255,7 @@ const SidebarFolders = ({
235255
folderId={folderId}
236256
setFolderId={setFolderId}
237257
folderPath={folderPath}
258+
dataroomIndexEnabled={dataroomIndexEnabled}
238259
/>
239260
))}
240261
</FileTree>
@@ -246,11 +267,13 @@ export function ViewFolderTree({
246267
documents,
247268
setFolderId,
248269
folderId,
270+
dataroomIndexEnabled,
249271
}: {
250272
folders: DataroomFolder[];
251273
documents: DataroomDocumentWithVersion[];
252274
setFolderId: React.Dispatch<React.SetStateAction<string | null>>;
253275
folderId: string | null;
276+
dataroomIndexEnabled?: boolean;
254277
}) {
255278
if (!folders) return null;
256279

@@ -260,6 +283,7 @@ export function ViewFolderTree({
260283
documents={documents}
261284
setFolderId={setFolderId}
262285
folderId={folderId}
286+
dataroomIndexEnabled={dataroomIndexEnabled}
263287
/>
264288
);
265289
}

components/view/dataroom/dataroom-view.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export default function DataroomView({
5959
logoOnAccessForm,
6060
isEmbedded,
6161
preview,
62+
dataroomIndexEnabled,
6263
}: {
6364
link: LinkWithDataroom;
6465
userEmail: string | null | undefined;
@@ -73,6 +74,7 @@ export default function DataroomView({
7374
isEmbedded?: boolean;
7475
preview?: boolean;
7576
logoOnAccessForm?: boolean;
77+
dataroomIndexEnabled?: boolean;
7678
}) {
7779
useDisablePrint();
7880
const {
@@ -283,6 +285,7 @@ export default function DataroomView({
283285
viewerId={viewData.viewerId}
284286
viewData={viewData}
285287
isEmbedded={isEmbedded}
288+
dataroomIndexEnabled={dataroomIndexEnabled}
286289
viewerEmail={
287290
viewData.viewerEmail ??
288291
data.email ??

components/view/dataroom/document-card.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { cn } from "@/lib/utils";
1111
import { fileIcon } from "@/lib/utils/get-file-icon";
1212
import {
1313
HIERARCHICAL_DISPLAY_STYLE,
14-
useHierarchicalDisplayName,
14+
getHierarchicalDisplayName,
1515
} from "@/lib/utils/hierarchical-display";
1616

1717
import { Button } from "@/components/ui/button";
@@ -42,6 +42,7 @@ type DocumentsCardProps = {
4242
isPreview: boolean;
4343
allowDownload: boolean;
4444
isProcessing?: boolean;
45+
dataroomIndexEnabled?: boolean;
4546
};
4647

4748
export default function DocumentCard({
@@ -51,6 +52,7 @@ export default function DocumentCard({
5152
isPreview,
5253
allowDownload,
5354
isProcessing = false,
55+
dataroomIndexEnabled,
5456
}: DocumentsCardProps) {
5557
const { theme, systemTheme } = useTheme();
5658
const canDownload = document.canDownload && allowDownload;
@@ -60,9 +62,10 @@ export default function DocumentCard({
6062
const router = useRouter();
6163

6264
// Get hierarchical display name
63-
const displayName = useHierarchicalDisplayName(
65+
const displayName = getHierarchicalDisplayName(
6466
document.name,
6567
document.hierarchicalIndex,
68+
dataroomIndexEnabled || false,
6669
);
6770
const { previewToken, domain, slug } = router.query as {
6871
previewToken?: string;

components/view/dataroom/folder-card.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { toast } from "sonner";
77
import { timeAgo } from "@/lib/utils";
88
import {
99
HIERARCHICAL_DISPLAY_STYLE,
10-
useHierarchicalDisplayName,
10+
getHierarchicalDisplayName,
1111
} from "@/lib/utils/hierarchical-display";
1212

1313
import { Button } from "@/components/ui/button";
@@ -27,6 +27,7 @@ type FolderCardProps = {
2727
linkId: string;
2828
viewId?: string;
2929
allowDownload: boolean;
30+
dataroomIndexEnabled?: boolean;
3031
};
3132
export default function FolderCard({
3233
folder,
@@ -36,13 +37,15 @@ export default function FolderCard({
3637
linkId,
3738
viewId,
3839
allowDownload,
40+
dataroomIndexEnabled,
3941
}: FolderCardProps) {
4042
const [open, setOpen] = useState(false);
4143

4244
// Get hierarchical display name
43-
const displayName = useHierarchicalDisplayName(
45+
const displayName = getHierarchicalDisplayName(
4446
folder.name,
4547
folder.hierarchicalIndex,
48+
dataroomIndexEnabled || false,
4649
);
4750
const downloadDocument = async () => {
4851
if (!allowDownload) {

components/view/viewer/dataroom-viewer.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { PanelLeftIcon, XIcon } from "lucide-react";
1515
import { cn } from "@/lib/utils";
1616
import {
1717
HIERARCHICAL_DISPLAY_STYLE,
18-
useHierarchicalDisplayName,
18+
getHierarchicalDisplayName,
1919
} from "@/lib/utils/hierarchical-display";
2020
import { sortByIndexThenName } from "@/lib/utils/sort-items-by-index-name";
2121

@@ -48,14 +48,17 @@ const ViewerBreadcrumbItem = ({
4848
folder,
4949
setFolderId,
5050
isLast,
51+
dataroomIndexEnabled,
5152
}: {
5253
folder: any;
5354
setFolderId: (id: string | null) => void;
5455
isLast: boolean;
56+
dataroomIndexEnabled?: boolean;
5557
}) => {
56-
const displayName = useHierarchicalDisplayName(
58+
const displayName = getHierarchicalDisplayName(
5759
folder.name,
5860
folder.hierarchicalIndex,
61+
dataroomIndexEnabled || false,
5962
);
6063

6164
if (isLast) {
@@ -135,6 +138,7 @@ export default function DataroomViewer({
135138
enableIndexFile,
136139
isEmbedded,
137140
viewerEmail,
141+
dataroomIndexEnabled,
138142
}: {
139143
brand: Partial<DataroomBrand>;
140144
viewId?: string;
@@ -150,6 +154,7 @@ export default function DataroomViewer({
150154
enableIndexFile?: boolean;
151155
isEmbedded?: boolean;
152156
viewerEmail?: string;
157+
dataroomIndexEnabled?: boolean;
153158
}) {
154159
const { documents, folders, allowBulkDownload } = dataroom as {
155160
documents: DataroomDocument[];
@@ -342,6 +347,7 @@ export default function DataroomViewer({
342347
isPreview={!!isPreview}
343348
allowDownload={allowDownload && item.canDownload}
344349
isProcessing={isProcessing}
350+
dataroomIndexEnabled={dataroomIndexEnabled}
345351
/>
346352
);
347353
}
@@ -356,6 +362,7 @@ export default function DataroomViewer({
356362
linkId={linkId}
357363
viewId={viewId}
358364
allowDownload={item.allowDownload}
365+
dataroomIndexEnabled={dataroomIndexEnabled}
359366
/>
360367
);
361368
};
@@ -388,6 +395,7 @@ export default function DataroomViewer({
388395
documents={documents}
389396
setFolderId={setFolderId}
390397
folderId={folderId}
398+
dataroomIndexEnabled={dataroomIndexEnabled}
391399
/>
392400
<ScrollBar orientation="horizontal" />
393401
<ScrollBar orientation="vertical" />
@@ -421,6 +429,7 @@ export default function DataroomViewer({
421429
documents={documents}
422430
setFolderId={setFolderId}
423431
folderId={folderId}
432+
dataroomIndexEnabled={dataroomIndexEnabled}
424433
/>
425434
</div>
426435
<SheetPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary">
@@ -452,6 +461,7 @@ export default function DataroomViewer({
452461
folder={folder}
453462
setFolderId={setFolderId}
454463
isLast={index === breadcrumbFolders.length - 1}
464+
dataroomIndexEnabled={dataroomIndexEnabled}
455465
/>
456466
</BreadcrumbItem>
457467
</React.Fragment>

pages/view/[linkId]/index.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { ExtendedRecordMap } from "notion-types";
1111
import { parsePageId } from "notion-utils";
1212
import z from "zod";
1313

14+
import { getFeatureFlags } from "@/lib/featureFlags";
1415
import notion from "@/lib/notion";
1516
import { addSignedUrls } from "@/lib/notion/utils";
1617
import {
@@ -57,6 +58,7 @@ export interface ViewPageProps {
5758
useAdvancedExcelViewer: boolean;
5859
useCustomAccessForm: boolean;
5960
logoOnAccessForm: boolean;
61+
dataroomIndexEnabled?: boolean;
6062
}
6163

6264
export const getStaticProps = async (context: GetStaticPropsContext) => {
@@ -186,6 +188,10 @@ export const getStaticProps = async (context: GetStaticPropsContext) => {
186188

187189
const { teamId } = link.dataroom;
188190

191+
// Check if dataroomIndex feature flag is enabled
192+
const featureFlags = await getFeatureFlags({ teamId });
193+
const dataroomIndexEnabled = featureFlags.dataroomIndex;
194+
189195
const lastUpdatedAt = link.dataroom.documents.reduce((max, doc) => {
190196
return Math.max(
191197
max,
@@ -227,6 +233,7 @@ export const getStaticProps = async (context: GetStaticPropsContext) => {
227233
logoOnAccessForm:
228234
teamId === "cm7nlkrhm0000qgh0nvyrrywr" ||
229235
teamId === "clup33by90000oewh4rfvp2eg",
236+
dataroomIndexEnabled,
230237
},
231238
revalidate: 10,
232239
};
@@ -253,6 +260,7 @@ export default function ViewPage({
253260
useAdvancedExcelViewer,
254261
useCustomAccessForm,
255262
logoOnAccessForm,
263+
dataroomIndexEnabled,
256264
error,
257265
notionError,
258266
}: ViewPageProps & { error?: boolean; notionError?: boolean }) {
@@ -468,6 +476,7 @@ export default function ViewPage({
468476
token={storedToken}
469477
previewToken={previewToken}
470478
preview={!!preview}
479+
dataroomIndexEnabled={dataroomIndexEnabled}
471480
/>
472481
</>
473482
);

0 commit comments

Comments
 (0)