All files / apps/reallocation/src/screens/Reallocation types.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97                                                                                                                                                                                                 
import { NativeStackScreenProps } from '@react-navigation/native-stack';
 
export enum ReallocationStep {
  OBSERVER = 'ChooseObserver',
  DATE = 'ChooseDate',
  REASON = 'ChooseReason',
  PREVIEW = 'Preview',
  ROOM = 'ChooseRoom',
  MEAL_REGISTRATION = 'Meal Registration',
}
 
export type ReallocationStackParamList = {
  [ReallocationStep.OBSERVER]: undefined;
  [ReallocationStep.ROOM]: undefined;
  [ReallocationStep.DATE]: undefined;
  [ReallocationStep.REASON]: undefined;
  [ReallocationStep.PREVIEW]: undefined;
  [ReallocationStep.MEAL_REGISTRATION]: undefined;
};
 
export type ReallocationStackScreenProps<
  Screen extends keyof ReallocationStackParamList,
> = NativeStackScreenProps<ReallocationStackParamList, Screen>;
 
export type ReallocationShift = 'Morning' | 'Afternoon';
 
export interface ReallocationForm {
  observers: string[];
  date?: Date;
  shift?: ReallocationShift;
  room?: string;
  originRoom?: string;
  reason?: string;
  requester?: string;
  mealBreakfast?: boolean;
  mealLunch?: boolean;
  mealVegetarian?: boolean;
}
 
export interface ReallocationState {
  form: ReallocationForm;
  isSearchOpen: boolean;
  isDatePickerOpen: boolean;
  isReasonInputOpen: boolean;
  isSubmitting: boolean;
}
 
export interface ReallocationActions {
  toggleObserver: (id: string) => void;
  changeDate: (date: Date) => void;
  changeShift: (shift: ReallocationShift) => void;
  changeReason: (reason: string) => void;
  changeRoom: (room: string) => void;
  changeOriginRoom: (room: string) => void;
  changeMealConfig: (config: {
    breakfast: boolean;
    lunch: boolean;
    vegetarian: boolean;
  }) => void;
  toggleSearch: () => void;
  closeSearch: () => void;
  closeDatePicker: () => void;
  closeReasonInput: () => void;
  setDatePickerOpen: (isOpen: boolean) => void;
  setReasonInputOpen: (isOpen: boolean) => void;
  setSubmitting: (isSubmitting: boolean) => void;
  resetObservers: () => void;
}
 
export interface ReallocationContextValue {
  state: ReallocationState;
  actions: ReallocationActions;
}
 
export interface ReallocationAuthAdapter {
  getAccessToken: () => Promise<string | null>;
  onUnauthorized?: () => void;
}
 
export interface ReallocationEnvConfig {
  baseApiUrl: string;
  spaceApiUrl: string;
  basicAuthUsername: string;
  basicAuthPassword: string;
}
 
export interface ReallocationRemoteProps {
  onClose?: () => void;
  onSubmitSuccess?: (payload?: unknown) => void;
  onSubmitError?: (error: unknown) => void;
  onSubmittingChange?: (isSubmitting: boolean) => void;
  setFabOffset?: (offset: number) => void;
  auth?: Partial<ReallocationAuthAdapter>;
  env?: Partial<ReallocationEnvConfig>;
  featureFlags?: Record<string, boolean>;
}