Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filing process routing - Phase 2 (Live data) #406

Merged
merged 54 commits into from
Apr 30, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
8688b34
fix: [axiosService] Add missing POST parameter
meissadia Apr 2, 2024
6822d26
[Filing Routing] Phase 1 - Mock Filing progress
meissadia Apr 5, 2024
9849158
[Filing Routing] Phase 1 - Separate routes per step
meissadia Apr 5, 2024
fea91e3
fix: axiosService.request - remove unneeded `data` param in favor of …
meissadia Apr 9, 2024
46971d5
fix: useMemo to avoid duplicate placeholder objects being generated
meissadia Apr 9, 2024
2c2de5f
fix: FilingStepWrapper.helpers - remove unused eslint rule disables
meissadia Apr 9, 2024
bc14e84
[Filing Routing] Phase 1 - Mock Filing progress
meissadia Apr 5, 2024
2cbd121
[Filing Routing] Phase 1 - Separate routes per step
meissadia Apr 5, 2024
e7d28d1
fix: useMemo to avoid duplicate placeholder objects being generated
meissadia Apr 9, 2024
9c52113
fix: FilingStepWrapper.helpers - remove unused eslint rule disables
meissadia Apr 9, 2024
d912fc7
Update imports after rebase
meissadia Apr 9, 2024
9257eb7
Update imports after rebase part 2
meissadia Apr 9, 2024
c60e6e6
Add "tasks" to our mock filing
meissadia Apr 9, 2024
2867e7b
Sync axiosService file
meissadia Apr 9, 2024
cd9a385
Filing step - Display "current" highlight even if step is incomplete
meissadia Apr 9, 2024
b937bc4
Filing - Placeholder for "is step complete?" status
meissadia Apr 9, 2024
5b6c4f3
Filing step - Improve spacing between step indicators
meissadia Apr 10, 2024
c0be487
Filing steps - Remove custom hook that contained routes, which helps …
meissadia Apr 10, 2024
f66f7b3
Merge branch 'main' into 331-filing-routing_phase1-mock-data
meissadia Apr 10, 2024
0c0d989
Filing steps - Revamp flex alignment of page elements
meissadia Apr 10, 2024
cd69c7b
[ScreenReaderOnly] Component: Extract from Filing step indicator code…
meissadia Apr 10, 2024
e64c41c
Filing steps - More dynamic routes (year and lei from the url)
meissadia Apr 10, 2024
a0dcab9
Filing steps - Add TODO to check on StepIndicator widths
meissadia Apr 10, 2024
74506f3
Merge branch 'main' into 331-filing-routing_phase1-mock-data
meissadia Apr 11, 2024
f8f1bdc
fix: [axiosService] Always include "body" for post/put/patch requests
meissadia Apr 18, 2024
502c82c
feat: [API]
meissadia Apr 18, 2024
152ceb6
feat: [FilingOverview] Determine and link to next incomplete step
meissadia Apr 19, 2024
4ebc759
feat: [Filing] Display current Institution's progress within the subm…
meissadia Apr 19, 2024
a0fa68b
feat: [Filing] Placeholder pages for Filing steps
meissadia Apr 19, 2024
77c7ea0
fix: [Institution card] Routing logic for a Submissio n with a previo…
meissadia Apr 19, 2024
e2ca8d2
feat: [FileSubmission] Integrate Filing step indicator and navigation…
meissadia Apr 19, 2024
3b1f9a7
Merge branch 'main' into 331-filing-routing_phase2-live-data
meissadia Apr 22, 2024
45c787c
feat: [Filing Steps] Split out the FilingSteps and FilingNavButtons i…
meissadia Apr 25, 2024
d6a0aa8
fix: [Filing Steps] Adjust font color/weight based on step status
meissadia Apr 25, 2024
26799d8
Merge branch 'main' into 331-filing-routing_phase2-live-data
meissadia Apr 25, 2024
be097dd
Merge main
meissadia Apr 26, 2024
dc1e91f
task: More compact error/loading checks
meissadia Apr 26, 2024
9baf597
fix(Upload - Infinite Loading): adjusted the useGetLatestSubmission s…
shindigira Apr 26, 2024
a7caaf4
alternative solution to react-query settings changes on useGetSubmiss…
shindigira Apr 27, 2024
3b0e54f
removed unnecessary variable
shindigira Apr 27, 2024
1d1bf6e
removed unusued
shindigira Apr 27, 2024
d70c852
best solution for initial check
shindigira Apr 27, 2024
47b360a
disabled refetch on window focus
shindigira Apr 27, 2024
527bbf1
task: [useFilingAndSubmissionInfo] Simplify fetching logic
meissadia Apr 29, 2024
211a45f
fix: [FileSubmission] New Filers get stuck in "Loading" state on init…
meissadia Apr 29, 2024
95f6108
task: [useFilingAndSubmissionInfo] Set staletime to 0
meissadia Apr 29, 2024
8438199
task: [useFilingAndSubmissionInfo] Utilize useGetSubmissionLatest hook
meissadia Apr 29, 2024
614ca43
task: [fetchSubmissionLatest] Delete
meissadia Apr 29, 2024
4612751
Merge branch 'main' into 331-filing-routing_phase2-live-data
meissadia Apr 29, 2024
17b71eb
task: Utilize some of the Design System colors that have been integra…
meissadia Apr 29, 2024
d661744
fix: [useFilingAndSubmissionInfo] Ensure Filing is created before fet…
meissadia Apr 29, 2024
963a7ca
task: Use fetchFilingSubmissionLatest
meissadia Apr 29, 2024
ece66c6
task: Extend FilingStatusAsString enum
meissadia Apr 30, 2024
f6fb212
task: Cleanup unused code
meissadia Apr 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
18 changes: 18 additions & 0 deletions src/api/requests/fetchSubmissionLatest.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { request } from 'api/axiosService';
import type { SblAuthProperties } from 'api/useSblAuth';
import type { FilingPeriodType, SubmissionResponse } from 'types/filingTypes';
import type { InstitutionDetailsApiType } from 'types/formTypes';

