diff --git a/src/frontend/apps/drive/src/core/api/types.ts b/src/frontend/apps/drive/src/core/api/types.ts deleted file mode 100644 index 5c48a797..00000000 --- a/src/frontend/apps/drive/src/core/api/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface APIList { - count: number; - next?: string | null; - previous?: string | null; - results: T[]; -} diff --git a/src/frontend/apps/drive/src/core/conf.ts b/src/frontend/apps/drive/src/core/conf.ts deleted file mode 100644 index fe1dd03a..00000000 --- a/src/frontend/apps/drive/src/core/conf.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const baseApiUrl = (apiVersion: string = '1.0') => { - const origin = - process.env.NEXT_PUBLIC_API_ORIGIN || - (typeof window !== 'undefined' ? window.location.origin : ''); - return `${origin}/api/v${apiVersion}/`; -}; - -export const signalingUrl = (padId: string) => { - const base = - process.env.NEXT_PUBLIC_SIGNALING_URL || - (typeof window !== 'undefined' ? `wss://${window.location.host}/ws` : ''); - - return `${base}/${padId}`; -}; diff --git a/src/frontend/apps/drive/src/core/api/APIError.ts b/src/frontend/apps/drive/src/features/api/APIError.ts similarity index 100% rename from src/frontend/apps/drive/src/core/api/APIError.ts rename to src/frontend/apps/drive/src/features/api/APIError.ts diff --git a/src/frontend/apps/drive/src/core/api/fetchApi.ts b/src/frontend/apps/drive/src/features/api/fetchApi.ts similarity index 60% rename from src/frontend/apps/drive/src/core/api/fetchApi.ts rename to src/frontend/apps/drive/src/features/api/fetchApi.ts index a0443dd4..61840edf 100644 --- a/src/frontend/apps/drive/src/core/api/fetchApi.ts +++ b/src/frontend/apps/drive/src/features/api/fetchApi.ts @@ -1,5 +1,5 @@ -import { logout } from '@/core/auth/Auth'; -import { baseApiUrl } from '@/core/conf'; +import { logout } from "@/features/auth/Auth"; +import { baseApiUrl } from "./utils"; /** * Retrieves the CSRF token from the document's cookies. @@ -8,9 +8,9 @@ import { baseApiUrl } from '@/core/conf'; */ function getCSRFToken() { return document.cookie - .split(';') - .filter((cookie) => cookie.trim().startsWith('csrftoken=')) - .map((cookie) => cookie.split('=')[1]) + .split(";") + .filter((cookie) => cookie.trim().startsWith("csrftoken=")) + .map((cookie) => cookie.split("=")[1]) .pop(); } @@ -21,18 +21,18 @@ export interface fetchAPIOptions { export const fetchAPI = async ( input: string, init?: RequestInit, - options?: fetchAPIOptions, + options?: fetchAPIOptions ) => { - const apiUrl = `${baseApiUrl('1.0')}${input}`; + const apiUrl = `${baseApiUrl("1.0")}${input}`; const csrfToken = getCSRFToken(); const response = await fetch(apiUrl, { ...init, - credentials: 'include', + credentials: "include", headers: { ...init?.headers, - 'Content-Type': 'application/json', - ...(csrfToken && { 'X-CSRFToken': csrfToken }), + "Content-Type": "application/json", + ...(csrfToken && { "X-CSRFToken": csrfToken }), }, }); diff --git a/src/frontend/apps/drive/src/core/api/utils.ts b/src/frontend/apps/drive/src/features/api/utils.ts similarity index 62% rename from src/frontend/apps/drive/src/core/api/utils.ts rename to src/frontend/apps/drive/src/features/api/utils.ts index 5a4370e1..289343a7 100644 --- a/src/frontend/apps/drive/src/core/api/utils.ts +++ b/src/frontend/apps/drive/src/features/api/utils.ts @@ -16,3 +16,10 @@ export const errorCauses = async (response: Response, data?: unknown) => { data, }; }; + +export const baseApiUrl = (apiVersion: string = "1.0") => { + const origin = + process.env.NEXT_PUBLIC_API_ORIGIN || + (typeof window !== "undefined" ? window.location.origin : ""); + return `${origin}/api/v${apiVersion}/`; +}; diff --git a/src/frontend/apps/drive/src/core/auth/Auth.tsx b/src/frontend/apps/drive/src/features/auth/Auth.tsx similarity index 91% rename from src/frontend/apps/drive/src/core/auth/Auth.tsx rename to src/frontend/apps/drive/src/features/auth/Auth.tsx index b20f5a27..a44f740a 100644 --- a/src/frontend/apps/drive/src/core/auth/Auth.tsx +++ b/src/frontend/apps/drive/src/features/auth/Auth.tsx @@ -1,8 +1,8 @@ import React, { PropsWithChildren, useEffect, useState } from "react"; -import { fetchAPI } from "@/core/api/fetchApi"; -import { User } from "@/core/auth/types"; -import { baseApiUrl } from "@/core/conf"; +import { fetchAPI } from "@/features/api/fetchApi"; +import { User } from "@/features/auth/types"; +import { baseApiUrl } from "../api/utils"; export const logout = () => { window.location.replace(new URL("logout/", baseApiUrl()).href); diff --git a/src/frontend/apps/drive/src/core/auth/types.ts b/src/frontend/apps/drive/src/features/auth/types.ts similarity index 100% rename from src/frontend/apps/drive/src/core/auth/types.ts rename to src/frontend/apps/drive/src/features/auth/types.ts diff --git a/src/frontend/apps/drive/src/features/config/Config.ts b/src/frontend/apps/drive/src/features/config/Config.ts index 659ad912..87609ca3 100644 --- a/src/frontend/apps/drive/src/features/config/Config.ts +++ b/src/frontend/apps/drive/src/features/config/Config.ts @@ -4,8 +4,8 @@ import { DummyDriver } from "../drivers/implementations/DummyDriver"; export const getConfig = () => { // TODO: Later, be based on URL query params for instance. return { - // driver: new DummyDriver(), - driver: new StandardDriver(), + driver: new DummyDriver(), + // driver: new StandardDriver(), }; }; diff --git a/src/frontend/apps/drive/src/features/drivers/implementations/StandardDriver.ts b/src/frontend/apps/drive/src/features/drivers/implementations/StandardDriver.ts index 8cf3aad5..293902b2 100644 --- a/src/frontend/apps/drive/src/features/drivers/implementations/StandardDriver.ts +++ b/src/frontend/apps/drive/src/features/drivers/implementations/StandardDriver.ts @@ -1,4 +1,4 @@ -import { fetchAPI } from "@/core/api/fetchApi"; +import { fetchAPI } from "@/features/api/fetchApi"; import { Driver } from "../Driver"; import { Item } from "../types"; diff --git a/src/frontend/apps/drive/src/components/explorer/Explorer.scss b/src/frontend/apps/drive/src/features/explorer/components/Explorer.scss similarity index 100% rename from src/frontend/apps/drive/src/components/explorer/Explorer.scss rename to src/frontend/apps/drive/src/features/explorer/components/Explorer.scss diff --git a/src/frontend/apps/drive/src/components/explorer/Explorer.tsx b/src/frontend/apps/drive/src/features/explorer/components/Explorer.tsx similarity index 100% rename from src/frontend/apps/drive/src/components/explorer/Explorer.tsx rename to src/frontend/apps/drive/src/features/explorer/components/Explorer.tsx diff --git a/src/frontend/apps/drive/src/components/explorer/ExplorerTree.tsx b/src/frontend/apps/drive/src/features/explorer/components/ExplorerTree.tsx similarity index 100% rename from src/frontend/apps/drive/src/components/explorer/ExplorerTree.tsx rename to src/frontend/apps/drive/src/features/explorer/components/ExplorerTree.tsx diff --git a/src/frontend/apps/drive/src/i18n/conf.ts b/src/frontend/apps/drive/src/features/i18n/conf.ts similarity index 100% rename from src/frontend/apps/drive/src/i18n/conf.ts rename to src/frontend/apps/drive/src/features/i18n/conf.ts diff --git a/src/frontend/apps/drive/src/i18n/initI18n.ts b/src/frontend/apps/drive/src/features/i18n/initI18n.ts similarity index 100% rename from src/frontend/apps/drive/src/i18n/initI18n.ts rename to src/frontend/apps/drive/src/features/i18n/initI18n.ts diff --git a/src/frontend/apps/drive/src/i18n/translations.json b/src/frontend/apps/drive/src/features/i18n/translations.json similarity index 100% rename from src/frontend/apps/drive/src/i18n/translations.json rename to src/frontend/apps/drive/src/features/i18n/translations.json diff --git a/src/frontend/apps/drive/src/i18n/utils.ts b/src/frontend/apps/drive/src/features/i18n/utils.ts similarity index 100% rename from src/frontend/apps/drive/src/i18n/utils.ts rename to src/frontend/apps/drive/src/features/i18n/utils.ts diff --git a/src/frontend/apps/drive/src/components/layouts/explorer/ExplorerLayout.scss b/src/frontend/apps/drive/src/features/layouts/components/explorer/ExplorerLayout.scss similarity index 100% rename from src/frontend/apps/drive/src/components/layouts/explorer/ExplorerLayout.scss rename to src/frontend/apps/drive/src/features/layouts/components/explorer/ExplorerLayout.scss diff --git a/src/frontend/apps/drive/src/components/layouts/explorer/ExplorerLayout.tsx b/src/frontend/apps/drive/src/features/layouts/components/explorer/ExplorerLayout.tsx similarity index 77% rename from src/frontend/apps/drive/src/components/layouts/explorer/ExplorerLayout.tsx rename to src/frontend/apps/drive/src/features/layouts/components/explorer/ExplorerLayout.tsx index e932de22..f3ad61bb 100644 --- a/src/frontend/apps/drive/src/components/layouts/explorer/ExplorerLayout.tsx +++ b/src/frontend/apps/drive/src/features/layouts/components/explorer/ExplorerLayout.tsx @@ -1,5 +1,5 @@ -import { ExplorerTree } from "@/components/explorer/ExplorerTree"; -import { login, useAuth } from "@/core/auth/Auth"; +import { login, useAuth } from "@/features/auth/Auth"; +import { ExplorerTree } from "@/features/explorer/components/ExplorerTree"; export const ExplorerLayout = ({ children }: { children: React.ReactNode }) => { const { user } = useAuth(); diff --git a/src/frontend/apps/drive/src/components/layouts/global/GlobalLayout.scss b/src/frontend/apps/drive/src/features/layouts/components/global/GlobalLayout.scss similarity index 100% rename from src/frontend/apps/drive/src/components/layouts/global/GlobalLayout.scss rename to src/frontend/apps/drive/src/features/layouts/components/global/GlobalLayout.scss diff --git a/src/frontend/apps/drive/src/components/layouts/global/GlobalLayout.tsx b/src/frontend/apps/drive/src/features/layouts/components/global/GlobalLayout.tsx similarity index 88% rename from src/frontend/apps/drive/src/components/layouts/global/GlobalLayout.tsx rename to src/frontend/apps/drive/src/features/layouts/components/global/GlobalLayout.tsx index 37e9b8df..17d243eb 100644 --- a/src/frontend/apps/drive/src/components/layouts/global/GlobalLayout.tsx +++ b/src/frontend/apps/drive/src/features/layouts/components/global/GlobalLayout.tsx @@ -1,4 +1,4 @@ -import { Auth, login, logout, useAuth } from "@/core/auth/Auth"; +import { Auth, login, logout, useAuth } from "@/features/auth/Auth"; export const GlobalLayout = ({ children }: { children: React.ReactNode }) => { return ( diff --git a/src/frontend/apps/drive/src/components/layouts/sdk/SdkLayout.tsx b/src/frontend/apps/drive/src/features/layouts/components/sdk/SdkLayout.tsx similarity index 71% rename from src/frontend/apps/drive/src/components/layouts/sdk/SdkLayout.tsx rename to src/frontend/apps/drive/src/features/layouts/components/sdk/SdkLayout.tsx index 0ade58bc..38a4d182 100644 --- a/src/frontend/apps/drive/src/components/layouts/sdk/SdkLayout.tsx +++ b/src/frontend/apps/drive/src/features/layouts/components/sdk/SdkLayout.tsx @@ -1,4 +1,4 @@ -import { Auth } from "@/core/auth/Auth"; +import { Auth } from "@/features/auth/Auth"; export const SdkLayout = ({ children }: { children: React.ReactNode }) => { return {children}; diff --git a/src/frontend/apps/drive/src/pages/_app.tsx b/src/frontend/apps/drive/src/pages/_app.tsx index 5678fd48..fe5928cb 100644 --- a/src/frontend/apps/drive/src/pages/_app.tsx +++ b/src/frontend/apps/drive/src/pages/_app.tsx @@ -5,7 +5,7 @@ import { CunninghamProvider } from "@openfun/cunningham-react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import "../styles/globals.scss"; -import "./../i18n/initI18n"; +import "../features/i18n/initI18n"; export type NextPageWithLayout

= NextPage & { getLayout?: (page: ReactElement) => ReactNode; diff --git a/src/frontend/apps/drive/src/pages/explorer/index.tsx b/src/frontend/apps/drive/src/pages/explorer/index.tsx index c37fca4a..9f437a5e 100644 --- a/src/frontend/apps/drive/src/pages/explorer/index.tsx +++ b/src/frontend/apps/drive/src/pages/explorer/index.tsx @@ -1,5 +1,5 @@ -import { ExplorerLayout } from "@/components/layouts/explorer/ExplorerLayout"; -import { GlobalLayout } from "@/components/layouts/global/GlobalLayout"; +import { ExplorerLayout } from "@/features/layouts/components/explorer/ExplorerLayout"; +import { GlobalLayout } from "@/features/layouts/components/global/GlobalLayout"; export default function ExplorerPage() { return

explorer
; diff --git a/src/frontend/apps/drive/src/pages/explorer/items/[id].tsx b/src/frontend/apps/drive/src/pages/explorer/items/[id].tsx index 9b029d80..fda884b8 100644 --- a/src/frontend/apps/drive/src/pages/explorer/items/[id].tsx +++ b/src/frontend/apps/drive/src/pages/explorer/items/[id].tsx @@ -1,6 +1,6 @@ -import { Explorer } from "@/components/explorer/Explorer"; -import { ExplorerLayout } from "@/components/layouts/explorer/ExplorerLayout"; -import { GlobalLayout } from "@/components/layouts/global/GlobalLayout"; +import { Explorer } from "@/features/explorer/components/Explorer"; +import { ExplorerLayout } from "@/features/layouts/components/explorer/ExplorerLayout"; +import { GlobalLayout } from "@/features/layouts/components/global/GlobalLayout"; import { useRouter } from "next/router"; export default function ItemPage() { diff --git a/src/frontend/apps/drive/src/pages/index.tsx b/src/frontend/apps/drive/src/pages/index.tsx index c7bc6102..fab0f7ad 100644 --- a/src/frontend/apps/drive/src/pages/index.tsx +++ b/src/frontend/apps/drive/src/pages/index.tsx @@ -1,4 +1,4 @@ -import { GlobalLayout } from "@/components/layouts/global/GlobalLayout"; +import { GlobalLayout } from "@/features/layouts/components/global/GlobalLayout"; import Head from "next/head"; import Link from "next/link"; import { useTranslation } from "next-i18next"; diff --git a/src/frontend/apps/drive/src/pages/sdk/explorer/items/[id].tsx b/src/frontend/apps/drive/src/pages/sdk/explorer/items/[id].tsx index 45e5be7f..a2d82634 100644 --- a/src/frontend/apps/drive/src/pages/sdk/explorer/items/[id].tsx +++ b/src/frontend/apps/drive/src/pages/sdk/explorer/items/[id].tsx @@ -1,7 +1,5 @@ -import { Explorer } from "@/components/explorer/Explorer"; -import { ExplorerLayout } from "@/components/layouts/explorer/ExplorerLayout"; -import { GlobalLayout } from "@/components/layouts/global/GlobalLayout"; -import { SdkLayout } from "@/components/layouts/sdk/SdkLayout"; +import { Explorer } from "@/features/explorer/components/Explorer"; +import { SdkLayout } from "@/features/layouts/components/sdk/SdkLayout"; import { useRouter } from "next/router"; /** diff --git a/src/frontend/apps/drive/src/styles/globals.scss b/src/frontend/apps/drive/src/styles/globals.scss index e118b69f..dbc7e768 100644 --- a/src/frontend/apps/drive/src/styles/globals.scss +++ b/src/frontend/apps/drive/src/styles/globals.scss @@ -1,8 +1,8 @@ @use "@lasuite/ui-kit/style"; @use "./cunningham-tokens.css"; -@use "./../components/layouts/global/GlobalLayout.scss"; -@use "./../components/layouts/explorer/ExplorerLayout.scss"; -@use "./../components/explorer/Explorer.scss"; +@use "./../features/layouts/components/global/GlobalLayout.scss"; +@use "./../features/layouts/components/explorer/ExplorerLayout.scss"; +@use "./../features/explorer/components/Explorer.scss"; body { margin: 0; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..fb57ccd1 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + +