From 7775607557d5682cc4b212e7406e0602ecc2e6ef Mon Sep 17 00:00:00 2001 From: Ricardo Costa Date: Tue, 2 Jul 2024 22:11:52 +0100 Subject: [PATCH] Code Refactoring --- code/client/src/domain/editor/fugue/Fugue.ts | 2 +- code/client/src/pwa/manifest-config.ts | 2 +- code/client/src/pwa/pwa-assets.config.ts | 12 ++++----- code/client/src/pwa/pwa-config.ts | 4 +-- .../components/editor/hooks/useEditorSync.ts | 27 ++++++------------- code/server/sql/create_tables.sql | 8 +++--- .../http/handlers/resourcesHandlers.ts | 2 +- .../http/handlers/usersHandlers.ts | 2 +- .../http/handlers/workspacesHandlers.ts | 2 +- .../ws/events/document/onJoinDocument.ts | 2 +- .../ws/events/document/onOperation.ts | 2 +- .../ws/events/workspace/onJoinWorkspace.ts | 2 +- code/server/src/controllers/ws/rooms/rooms.ts | 2 +- .../databases/firestore/FirestoreCommitsDB.ts | 2 +- .../firestore/FirestoreDocumentsDB.ts | 2 +- .../src/databases/memory/MemoryCommitsDB.ts | 2 +- .../src/databases/memory/MemoryDocumentsDB.ts | 2 +- .../src/databases/memory/MemoryResourcesDB.ts | 2 +- .../src/databases/memory/MemoryUsersDB.ts | 2 +- .../databases/memory/MemoryWorkspacesDB.ts | 2 +- .../databases/postgres/PostgresResourcesDB.ts | 2 +- .../src/databases/postgres/PostgresUsersDB.ts | 2 +- .../postgres/PostgresWorkspacesDB.ts | 2 +- code/server/src/{domain/errors => }/errors.ts | 0 code/server/src/services/utils.ts | 2 +- code/server/src/utils/searchParams.ts | 2 +- 26 files changed, 41 insertions(+), 52 deletions(-) rename code/server/src/{domain/errors => }/errors.ts (100%) diff --git a/code/client/src/domain/editor/fugue/Fugue.ts b/code/client/src/domain/editor/fugue/Fugue.ts index 70c3cb5a..9c0190a6 100644 --- a/code/client/src/domain/editor/fugue/Fugue.ts +++ b/code/client/src/domain/editor/fugue/Fugue.ts @@ -28,7 +28,7 @@ export class Fugue { } applyOperations(operations: Operation[], override: boolean = false) { - if (override) this.tree.clear(); // clear the tree if operations will override the current state + if (override) this.tree.clear(); for (const operation of operations) { switch (operation.type) { case 'insert': diff --git a/code/client/src/pwa/manifest-config.ts b/code/client/src/pwa/manifest-config.ts index 9de7296f..6fa50470 100644 --- a/code/client/src/pwa/manifest-config.ts +++ b/code/client/src/pwa/manifest-config.ts @@ -33,4 +33,4 @@ export const manifestConfig: Partial = { purpose: 'maskable', }, ], -}; \ No newline at end of file +}; diff --git a/code/client/src/pwa/pwa-assets.config.ts b/code/client/src/pwa/pwa-assets.config.ts index d291c053..0801d15e 100644 --- a/code/client/src/pwa/pwa-assets.config.ts +++ b/code/client/src/pwa/pwa-assets.config.ts @@ -1,9 +1,9 @@ import { defineConfig, minimal2023Preset as preset } from '@vite-pwa/assets-generator/config'; export default defineConfig({ - headLinkOptions: { - preset: '2023', - }, - preset, - images: ['public/notespace.png'], -}); \ No newline at end of file + headLinkOptions: { + preset: '2023', + }, + preset, + images: ['public/notespace.png'], +}); diff --git a/code/client/src/pwa/pwa-config.ts b/code/client/src/pwa/pwa-config.ts index def6cb21..4f8a4e0e 100644 --- a/code/client/src/pwa/pwa-config.ts +++ b/code/client/src/pwa/pwa-config.ts @@ -1,11 +1,11 @@ import { VitePWAOptions } from 'vite-plugin-pwa'; -import {manifestConfig} from "./manifest-config"; +import { manifestConfig } from './manifest-config'; const pwaConfig: Partial = { registerType: 'autoUpdate', manifest: manifestConfig, devOptions: { enabled: true, - } + }, }; export default pwaConfig; diff --git a/code/client/src/ui/pages/document/components/editor/hooks/useEditorSync.ts b/code/client/src/ui/pages/document/components/editor/hooks/useEditorSync.ts index 51d51835..defe86b1 100644 --- a/code/client/src/ui/pages/document/components/editor/hooks/useEditorSync.ts +++ b/code/client/src/ui/pages/document/components/editor/hooks/useEditorSync.ts @@ -1,27 +1,16 @@ import { Dispatch, SetStateAction, useCallback, useEffect } from 'react'; -import { Descendant, Editor } from 'slate'; +import { Editor } from 'slate'; import { toSlate } from '@domain/editor/slate/utils/slate'; import { Fugue } from '@domain/editor/fugue/Fugue'; function useEditorSync(fugue: Fugue, setEditor: Dispatch>) { - // editor syncing - const updateEditor = useCallback( - (newValue: Descendant[]) => { - setEditor(prevState => { - prevState.children = newValue; - return prevState; - }); - }, - [setEditor] - ); - - const syncEditor = useCallback( - (slate?: Descendant[]) => { - const newSlate = slate || toSlate(fugue); - updateEditor(newSlate); - }, - [fugue, updateEditor] - ); + const syncEditor = useCallback(() => { + const newSlate = toSlate(fugue); + setEditor(prevState => { + prevState.children = newSlate; + return prevState; + }); + }, [fugue, setEditor]); // syncs the editor with fugue on mount useEffect(() => { diff --git a/code/server/sql/create_tables.sql b/code/server/sql/create_tables.sql index 78d296eb..66720623 100644 --- a/code/server/sql/create_tables.sql +++ b/code/server/sql/create_tables.sql @@ -43,7 +43,7 @@ CREATE TABLE IF NOT EXISTS workspace_member ( -- Triggers --- Resource is deleted -> Remove self from parent's children array + -- Resource is deleted -> Remove self from parent's children array create or replace function on_child_removed() returns trigger as $$ begin --- Check if parent resource exists @@ -57,7 +57,7 @@ CREATE TABLE IF NOT EXISTS workspace_member ( end; $$ language plpgsql; --- Resource is updated -> Update new and old parent's children array + -- Resource is updated -> Update new and old parent's children array create or replace function on_child_updated() returns trigger as $$ begin if new.parent = old.parent then @@ -79,7 +79,7 @@ CREATE TABLE IF NOT EXISTS workspace_member ( end; $$ language plpgsql; --- NEW RESOURCE IS CREATED -> UPDATE SELF'S PARENT ID AND APPEND SELF TO PARENT'S CHILDREN ARRAY + -- New resource is created -> Update self's parent id and append self to parent's children array create or replace function on_new_resource_created() returns trigger as $$ begin --- parent_id is null @@ -110,7 +110,7 @@ CREATE TABLE IF NOT EXISTS workspace_member ( end; $$ language plpgsql; --- Add root resource to resource table when a workspace is created + -- Add root resource to resource table when a workspace is created create or replace function add_root_resource() returns trigger as $$ begin insert into resource (id, workspace, name, type) diff --git a/code/server/src/controllers/http/handlers/resourcesHandlers.ts b/code/server/src/controllers/http/handlers/resourcesHandlers.ts index 55256a91..4f13b27c 100644 --- a/code/server/src/controllers/http/handlers/resourcesHandlers.ts +++ b/code/server/src/controllers/http/handlers/resourcesHandlers.ts @@ -3,7 +3,7 @@ import { ResourceInputModel, Resource } from '@notespace/shared/src/workspace/ty import { httpResponse } from '@controllers/http/utils/httpResponse'; import { NextFunction, Request, Response } from 'express'; import { ResourcesService } from '@services/ResourcesService'; -import { InvalidParameterError } from '@domain/errors/errors'; +import { InvalidParameterError } from '@src/errors'; import { Server } from 'socket.io'; import { enforceAuth } from '@controllers/http/middlewares/authMiddlewares'; diff --git a/code/server/src/controllers/http/handlers/usersHandlers.ts b/code/server/src/controllers/http/handlers/usersHandlers.ts index e615863e..b19f019b 100644 --- a/code/server/src/controllers/http/handlers/usersHandlers.ts +++ b/code/server/src/controllers/http/handlers/usersHandlers.ts @@ -4,7 +4,7 @@ import { UsersService } from '@services/UsersService'; import { httpResponse } from '@controllers/http/utils/httpResponse'; import { enforceAuth } from '@controllers/http/middlewares/authMiddlewares'; import admin from 'firebase-admin'; -import { UnauthorizedError } from '@domain/errors/errors'; +import { UnauthorizedError } from '@src/errors'; function usersHandlers(service: UsersService) { const sessionLogin = async (req: Request, res: Response) => { diff --git a/code/server/src/controllers/http/handlers/workspacesHandlers.ts b/code/server/src/controllers/http/handlers/workspacesHandlers.ts index ad68b70c..f27350ff 100644 --- a/code/server/src/controllers/http/handlers/workspacesHandlers.ts +++ b/code/server/src/controllers/http/handlers/workspacesHandlers.ts @@ -5,7 +5,7 @@ import { NextFunction, Request, Response } from 'express'; import { WorkspaceInputModel, WorkspaceMeta } from '@notespace/shared/src/workspace/types/workspace'; import { Services } from '@services/Services'; import { Server } from 'socket.io'; -import { ForbiddenError, InvalidParameterError } from '@domain/errors/errors'; +import { ForbiddenError, InvalidParameterError } from '@src/errors'; import { enforceAuth } from '@controllers/http/middlewares/authMiddlewares'; import { getSearchParams, SearchParams } from '@src/utils/searchParams'; import commitsHandlers from '@controllers/http/handlers/commitsHandlers'; diff --git a/code/server/src/controllers/ws/events/document/onJoinDocument.ts b/code/server/src/controllers/ws/events/document/onJoinDocument.ts index 3084e1c2..5418a196 100644 --- a/code/server/src/controllers/ws/events/document/onJoinDocument.ts +++ b/code/server/src/controllers/ws/events/document/onJoinDocument.ts @@ -1,6 +1,6 @@ import { Socket } from 'socket.io'; import rooms from '@controllers/ws/rooms/rooms'; -import { InvalidParameterError } from '@domain/errors/errors'; +import { InvalidParameterError } from '@src/errors'; import { getUserFromSocket } from '@controllers/ws/utils'; import { getCursorColor } from '@controllers/ws/events/document/onCursorChange'; import { Collaborator } from '@notespace/shared/src/users/types'; diff --git a/code/server/src/controllers/ws/events/document/onOperation.ts b/code/server/src/controllers/ws/events/document/onOperation.ts index a233d15b..adad340e 100644 --- a/code/server/src/controllers/ws/events/document/onOperation.ts +++ b/code/server/src/controllers/ws/events/document/onOperation.ts @@ -1,7 +1,7 @@ import { Socket } from 'socket.io'; import { Operation } from '@notespace/shared/src/document/types/operations'; -import { ForbiddenError, InvalidParameterError } from '@domain/errors/errors'; +import { ForbiddenError, InvalidParameterError } from '@src/errors'; import { DocumentsService } from '@services/DocumentsService'; import rooms from '@controllers/ws/rooms/rooms'; diff --git a/code/server/src/controllers/ws/events/workspace/onJoinWorkspace.ts b/code/server/src/controllers/ws/events/workspace/onJoinWorkspace.ts index e71710b1..dc4befef 100644 --- a/code/server/src/controllers/ws/events/workspace/onJoinWorkspace.ts +++ b/code/server/src/controllers/ws/events/workspace/onJoinWorkspace.ts @@ -1,5 +1,5 @@ import rooms from '@controllers/ws/rooms/rooms'; -import { InvalidParameterError } from '@domain/errors/errors'; +import { InvalidParameterError } from '@src/errors'; import { WorkspacesService } from '@services/WorkspacesService'; import { Socket } from 'socket.io'; import { getUserFromSocket } from '@controllers/ws/utils'; diff --git a/code/server/src/controllers/ws/rooms/rooms.ts b/code/server/src/controllers/ws/rooms/rooms.ts index b5d46b4c..fe074285 100644 --- a/code/server/src/controllers/ws/rooms/rooms.ts +++ b/code/server/src/controllers/ws/rooms/rooms.ts @@ -1,7 +1,7 @@ import { Socket } from 'socket.io'; import Room from '@controllers/ws/rooms/Room'; import { getRoom, joinRoom, leaveRoom } from '@controllers/ws/rooms/operations'; -import { ForbiddenError } from '@domain/errors/errors'; +import { ForbiddenError } from '@src/errors'; import { UserData } from '@notespace/shared/src/users/types'; /** diff --git a/code/server/src/databases/firestore/FirestoreCommitsDB.ts b/code/server/src/databases/firestore/FirestoreCommitsDB.ts index 5bd8b0d1..05ea41fe 100644 --- a/code/server/src/databases/firestore/FirestoreCommitsDB.ts +++ b/code/server/src/databases/firestore/FirestoreCommitsDB.ts @@ -1,7 +1,7 @@ import db from '@src/firebaseConfig'; import { CommitsRepository } from '@databases/types'; import { Commit, CommitMeta } from '@notespace/shared/src/document/types/commits'; -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; export class FirestoreCommitsDB implements CommitsRepository { async saveCommit(id: string, commit: Commit): Promise { diff --git a/code/server/src/databases/firestore/FirestoreDocumentsDB.ts b/code/server/src/databases/firestore/FirestoreDocumentsDB.ts index c863433b..1b1d8cbf 100644 --- a/code/server/src/databases/firestore/FirestoreDocumentsDB.ts +++ b/code/server/src/databases/firestore/FirestoreDocumentsDB.ts @@ -1,5 +1,5 @@ import { DocumentContent } from '@notespace/shared/src/workspace/types/document'; -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; import { Operation } from '@notespace/shared/src/document/types/operations'; import { firestore } from 'firebase-admin'; import FieldValue = firestore.FieldValue; diff --git a/code/server/src/databases/memory/MemoryCommitsDB.ts b/code/server/src/databases/memory/MemoryCommitsDB.ts index 9a54c9e9..5cb83f3f 100644 --- a/code/server/src/databases/memory/MemoryCommitsDB.ts +++ b/code/server/src/databases/memory/MemoryCommitsDB.ts @@ -1,4 +1,4 @@ -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; import { CommitsRepository } from '@databases/types'; import { Commit, CommitMeta } from '@notespace/shared/src/document/types/commits'; diff --git a/code/server/src/databases/memory/MemoryDocumentsDB.ts b/code/server/src/databases/memory/MemoryDocumentsDB.ts index 1768912d..bd867fb5 100644 --- a/code/server/src/databases/memory/MemoryDocumentsDB.ts +++ b/code/server/src/databases/memory/MemoryDocumentsDB.ts @@ -1,4 +1,4 @@ -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; import { Operation } from '@notespace/shared/src/document/types/operations'; import { DocumentsRepository } from '@databases/types'; import { DocumentContent } from '@notespace/shared/src/workspace/types/document'; diff --git a/code/server/src/databases/memory/MemoryResourcesDB.ts b/code/server/src/databases/memory/MemoryResourcesDB.ts index 5fbf0ed2..0e274dd2 100644 --- a/code/server/src/databases/memory/MemoryResourcesDB.ts +++ b/code/server/src/databases/memory/MemoryResourcesDB.ts @@ -1,7 +1,7 @@ import { ResourcesRepository } from '@databases/types'; import { ResourceType, Resource, DocumentResource } from '@notespace/shared/src/workspace/types/resource'; import { Memory } from '@databases/memory/Memory'; -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; import { v4 as uuid } from 'uuid'; export class MemoryResourcesDB implements ResourcesRepository { diff --git a/code/server/src/databases/memory/MemoryUsersDB.ts b/code/server/src/databases/memory/MemoryUsersDB.ts index 2016eb6d..c26c66f8 100644 --- a/code/server/src/databases/memory/MemoryUsersDB.ts +++ b/code/server/src/databases/memory/MemoryUsersDB.ts @@ -1,7 +1,7 @@ import { UsersRepository } from '@databases/types'; import { User } from '@notespace/shared/src/users/types'; import { Memory } from '@databases/memory/Memory'; -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; export class MemoryUsersDB implements UsersRepository { async createUser(id: string, name: string, email: string): Promise { diff --git a/code/server/src/databases/memory/MemoryWorkspacesDB.ts b/code/server/src/databases/memory/MemoryWorkspacesDB.ts index c433dab4..6c16da5b 100644 --- a/code/server/src/databases/memory/MemoryWorkspacesDB.ts +++ b/code/server/src/databases/memory/MemoryWorkspacesDB.ts @@ -4,7 +4,7 @@ import { Memory } from '@databases/memory/Memory'; import { v4 as uuid } from 'uuid'; import { Resource, ResourceType } from '@notespace/shared/src/workspace/types/resource'; import { omit } from 'lodash'; -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; import { SearchParams } from '@src/utils/searchParams'; export class MemoryWorkspacesDB implements WorkspacesRepository { diff --git a/code/server/src/databases/postgres/PostgresResourcesDB.ts b/code/server/src/databases/postgres/PostgresResourcesDB.ts index 5de87c9d..d46b7e0a 100644 --- a/code/server/src/databases/postgres/PostgresResourcesDB.ts +++ b/code/server/src/databases/postgres/PostgresResourcesDB.ts @@ -1,6 +1,6 @@ import { ResourceType, Resource, DocumentResource } from '@notespace/shared/src/workspace/types/resource'; import { ResourcesRepository } from '@databases/types'; -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; import { isEmpty } from 'lodash'; import sql from '@databases/postgres/config'; diff --git a/code/server/src/databases/postgres/PostgresUsersDB.ts b/code/server/src/databases/postgres/PostgresUsersDB.ts index 1fbd5f9a..be1fb059 100644 --- a/code/server/src/databases/postgres/PostgresUsersDB.ts +++ b/code/server/src/databases/postgres/PostgresUsersDB.ts @@ -2,7 +2,7 @@ import { UsersRepository } from '@databases/types'; import { User } from '@notespace/shared/src/users/types'; import sql from '@databases/postgres/config'; import { isEmpty } from 'lodash'; -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; export class PostgresUsersDB implements UsersRepository { async createUser(id: string, name: string, email: string): Promise { diff --git a/code/server/src/databases/postgres/PostgresWorkspacesDB.ts b/code/server/src/databases/postgres/PostgresWorkspacesDB.ts index 3c05bcbf..5f7e118d 100644 --- a/code/server/src/databases/postgres/PostgresWorkspacesDB.ts +++ b/code/server/src/databases/postgres/PostgresWorkspacesDB.ts @@ -1,5 +1,5 @@ import { Workspace, WorkspaceMeta } from '@notespace/shared/src/workspace/types/workspace'; -import { NotFoundError } from '@domain/errors/errors'; +import { NotFoundError } from '@src/errors'; import { WorkspacesRepository } from '@databases/types'; import { isEmpty } from 'lodash'; import sql from '@databases/postgres/config'; diff --git a/code/server/src/domain/errors/errors.ts b/code/server/src/errors.ts similarity index 100% rename from code/server/src/domain/errors/errors.ts rename to code/server/src/errors.ts diff --git a/code/server/src/services/utils.ts b/code/server/src/services/utils.ts index d2801b15..137aa6f1 100644 --- a/code/server/src/services/utils.ts +++ b/code/server/src/services/utils.ts @@ -1,4 +1,4 @@ -import { InvalidParameterError } from '@domain/errors/errors'; +import { InvalidParameterError } from '@src/errors'; import { randomBytes } from 'crypto'; const MIN_NAME_LENGTH = 2; diff --git a/code/server/src/utils/searchParams.ts b/code/server/src/utils/searchParams.ts index ddccdd63..ff57699f 100644 --- a/code/server/src/utils/searchParams.ts +++ b/code/server/src/utils/searchParams.ts @@ -1,4 +1,4 @@ -import { InvalidParameterError } from '@domain/errors/errors'; +import { InvalidParameterError } from '@src/errors'; const DEFAULT_QUERY = ''; const DEFAULT_SKIP = 0;