Просмотр исходного кода

Refactor AccessScopeDropdown, AiAssistantManagementEditShare, and ShareScopeSwitch to include scope type in selection handlers

Shun Miyazawa 1 год назад
Родитель
Сommit
345af5ea76

+ 3 - 3
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantManagementModal/AccessScopeDropdown.tsx

@@ -7,12 +7,12 @@ import {
 
 import { useCurrentUser } from '~/stores-universal/context';
 
-import { AiAssistantAccessScope } from '../../../../interfaces/ai-assistant';
+import { AiAssistantScopeType, AiAssistantAccessScope } from '../../../../interfaces/ai-assistant';
 
 type Props = {
   isDisabled: boolean,
   selectedAccessScope: AiAssistantAccessScope,
-  onSelect: (accessScope: AiAssistantAccessScope) => void,
+  onSelect: (accessScope: AiAssistantAccessScope, scopeType: AiAssistantScopeType) => void,
 }
 
 export const AccessScopeDropdown: React.FC<Props> = (props: Props) => {
@@ -31,7 +31,7 @@ export const AccessScopeDropdown: React.FC<Props> = (props: Props) => {
   }, [currentUser?.username, t]);
 
   const selectAccessScopeHandler = useCallback((accessScope: AiAssistantAccessScope) => {
-    onSelect(accessScope);
+    onSelect(accessScope, AiAssistantScopeType.ACCESS);
   }, [onSelect]);
 
   return (

+ 8 - 14
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantManagementModal/AiAssistantManagementEditShare.tsx

@@ -4,7 +4,8 @@ import {
   ModalBody, Input, Label,
 } from 'reactstrap';
 
-import { AiAssistantAccessScope, AiAssistantShareScope, AiAssistantScopeType } from '~/features/openai/interfaces/ai-assistant';
+import type { AiAssistantScopeType } from '~/features/openai/interfaces/ai-assistant';
+import { AiAssistantAccessScope, AiAssistantShareScope } from '~/features/openai/interfaces/ai-assistant';
 import type { PopulatedGrantedGroup } from '~/interfaces/page-grant';
 
 import { AccessScopeDropdown } from './AccessScopeDropdown';
@@ -18,7 +19,7 @@ type Props = {
   selectedShareScope: AiAssistantShareScope,
   selectedAccessScope: AiAssistantAccessScope,
   onSelectUserGroup: (userGroup: PopulatedGrantedGroup) => void,
-  onSelectScope: (accessScope: AiAssistantAccessScope | AiAssistantShareScope, scopeType?: AiAssistantScopeType) => void,
+  onSelectScope: (scope: AiAssistantAccessScope | AiAssistantShareScope, scopeType?: AiAssistantScopeType) => void,
 }
 
 export const AiAssistantManagementEditShare = (props: Props): JSX.Element => {
@@ -42,16 +43,9 @@ export const AiAssistantManagementEditShare = (props: Props): JSX.Element => {
     });
   }, [onSelectScope]);
 
-  const selectAccessScopeHandler = useCallback((accessScope: AiAssistantAccessScope) => {
-    onSelectScope(accessScope, AiAssistantScopeType.ACCESS);
-    if (accessScope === AiAssistantAccessScope.GROUPS) {
-      setIsUserGroupSelectorOpen(true);
-    }
-  }, [onSelectScope]);
-
-  const selectShareScopeHandler = useCallback((shareScope: AiAssistantShareScope) => {
-    onSelectScope(shareScope, AiAssistantScopeType.SHARE);
-    if (shareScope === AiAssistantShareScope.GROUPS) {
+  const selectScopeHandler = useCallback((scope: AiAssistantAccessScope | AiAssistantShareScope, scopeType: AiAssistantScopeType) => {
+    onSelectScope(scope, scopeType);
+    if ((scope as AiAssistantAccessScope) === AiAssistantAccessScope.GROUPS || (scope as AiAssistantShareScope) === AiAssistantShareScope.GROUPS) {
       setIsUserGroupSelectorOpen(true);
     }
   }, [onSelectScope]);
@@ -78,13 +72,13 @@ export const AiAssistantManagementEditShare = (props: Props): JSX.Element => {
         <AccessScopeDropdown
           isDisabled={!isShared}
           selectedAccessScope={selectedAccessScope}
-          onSelect={selectAccessScopeHandler}
+          onSelect={selectScopeHandler}
         />
 
         <ShareScopeSwitch
           isDisabled={!isShared}
           selectedShareScope={selectedShareScope}
-          onSelect={selectShareScopeHandler}
+          onSelect={selectScopeHandler}
         />
 
         <SelectUserGroupModal

+ 3 - 3
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantManagementModal/ShareScopeSwitch.tsx

@@ -4,19 +4,19 @@ import {
   Input, Label, FormGroup,
 } from 'reactstrap';
 
-import { AiAssistantShareScope } from '../../../../interfaces/ai-assistant';
+import { AiAssistantShareScope, AiAssistantScopeType } from '../../../../interfaces/ai-assistant';
 
 type Props = {
   isDisabled: boolean,
   selectedShareScope: AiAssistantShareScope,
-  onSelect: (shareScope: AiAssistantShareScope) => void,
+  onSelect: (shareScope: AiAssistantShareScope, scopeType: AiAssistantScopeType) => void,
 }
 
 export const ShareScopeSwitch: React.FC<Props> = (props: Props) => {
   const { isDisabled, selectedShareScope, onSelect } = props;
 
   const checkShareScopeRadioHandler = useCallback((shareScope: AiAssistantShareScope) => {
-    onSelect(shareScope);
+    onSelect(shareScope, AiAssistantScopeType.SHARE);
   }, [onSelect]);
 
   return (