From 520244abbcc15197b6321987aa858d7ff5db7ed2 Mon Sep 17 00:00:00 2001 From: pst Date: Sun, 22 Jan 2023 15:03:03 +0100 Subject: [PATCH] fix global depepdennceis UI --- client/hooks/use-mutate-dependencies.ts | 102 ++++++++++++++++-------- client/service/dependencies.service.ts | 20 +++++ 2 files changed, 89 insertions(+), 33 deletions(-) diff --git a/client/hooks/use-mutate-dependencies.ts b/client/hooks/use-mutate-dependencies.ts index 90c831e..ab03ea6 100644 --- a/client/hooks/use-mutate-dependencies.ts +++ b/client/hooks/use-mutate-dependencies.ts @@ -5,7 +5,9 @@ import { useMutation } from '@tanstack/react-query'; import { useProjectsJobs, useProjectStore } from '../app/ContextStore'; import { deleteDependencies, + deleteGlobalDependencies, installDependencies, + installGlobalDependencies, } from '../service/dependencies.service'; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type @@ -22,42 +24,76 @@ export const useMutateDependencies = (projectPath: string) => { const { dependenciesMutate } = project; - // delete dev - const delDevelopmentDependencies = Object.entries(dependenciesMutate || {}) - .filter(([_, value]) => value.type === 'dev' && value.delete) - .map(([name]) => ({ name })); - if (delDevelopmentDependencies.length > 0) { - await deleteDependencies(projectPath, 'dev', delDevelopmentDependencies); - } + // eslint-disable-next-line unicorn/consistent-destructuring + if (project.path === 'global') { + // delete global + const delDependencies = Object.entries(dependenciesMutate || {}) + .filter(([_, value]) => value.type === 'global' && value.delete) + .map(([name]) => ({ name })); + if (delDependencies.length > 0) { + await deleteGlobalDependencies(delDependencies); + } - // delete prod - const delProductionDependencies = Object.entries(dependenciesMutate || {}) - .filter(([_, value]) => value.type === 'prod' && value.delete) - .map(([name]) => ({ name })); - if (delProductionDependencies.length > 0) { - await deleteDependencies(projectPath, 'prod', delProductionDependencies); - } + // install global + const dependencies = Object.entries(dependenciesMutate || {}) + .filter( + ([_, value]) => value.type === 'global' && value.required !== null, + ) + .map(([name, value]) => ({ + name, + version: value.required || undefined, + })); + if (dependencies.length > 0) { + await installGlobalDependencies(dependencies); + } + } else { + // delete dev + const delDevelopmentDependencies = Object.entries( + dependenciesMutate || {}, + ) + .filter(([_, value]) => value.type === 'dev' && value.delete) + .map(([name]) => ({ name })); + if (delDevelopmentDependencies.length > 0) { + await deleteDependencies( + projectPath, + 'dev', + delDevelopmentDependencies, + ); + } - // dev - const devDependencies = Object.entries(dependenciesMutate || {}) - .filter(([_, value]) => value.type === 'dev' && value.required !== null) - .map(([name, value]) => ({ - name, - version: value.required || undefined, - })); - if (devDependencies.length > 0) { - await installDependencies(projectPath, 'dev', devDependencies); - } + // delete prod + const delProductionDependencies = Object.entries(dependenciesMutate || {}) + .filter(([_, value]) => value.type === 'prod' && value.delete) + .map(([name]) => ({ name })); + if (delProductionDependencies.length > 0) { + await deleteDependencies( + projectPath, + 'prod', + delProductionDependencies, + ); + } + + // install dev + const devDependencies = Object.entries(dependenciesMutate || {}) + .filter(([_, value]) => value.type === 'dev' && value.required !== null) + .map(([name, value]) => ({ + name, + version: value.required || undefined, + })); + if (devDependencies.length > 0) { + await installDependencies(projectPath, 'dev', devDependencies); + } - // prod - const dependencies = Object.entries(dependenciesMutate || {}) - .filter(([_, value]) => value.type === 'prod' && value.required) - .map(([name, value]) => ({ - name, - version: value.required || undefined, - })); - if (dependencies.length > 0) { - await installDependencies(projectPath, 'prod', dependencies); + // install prod + const dependencies = Object.entries(dependenciesMutate || {}) + .filter(([_, value]) => value.type === 'prod' && value.required) + .map(([name, value]) => ({ + name, + version: value.required || undefined, + })); + if (dependencies.length > 0) { + await installDependencies(projectPath, 'prod', dependencies); + } } dispatch({ action: 'mutateProjectDependencyReset', projectPath }); diff --git a/client/service/dependencies.service.ts b/client/service/dependencies.service.ts index 9734b37..e3432cb 100644 --- a/client/service/dependencies.service.ts +++ b/client/service/dependencies.service.ts @@ -56,6 +56,16 @@ export const installDependencies = async ( }); }; +export const installGlobalDependencies = async ( + dependencies: Basic[], +): Promise => { + return fetchJSON(`${getBasePathFor('global')}`, { + method: 'POST', + body: JSON.stringify(dependencies), + headers: { 'x-cache-id': xCacheId }, + }); +}; + export const reinstall = async ( projectPath: string, manager?: Manager, @@ -77,3 +87,13 @@ export const deleteDependencies = async ( headers: { 'x-cache-id': xCacheId }, }); }; + +export const deleteGlobalDependencies = async ( + dependencies: Basic[], +): Promise => { + return fetchJSON(`${getBasePathFor('global')}`, { + method: 'DELETE', + body: JSON.stringify(dependencies), + headers: { 'x-cache-id': xCacheId }, + }); +};