trpc/quote: reduce request size
This commit is contained in:
parent
aa3adef0da
commit
98915374af
@ -22,12 +22,20 @@ export default function loadKpReactions(
|
||||
|
||||
const quoteName = $calculation.element('selectQuote').getOption()?.label;
|
||||
|
||||
const { lead, opportunity, quote } = toJS($calculation.$values.values);
|
||||
trpcClient.quote.getValues
|
||||
.mutate({
|
||||
values: toJS($calculation.$values.values),
|
||||
.query({
|
||||
values: {
|
||||
lead,
|
||||
opportunity,
|
||||
quote,
|
||||
},
|
||||
})
|
||||
.then(({ values }) => {
|
||||
$calculation.$values.hydrate(values);
|
||||
$calculation.$values.setValues({
|
||||
values,
|
||||
exclude: ['leadUrl', 'opportunityUrl', 'quoteUrl'],
|
||||
});
|
||||
message.success({
|
||||
content: `КП ${quoteName} загружено`,
|
||||
});
|
||||
|
||||
@ -32,13 +32,17 @@ const QUERY_GET_AGENTS_DATA_FROM_QUOTE = gql`
|
||||
}
|
||||
`;
|
||||
|
||||
type InputData = {
|
||||
quoteId: NonNullable<CalculationValues['quote']>;
|
||||
};
|
||||
|
||||
type SupplierData = {
|
||||
values: Partial<CalculationValues>;
|
||||
};
|
||||
|
||||
export default async function getSupplierAgentsDataFromKP(
|
||||
values: CalculationValues
|
||||
): Promise<SupplierData> {
|
||||
export default async function getSupplierAgentsDataFromKP({
|
||||
quoteId,
|
||||
}: InputData): Promise<SupplierData> {
|
||||
const apolloClient = initializeApollo();
|
||||
|
||||
const {
|
||||
@ -46,7 +50,7 @@ export default async function getSupplierAgentsDataFromKP(
|
||||
} = await apolloClient.query<GetAgentsDataFromQuoteQuery, GetAgentsDataFromQuoteQueryVariables>({
|
||||
query: QUERY_GET_AGENTS_DATA_FROM_QUOTE,
|
||||
variables: {
|
||||
quoteId: values.quote!,
|
||||
quoteId,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
/* eslint-disable object-curly-newline */
|
||||
import defaultValues from 'config/default-values';
|
||||
import { makeAutoObservable } from 'mobx';
|
||||
import { pick } from 'radash';
|
||||
import type RootStore from '../../root';
|
||||
import type { CalculationValues, Values } from './types';
|
||||
|
||||
@ -17,6 +18,13 @@ export default class ValuesStore {
|
||||
this.values = initialValues;
|
||||
};
|
||||
|
||||
setValues = (params: { values: CalculationValues; exclude: Values[] }) => {
|
||||
const { values, exclude } = params;
|
||||
|
||||
const savedValues = pick(this.values, exclude);
|
||||
this.values = { ...values, ...savedValues };
|
||||
};
|
||||
|
||||
getValue<V extends Values>(valueName: V) {
|
||||
return this.values[valueName];
|
||||
}
|
||||
|
||||
@ -8,7 +8,11 @@ const quoteRouter = t.router({
|
||||
getValues: t.procedure
|
||||
.input(
|
||||
z.object({
|
||||
values: ValuesSchema,
|
||||
values: ValuesSchema.pick({
|
||||
lead: true,
|
||||
opportunity: true,
|
||||
quote: true,
|
||||
}),
|
||||
})
|
||||
)
|
||||
.output(
|
||||
@ -16,20 +20,15 @@ const quoteRouter = t.router({
|
||||
values: ValuesSchema,
|
||||
})
|
||||
)
|
||||
.mutation(async ({ input }) => {
|
||||
const { values } = await getSupplierAgentsDataFromKP(input.values);
|
||||
|
||||
const { lead, opportunity, quote, leadUrl, opportunityUrl, quoteUrl } = input.values;
|
||||
.query(async ({ input }) => {
|
||||
const { values } = await getSupplierAgentsDataFromKP({
|
||||
quoteId: input.values.quote!,
|
||||
});
|
||||
|
||||
return {
|
||||
values: {
|
||||
...defaultValues,
|
||||
lead,
|
||||
leadUrl,
|
||||
opportunity,
|
||||
opportunityUrl,
|
||||
quote,
|
||||
quoteUrl,
|
||||
...input.values,
|
||||
...values,
|
||||
},
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user