Skip to content

Commit

Permalink
Add requesting for retrieving virtual labs of user
Browse files Browse the repository at this point in the history
  • Loading branch information
kplatis committed Apr 9, 2024
1 parent e78fc09 commit 622367a
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 291 deletions.
130 changes: 0 additions & 130 deletions src/components/ApplicationSidebar/VirtualLabsList.spec.tsx

This file was deleted.

147 changes: 0 additions & 147 deletions src/components/ApplicationSidebar/VirtualLabsList.tsx

This file was deleted.

5 changes: 0 additions & 5 deletions src/components/ApplicationSidebar/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import Icon, {
} from '@ant-design/icons';
import { signOut, useSession } from 'next-auth/react';

import VirtualLabsList from './VirtualLabsList';
import { basePath } from '@/config';
import { classNames } from '@/util/utils';
import useOnClickOutside from '@/hooks/useOnClickOutside';
Expand Down Expand Up @@ -177,10 +176,6 @@ export function DefaultAccountPanel({ expanded }: { expanded: boolean }) {
</div>
</div>

<div className="h-px w-full bg-primary-7" />
<VirtualLabsList />
<div className="h-px w-full bg-primary-7" />

<Link
href="/virtual-lab/create/information"
className="inline-flex w-full items-center justify-between p-5"
Expand Down
22 changes: 20 additions & 2 deletions src/services/virtual-lab/labs/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { virtualLabApi } from '@/config';
import { VirtualLabAPIListResponse, VirtualLabAPIResponse } from '@/types/virtual-lab/lab';
import {
Project,
VirtualLab,
VirtualLabAPIListResponse,
VirtualLabAPIResponse,
} from '@/types/virtual-lab/lab';

const accessToken = 'Bearer ';

Expand All @@ -14,7 +19,20 @@ export async function getVirtualLabDetail(id: string): Promise<VirtualLabAPIResp
return response.json();
}

export async function getVirtualLabProjects(id: string): Promise<VirtualLabAPIListResponse> {
export async function getVirtualLabsOfUser(): Promise<VirtualLabAPIListResponse<VirtualLab>> {
const response = await fetch(`${virtualLabApi.url}/virtual-labs`, {
method: 'GET',
headers: { Authorization: accessToken, accept: 'application/json' },
});
if (!response.ok) {
throw new Error(`Status: ${response.status}`);
}
return response.json();
}

export async function getVirtualLabProjects(
id: string
): Promise<VirtualLabAPIListResponse<Project>> {
const response = await fetch(`${virtualLabApi.url}/virtual-labs/${id}/projects`, {
method: 'GET',
headers: { Authorization: accessToken, accept: 'application/json' },
Expand Down
17 changes: 14 additions & 3 deletions src/state/virtual-lab/lab.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import { atom } from 'jotai';
import { atomFamily } from 'jotai/utils';

import { getVirtualLabDetail, getVirtualLabProjects } from '@/services/virtual-lab/labs';
import { VirtualLab, VirtualLabAPIListData } from '@/types/virtual-lab/lab';
import {
getVirtualLabDetail,
getVirtualLabProjects,
getVirtualLabsOfUser,
} from '@/services/virtual-lab/labs';
import { Project, VirtualLab, VirtualLabAPIListData } from '@/types/virtual-lab/lab';

export const virtualLabDetailAtomFamily = atomFamily((virtualLabId: string) =>
atom<Promise<VirtualLab>>(async () => {
Expand All @@ -12,10 +16,17 @@ export const virtualLabDetailAtomFamily = atomFamily((virtualLabId: string) =>
);

export const virtualLabProjectsAtomFamily = atomFamily((virtualLabId: string) =>
atom<Promise<VirtualLabAPIListData>>(async () => {
atom<Promise<VirtualLabAPIListData<Project>>>(async () => {
const response = await getVirtualLabProjects(virtualLabId);
return response.data;
})
);

export const virtualLabOfUserAtom = atom<Promise<VirtualLabAPIListData<VirtualLab>>>(
async () => {
const response = await getVirtualLabsOfUser();
return response.data;
}
);

export const currentVirtualLabIdAtom = atom<string | null>(null);
8 changes: 4 additions & 4 deletions src/types/virtual-lab/lab.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ export type VirtualLabAPIResponse = {
};
};

export type VirtualLabAPIListResponse = {
export type VirtualLabAPIListResponse<ResponseType> = {
message: string;
data: VirtualLabAPIListData;
data: VirtualLabAPIListData<ResponseType>;
};

export type VirtualLabAPIListData = {
results: Project[];
export type VirtualLabAPIListData<ReponseType> = {
results: ReponseType[];
page: number;
size: number;
page_size: number;
Expand Down

0 comments on commit 622367a

Please sign in to comment.