Skip to content

Commit e445a2d

Browse files
committed
Fixing Breadcrumbs
1 parent 1567bf0 commit e445a2d

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

src/app/drive-contents.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,8 @@ import { FileRow, FolderRow } from "./file-row";
1111
export default function DriveContents(props: {
1212
files: (typeof files.$inferSelect)[];
1313
folders: (typeof folders.$inferSelect)[];
14+
parents: (typeof folders.$inferSelect)[];
1415
}) {
15-
16-
17-
18-
const breadcrumbs: unknown[] = [];
19-
2016
const handleUpload = () => {
2117
alert("Upload functionality would be implemented here");
2218
};
@@ -29,7 +25,7 @@ export default function DriveContents(props: {
2925
<Link href="/f/1" className="mr-2 text-gray-300 hover:text-white">
3026
My Drive
3127
</Link>
32-
{breadcrumbs.map((folder) => (
28+
{props.parents.map((folder) => (
3329
<div key={folder.id} className="flex items-center">
3430
<ChevronRight className="mx-2 text-gray-500" size={16} />
3531
<Link

src/app/f/[folderId]/page.tsx

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,24 @@ import {
99

1010
import DriveContents from "../../drive-contents";
1111

12+
async function getAllParents(folderId: number) {
13+
const parents = [];
14+
let currentId: number | null = folderId;
15+
while (currentId != null) {
16+
const folders = await db
17+
.selectDistinct()
18+
.from(folderSchema)
19+
.where(eq(folderSchema.id, currentId));
20+
21+
if (!folders[0]) throw new Error("parent folder not found");
22+
23+
parents.unshift(folders[0]);
24+
currentId = folders[0]?.parent; // parent can be null
25+
}
26+
27+
return parents;
28+
}
29+
1230
export default async function GoogleDriveClone(props: {
1331
params: Promise<{ folderId: number }>;
1432
}) {
@@ -20,16 +38,22 @@ export default async function GoogleDriveClone(props: {
2038
if (!success) return <div>Invalid Folder ID</div>;
2139

2240
const folderId = data.folderId;
23-
console.log(folderId);
41+
const parentsPromise = getAllParents(folderId);
2442

25-
const folders = await db
43+
const foldersPromise = db
2644
.select()
2745
.from(folderSchema)
2846
.where(eq(folderSchema.parent, folderId));
29-
const files = await db
47+
const filesPromise = db
3048
.select()
3149
.from(fileSchema)
3250
.where(eq(fileSchema.parent, folderId));
3351

34-
return <DriveContents folders={folders} files={files} />;
52+
const [folders, files, parents] = await Promise.all([
53+
foldersPromise,
54+
filesPromise,
55+
parentsPromise,
56+
]);
57+
58+
return <DriveContents folders={folders} files={files} parents={parents} />;
3559
}

0 commit comments

Comments
 (0)