export const fetchSubmissionLatest = async (
meissadia marked this conversation as resolved.
Show resolved Hide resolved
auth: SblAuthProperties,
lei: InstitutionDetailsApiType['lei'],
filingPeriod: FilingPeriodType,
): Promise<SubmissionResponse> => {
return request({
url: `/v1/filing/institutions/${lei}/filings/${filingPeriod}/submissions/latest`,
method: 'get',
headers: { Authorization: `Bearer ${auth.user?.access_token}` },
});
};

export default fetchSubmissionLatest;
1 change: 1 addition & 0 deletions src/api/requests/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export { default as fetchFiling } from './fetchFiling';
export { default as fetchInstitutionDetails } from './fetchInstitutionDetails';
export { default as fetchInstitutions } from './fetchInstitutions';
export { default as fetchIsDomainAllowed } from './fetchIsDomainAllowed';
export { default as fetchSubmissionLatest } from './fetchSubmissionLatest';
export { default as fetchUserProfile } from './fetchUserProfile';
export { default as submitUpdateFinancialProfile } from './submitUpdateFinancialProfile';
export { default as submitUserProfile } from './submitUserProfile';
Expand Down
59 changes: 31 additions & 28 deletions src/utils/useFilingAndSubmissionInfo.tsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
import type { UseQueryResult } from '@tanstack/react-query';
import { useQuery } from '@tanstack/react-query';
import { createFiling, fetchFiling } from 'api/requests';
import { createFiling, fetchFiling, fetchSubmissionLatest } from 'api/requests';
import useSblAuth from 'api/useSblAuth';
import type { InstitutionDataType } from 'pages/Filing/FilingApp/InstitutionCard.types';
import type { FilingType, SubmissionResponse } from 'types/filingTypes';
import useGetSubmissionLatest from './useGetSubmissionLatest';

// We want these queries to consistently update in order to keep the data in sync with the backend
// TODO: Would be more efficient to use the refetch functions, but need to determine when/where to call them
const staleTime = 0;

export interface CombinedInfoType {
error: UseQueryResult<FilingType | SubmissionResponse>['error'];
interface CombinedDataType {
filing: FilingType | string | undefined;
isLoading: boolean;
submission: Partial<SubmissionResponse> | string | undefined;
refetchFiling?: () => Promise<FilingType>;
refetchSubmission?: () => Promise<SubmissionResponse>;
}

export interface CombinedInfoType extends CombinedDataType {
error: UseQueryResult<FilingType | SubmissionResponse>['error'];
isLoading: boolean;
refetch?: () => Promise<CombinedDataType>;
}

/*
Expand All @@ -26,7 +27,7 @@ export interface CombinedInfoType {
* is not yet created.
*/
const isObjectInitialized = (
data: FilingType | SubmissionResponse | string | undefined,
data: FilingType | Partial<SubmissionResponse> | string | undefined,
): boolean => !!data && data !== '';

/*
Expand All @@ -39,34 +40,36 @@ export const useFilingAndSubmissionInfo = ({
}: InstitutionDataType): CombinedInfoType => {
const auth = useSblAuth();

const existingFiling = useQuery({
queryKey: [`fetch-filing`, lei, filingPeriod],
queryFn: async (): Promise<FilingType> => {
let filing = await fetchFiling(auth, lei, filingPeriod);
if (!isObjectInitialized(filing)) {
filing = await createFiling(auth, lei, filingPeriod);
const allData = useQuery({
queryKey: [`fetch-filing-submission`, lei, filingPeriod],
queryFn: async (): Promise<CombinedDataType> => {
let filingResult = await fetchFiling(auth, lei, filingPeriod);

if (!isObjectInitialized(filingResult)) {
filingResult = await createFiling(auth, lei, filingPeriod);
}
return filing;

const submissionLatest = await fetchSubmissionLatest(
auth,
lei,
filingPeriod,
);

return { filing: filingResult, submission: submissionLatest };
},
staleTime,
});

const latestSubmission = useGetSubmissionLatest(lei, filingPeriod);

const error = [existingFiling.error, latestSubmission.error].some(Boolean);

const isLoading = [existingFiling.isLoading, latestSubmission.isLoading].some(
Boolean,
);
const { error, isLoading, data, refetch } = allData;
const { filing, submission } = data ?? {};

return {
error,
filing: existingFiling,
filing,
isLoading,
submission: isObjectInitialized(latestSubmission.data)
? latestSubmission.data
: { state: 'SUBMISSION_STARTED', refetch: latestSubmission.refetch },
refetchFiling: existingFiling.refetch,
refetchSubmission: latestSubmission.refetch,
submission: isObjectInitialized(submission)
? submission
: { state: 'SUBMISSION_STARTED', refetch },
meissadia marked this conversation as resolved.
Show resolved Hide resolved
refetch,
};
};