* Integrate BookingHistory with Bookings V3 design * Enhance booking features by integrating booking audit functionality - Updated the booking page to retrieve user feature statuses for "bookings-v3" and "booking-audit". - Modified BookingDetailsSheet and BookingListContainer components to accept and utilize the new bookingAuditEnabled prop. - Adjusted the BookingHistory display logic to conditionally render based on the bookingAuditEnabled state. - Refactored SegmentedControl to support generic types for better type safety. This change improves the user experience by allowing conditional access to booking audit features based on user permissions. * Refactor BookingDetailsSheet to manage active segment state with Zustand store - Removed local state management for active segment in BookingDetailsSheet and integrated Zustand store for better state synchronization. - Introduced useActiveSegmentFromUrl hook to sync active segment with URL query parameters. - Updated BookingDetailsSheet to handle derived active segment logic based on bookingAuditEnabled state. - Adjusted SegmentedControl to ensure it defaults to "info" when activeSegment is null. This refactor enhances the maintainability and responsiveness of the booking details component. * refactor: rename useBiDirectionalSyncBetweenZustandAndNuqs to useBiDirectionalSyncBetweenStoreAndUrl Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com> --------- Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
21 lines
860 B
TypeScript
21 lines
860 B
TypeScript
import type { AppFlags, FeatureState } from "./config";
|
|
|
|
/**
|
|
* Interface for the core FeaturesRepository.
|
|
* This interface defines methods for checking feature flags and team feature access.
|
|
*/
|
|
export interface IFeaturesRepository {
|
|
checkIfFeatureIsEnabledGlobally(slug: keyof AppFlags): Promise<boolean>;
|
|
checkIfUserHasFeature(userId: number, slug: string): Promise<boolean>;
|
|
getUserFeaturesStatus(userId: number, slugs: string[]): Promise<Record<string, boolean>>;
|
|
checkIfUserHasFeatureNonHierarchical(userId: number, slug: string): Promise<boolean>;
|
|
checkIfTeamHasFeature(teamId: number, slug: keyof AppFlags): Promise<boolean>;
|
|
getTeamsWithFeatureEnabled(slug: keyof AppFlags): Promise<number[]>;
|
|
setTeamFeatureState(
|
|
teamId: number,
|
|
featureId: keyof AppFlags,
|
|
state: FeatureState,
|
|
assignedBy: string
|
|
): Promise<void>;
|
|
}
|