Repository navigation
[Customer Portal][FE][Web] Enhance AI Case Classification, Rich Text Editor Reactivity, and API Model Alignment #203
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
Merged
Rashmika998
merged 14 commits into
wso2-open-operations:customer-portal-milestone-1
from
dileepapeiris:feat/fix-case-classification
Feb 19, 2026
Merged
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
02a8da1
Add vitest script to customer-portal webapp
dileepapeiris 83bec61
Add case classification and product loading
dileepapeiris 5fb6cc3
Enhance caseCreation utils, add helpers
dileepapeiris fef7fd9
Apply AI classification and persist state
dileepapeiris 2668ddf
Adjust usePostCaseClassifications and Editor tests
dileepapeiris 9610f5c
Use envProducts map in case classification request
dileepapeiris ed7f392
Rename case_info to caseInfo; update button text
dileepapeiris 53fc85b
Format assignedEngineer union types
dileepapeiris 5523ae5
Initialize editor safely and adjust disabled styles
dileepapeiris 8a00536
Add useAllDeploymentProducts hook
dileepapeiris b3e96ac
tests: mock useAllDeploymentProducts and add load-wait test
dileepapeiris 3ea73ae
Improve CreateCasePage tests and mocks
dileepapeiris b5857eb
Various UI, storage, and normalization fixes
dileepapeiris eeb7e72
Simplify JSDoc for statusLabel param
dileepapeiris File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
70 changes: 70 additions & 0 deletions
70
apps/customer-portal/webapp/src/hooks/useAllDeploymentProducts.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| // Copyright (c) 2026 WSO2 LLC. (https://www.wso2.com). | ||
| // | ||
| // WSO2 LLC. licenses this file to you under the Apache License, | ||
| // Version 2.0 (the "License"); you may not use this file except | ||
| // in compliance with the License. | ||
| // You may obtain a copy of the License at | ||
| // | ||
| // http://www.apache.org/licenses/LICENSE-2.0 | ||
| // | ||
| // Unless required by applicable law or agreed to in writing, | ||
| // software distributed under the License is distributed on an | ||
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
| // KIND, either express or implied. See the License for the | ||
| // specific language governing permissions and limitations | ||
| // under the License. | ||
|
|
||
| import { useMemo } from "react"; | ||
| import { useQueries } from "@tanstack/react-query"; | ||
| import { useAuthApiClient } from "@context/AuthApiContext"; | ||
| import { ApiQueryKeys } from "@constants/apiConstants"; | ||
| import { | ||
| fetchDeploymentProducts, | ||
| type FetchFn, | ||
| } from "@api/useGetDeploymentsProducts"; | ||
| import type { DeploymentProductItem } from "@models/responses"; | ||
|
|
||
| interface DeploymentForProducts { | ||
| id: string; | ||
| name?: string; | ||
| type?: { id?: string; label?: string }; | ||
| } | ||
|
|
||
| /** | ||
| * Fetches products for all deployments and returns a map of deploymentId -> products. | ||
| * | ||
| * @param {DeploymentForProducts[] | undefined} projectDeployments - Project deployments. | ||
| * @returns {{ productsByDeploymentId: Record<string, DeploymentProductItem[]>; isLoading: boolean }} Map and loading state. | ||
| */ | ||
| export function useAllDeploymentProducts( | ||
| projectDeployments: DeploymentForProducts[] | undefined, | ||
| ): { | ||
| productsByDeploymentId: Record<string, DeploymentProductItem[]>; | ||
| isLoading: boolean; | ||
| } { | ||
| const fetchFn: FetchFn = useAuthApiClient(); | ||
| const deploymentIds = | ||
| projectDeployments?.map((d) => d.id).filter(Boolean) ?? []; | ||
|
|
||
| const results = useQueries({ | ||
| queries: deploymentIds.map((deploymentId) => ({ | ||
| queryKey: [ApiQueryKeys.DEPLOYMENT_PRODUCTS, deploymentId], | ||
| queryFn: () => fetchDeploymentProducts(deploymentId, { fetchFn }), | ||
| enabled: !!deploymentId && !!fetchFn, | ||
| staleTime: 5 * 60 * 1000, | ||
| })), | ||
| }); | ||
|
|
||
| const productsByDeploymentId = useMemo(() => { | ||
| const map: Record<string, DeploymentProductItem[]> = {}; | ||
| deploymentIds.forEach((id, i) => { | ||
| const res = results[i]; | ||
| map[id] = (res?.data ?? []) as DeploymentProductItem[]; | ||
| }); | ||
| return map; | ||
| }, [results, deploymentIds]); | ||
|
|
||
| const isLoading = results.some((r) => r.isLoading); | ||
|
|
||
| return { productsByDeploymentId, isLoading }; | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.