All files / apps/host/src/screens/RequestDetail useRequestDetail.ts

100% Statements 7/7
100% Branches 0/0
100% Functions 1/1
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69                                    2x           1x   1x   1x                           1x   1x   1x                                            
import { SCREENS } from '@repo/constants/screens';
 
import { useAuth } from '@/contexts/AuthContext';
 
import { AppStackScreenProps } from '@/types/navigation';
 
import { useRequestActions } from './hooks/useRequestActions';
import { useRequestData } from './hooks/useRequestData';
import { useRequestNavigation } from './hooks/useRequestNavigation';
import { useRequestVisibility } from './hooks/useRequestVisibility';
 
interface UseRequestDetailProps {
  id: string;
  fromDeepLink?: boolean;
  refreshTimeStamp?: number;
  navigation: AppStackScreenProps<typeof SCREENS.REQUEST_DETAIL>['navigation'];
}
 
export const useRequestDetail = ({
  id,
  fromDeepLink,
  refreshTimeStamp,
  navigation,
}: UseRequestDetailProps) => {
  const { user } = useAuth();
 
  const { request, isLoading, isRefetching } = useRequestData({ id, refreshTimeStamp });
 
  const { requestStatus, requestType, role, visibility } = useRequestVisibility({ request, user });
 
  const {
    isSubmitting,
    isModalVisible,
    note,
    noteInputRef,
    isNoteValid,
    setNote,
    handleApprove,
    handleReject,
    handleCancel,
    handleToggleModal,
    submitReject,
  } = useRequestActions({ id, request, requestType });
 
  const { handlePressBack } = useRequestNavigation({ navigation, fromDeepLink });
 
  return {
    request,
    isLoading,
    isRefetching,
    isSubmitting,
    isModalVisible,
    note,
    noteInputRef,
    isNoteValid,
    setNote,
    visibility,
    role,
    requestStatus,
    requestType,
    handlePressBack,
    handleApprove,
    handleReject,
    handleCancel,
    handleToggleModal,
    submitReject,
  };
};