Skip to content

Commit

Permalink
Revert "refactor: refactored way of aquiring entity type & removed en…
Browse files Browse the repository at this point in the history
…tity fro… (#507)"

This reverts commit 6ace54c.
  • Loading branch information
alonp99 committed Jun 28, 2023
1 parent 6ace54c commit 480cd92
Show file tree
Hide file tree
Showing 21 changed files with 63 additions and 99 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ export const Navbar: FunctionComponent = () => {
</ul>
))}
<ul className={`menu menu-compact w-full space-y-2`}>
{filters?.map(({ id, name }) => (
{filters?.map(({ id, name, entity }) => (
<NavItem
href={`/en/case-management/entities?filterId=${id}`}
href={`/en/case-management/entities?entity=${entity}&filterId=${id}`}
key={id}
className={ctw(`capitalize`, {
'bg-muted font-bold': id === searchParams?.filterId,
Expand Down
20 changes: 0 additions & 20 deletions apps/backoffice-v2/src/common/hooks/useEntityType/useEntityType.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { useSearchParams } from 'react-router-dom';
import { useSearchParamsByEntity } from '../useSearchParamsByEntity/useSearchParamsByEntity';

export const useFilterId = (): string | undefined => {
const [params] = useSearchParams();
const filterId = params.get('filterId');
const [{ filterId }] = useSearchParamsByEntity();

return filterId;
};
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import { AnyZodObject } from 'zod';
import { useSearchParams } from 'react-router-dom';
import { useZodSearchParams } from '../useZodSearchParams/useZodSearchParams';
import { IUseZodSearchParams } from '../useZodSearchParams/interfaces';
import { BusinessesSearchSchema, IndividualsSearchSchema } from './validation-schemas';
import { useAuthenticatedUserQuery } from '../../../domains/auth/hooks/queries/useAuthenticatedUserQuery/useAuthenticatedUserQuery';
import { useMemo } from 'react';
import { useEntityType } from '../useEntityType/useEntityType';

export const useSearchParamsByEntity = <TSchema extends AnyZodObject>(
schema?: TSchema,
options: IUseZodSearchParams = {},
) => {
const entity = useEntityType();
const [searchParams] = useSearchParams();
const entity = searchParams.get('entity');
const { data: session } = useAuthenticatedUserQuery();
const EntitySearchSchema = useMemo(
() =>
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { useSearchParamsByEntity } from '../../../../common/hooks/useSearchParamsByEntity/useSearchParamsByEntity';

export const useFilterEntity = (): string | undefined => {
const [{ entity }] = useSearchParamsByEntity();

return entity;
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@ import { useFiltersQuery } from '../../../filters/hooks/queries/useFiltersQuery/
import { useEffect } from 'react';
import { useSearchParamsByEntity } from '../../../../common/hooks/useSearchParamsByEntity/useSearchParamsByEntity';
import { useNavigate, useParams } from 'react-router-dom';
import { useEntityType } from '../../../../common/hooks/useEntityType/useEntityType';

export const useSelectEntityFilterOnMount = () => {
const { data: filters } = useFiltersQuery();
const { locale } = useParams();
const [{ filterId }, setSearchParams] = useSearchParamsByEntity();
const entity = useEntityType();
const [{ entity, filterId }, setSearchParams] = useSearchParamsByEntity();
const navigate = useNavigate();
const [firstFilter] = filters ?? [];

useEffect(() => {
if ((entity && filterId) || !firstFilter) return;

navigate(`/${locale}/case-management/entities?filterId=${firstFilter?.id}`);
navigate(
`/${locale}/case-management/entities?entity=${firstFilter?.entity}&filterId=${firstFilter?.id}`,
);
}, [entity, filterId, firstFilter, setSearchParams]);
};
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { useEffect } from 'react';
import { useParams } from 'react-router-dom';
import { useSelectEntity } from '../useSelectEntity/useSelectEntity';
import { useFilterEntity } from '../useFilterEntity/useFilterEntity';
import { useWorkflowsQuery } from '../../../workflows/hooks/queries/useWorkflowsQuery/useWorkflowsQuery';
import { useSearchParamsByEntity } from '../../../../common/hooks/useSearchParamsByEntity/useSearchParamsByEntity';
import { useEntityType } from '../../../../common/hooks/useEntityType/useEntityType';

/**
* @description Sets the selected end user to the first end user in the array on mount if no user is currently selected. Returns the select end user handler.
Expand All @@ -14,7 +14,7 @@ export const useSelectEntityOnMount = () => {
const { data } = useWorkflowsQuery({ filterId, filter, sortBy, sortDir, page, pageSize });
const { data: workflows } = data || { data: [] };
const onSelectEntity = useSelectEntity();
const entity = useEntityType();
const entity = useFilterEntity();
const firstCaseId = workflows?.[0]?.id;

useEffect(() => {
Expand Down
7 changes: 0 additions & 7 deletions apps/backoffice-v2/src/domains/filters/types.ts

This file was deleted.

4 changes: 1 addition & 3 deletions apps/backoffice-v2/src/pages/Entities/Entities.loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@ import { usersQueryKeys } from '../../domains/users/query-keys';
import { LoaderFunction } from 'react-router-dom';
import { workflowsQueryKeys } from '../../domains/workflows/query-keys';
import { defaultDeserializer } from '../../common/hooks/useZodSearchParams/utils/default-deserializer';
import { getEntityTypeByFilterId } from '../../common/utils/get-entity-type-by-filter-id/get-entity-type-by-filter-id';

export const entitiesLoader: LoaderFunction = async ({ request }) => {
const { filterId, filter, sortBy, sortDir, page, pageSize } = defaultDeserializer(
const { entity, filterId, filter, sortBy, sortDir, page, pageSize } = defaultDeserializer(
request.url.split('?')[1],
);
const entity = getEntityTypeByFilterId(filterId);
const authenticatedUser = authQueryKeys.authenticatedUser();
const session = await queryClient.ensureQueryData(
authenticatedUser.queryKey,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export const Cases: FunctionComponent<ICasesProps> & ICasesChildren = ({
</div>
</div>
<div className={`flex items-center justify-between`}>
<div className="dropdown-hover dropdown-bottom dropdown z-[60]">
<div className="dropdown dropdown-bottom dropdown-hover z-[60]">
<button
className={`btn-ghost btn-sm btn h-[2.125rem] gap-2 border-neutral/10 text-xs focus-visible:outline-primary theme-dark:border-neutral/50`}
tabIndex={0}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { useDocumentListener } from '../../../../../../common/hooks/useDocumentListener/useDocumentListener';
import { useCallback, useRef } from 'react';
import { useUsersQuery } from '../../../../../../domains/users/hooks/queries/useUsersQuery/useUsersQuery';
import { useEntityType } from '../../../../../../common/hooks/useEntityType/useEntityType';
import { useFilterEntity } from '../../../../../../domains/entities/hooks/useFilterEntity/useFilterEntity';
import { useSearchParamsByEntity } from '../../../../../../common/hooks/useSearchParamsByEntity/useSearchParamsByEntity';

export const useCases = () => {
const [{ filter, sortBy }] = useSearchParamsByEntity();
const entity = useEntityType();
const entity = useFilterEntity();
const sharedSortByOptions = [
{
label: 'Created At',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { useSearch } from '../../../../common/hooks/useSearch/useSearch';
import { ChangeEventHandler, useCallback } from 'react';
import { createArrayOfNumbers } from '../../../../common/utils/create-array-of-numbers/create-array-of-numbers';
import { useFilterEntity } from '../../../../domains/entities/hooks/useFilterEntity/useFilterEntity';
import { useSelectEntityOnMount } from '../../../../domains/entities/hooks/useSelectEntityOnMount/useSelectEntityOnMount';
import { useWorkflowsQuery } from '../../../../domains/workflows/hooks/queries/useWorkflowsQuery/useWorkflowsQuery';
import { useSearchParamsByEntity } from '../../../../common/hooks/useSearchParamsByEntity/useSearchParamsByEntity';
import { useEntityType } from '../../../../common/hooks/useEntityType/useEntityType';

export const useEntities = () => {
const [{ filterId, filter, sortBy, sortDir, page, pageSize }, setSearchParams] =
Expand All @@ -21,7 +21,7 @@ export const useEntities = () => {
meta: { totalPages },
data: cases,
} = data || { meta: { totalPages: 0 }, data: [] };
const entity = useEntityType();
const entity = useFilterEntity();
const individualsSearchOptions = ['entity.name', 'entity.email'];
const businessesSearchOptions = ['entity.name'];
const { searched, onSearch, search } = useSearch({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export const Actions: FunctionComponent<IActionsProps> = ({
</h2>
</div>
{showResolutionButtons && (
<div className={`pe-[3.35rem] flex items-center space-x-6`}>
<div className={`flex items-center space-x-6 pe-[3.35rem]`}>
<Button
className={ctw({
// loading: debouncedIsLoadingRejectEntity,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import * as React from 'react';

const Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(
({ className, ...props }, ref) => (
<table ref={ref} className={cn('caption-bottom w-full text-sm', className)} {...props} />
<table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />
),
);
Table.displayName = 'Table';
Expand Down
8 changes: 4 additions & 4 deletions packages/workflow-core/src/lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ export {
WorkflowEventWithoutState,
WorkflowOptions,
WorkflowRunnerArgs,
WorkflowContext,
WorkflowContext
} from './types';
export { StatePlugin } from './plugins/types';
export { PluginAction } from './plugins/types';
export { ExtensionRunOrder } from './plugins/types';
export {StatePlugin} from "./plugins/types";
export {PluginAction} from "./plugins/types";
export {ExtensionRunOrder} from "./plugins/types";
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { TContext, TTransformers, TValidators } from '../../utils/types';
import { AnyRecord, isErrorWithMessage } from '@ballerine/common';
import * as process from 'process';
import * as process from "process";

export interface IApiPluginParams {
name: string;
Expand Down Expand Up @@ -29,10 +29,7 @@ export class ApiPlugin {
this.stateNames = pluginParams.stateNames;
this.url = pluginParams.url;
this.method = pluginParams.method;
this.headers = {
'Content-Type': 'application/json',
...(pluginParams.headers || {}),
} as HeadersInit;
this.headers = {'Content-Type': 'application/json', ...(pluginParams.headers || {})} as HeadersInit;
this.request = pluginParams.request;
this.response = pluginParams.response;
this.successAction = pluginParams.successAction;
Expand All @@ -52,7 +49,7 @@ export class ApiPlugin {
this.replaceValuePlaceholders(this.url, context),
this.method,
requestPayload,
this.composeRequestHeaders(this.headers!, context),
this.composeRequestHeaders(this.headers!, context)
);

if (apiResponse.ok) {
Expand Down Expand Up @@ -129,12 +126,7 @@ export class ApiPlugin {
}

composeRequestHeaders(headers: HeadersInit, context: TContext) {
return Object.fromEntries(
Object.entries(headers).map(header => [
header[0],
this.replaceValuePlaceholders(header[1], context),
]),
);
return Object.fromEntries(Object.entries(headers).map(header => [header[0], this.replaceValuePlaceholders(header[1], context)]));
}
replaceValuePlaceholders(content: string, context: TContext) {
const placeholders = content.match(/{(.*?)}/g);
Expand All @@ -144,9 +136,9 @@ export class ApiPlugin {
placeholders.forEach(placeholder => {
const variableKey = placeholder.replace(/{|}/g, '');
const isPlaceholderSecret = variableKey.includes('secret.');
const placeholderValue = isPlaceholderSecret
? `${process.env[variableKey.replace('secret.', '')]}`
: `${this.fetchObjectPlaceholderValue(context, variableKey)}`;
const placeholderValue = isPlaceholderSecret ?
`${process.env[variableKey.replace('secret.','')]}`:
`${this.fetchObjectPlaceholderValue(context, variableKey)}`;
replacedContent = replacedContent.replace(placeholder, placeholderValue);
});

Expand All @@ -165,3 +157,6 @@ export class ApiPlugin {
}, record as unknown);
}
}



Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { beforeEach, afterEach, describe, expect, it, test } from 'vitest';
import { WorkflowRunner } from '../../workflow-runner';
import { WorkflowRunnerArgs } from '../../types';
import { WebhookPlugin, WebhookPluginParams } from './webhook-plugin';
import { setupServer } from 'msw/node';
import { rest } from 'msw';
import {WebhookPlugin, WebhookPluginParams} from "./webhook-plugin";
import {setupServer} from "msw/node";
import {rest} from "msw";

function createWorkflowRunner(
definition: WorkflowRunnerArgs['definition'],
Expand Down Expand Up @@ -49,7 +49,7 @@ describe('workflow-runner', () => {
request: {
transform: {
transformer: 'jmespath',
mapping: '{id: entity.id}',
mapping: '{id: entity.id}'
},
},
},
Expand All @@ -68,16 +68,14 @@ describe('workflow-runner', () => {
let serverRequesUrl;
server.use(
rest.get(webhookUrl, (req, res, ctx) => {
serverRequesUrl = req.url.toString();
return res(ctx.json({ result: 'someResult' }));
serverRequesUrl = req.url.toString()
return res(ctx.json({result: 'someResult'}));
}),
);
const workflow = createWorkflowRunner(definition, webhookPluginsSchemas);
it('it transitions to successAction and persist response to context', async () => {
await workflow.sendEvent('ALL_GOOD');
expect(serverRequesUrl).toEqual(
'https://sometesturl.com/ballerine/test/url/123?id=some_id',
);
expect(serverRequesUrl).toEqual("https://sometesturl.com/ballerine/test/url/123?id=some_id");
});
});
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ApiPlugin, IApiPluginParams } from './api-plugin';
import { TContext } from '../../utils/types';
import {ApiPlugin, IApiPluginParams} from "./api-plugin";
import {TContext} from "../../utils/types";

export interface WebhookPluginParams {
name: string;
Expand All @@ -18,11 +18,16 @@ export class WebhookPlugin extends ApiPlugin {
const requestPayload = await this.transformData(this.request.transformer, context);

try {
await this.makeApiRequest(this.url, this.method, requestPayload, this.headers);
await this.makeApiRequest(
this.url,
this.method,
requestPayload,
this.headers,
);
} catch (e) {
console.error(e);
console.error(e)
}

return {};
return {}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,8 @@ export abstract class BaseContextTransformer {
abstract name: string;
type = 'context-transformer';

abstract transform(context: TContext, options: {}): Promise<any>;
abstract transform(
context: TContext,
options: {},
): Promise<any>;
}

0 comments on commit 480cd92

Please sign in to comment.