- Converted several async components to synchronous functions, including `Layout`, `AddOrdersPage`, `ProfilePage`, `SlotPage`, and `ServicePage`, enhancing rendering efficiency. - Removed unnecessary prefetching logic and hydration boundaries, simplifying component structure and improving maintainability. - Updated the `TelegramProvider` to return null during the initial mount instead of a loading message, streamlining the loading state handling. - Enhanced loading state management in order-related components by adding loading spinners and data not found alerts, improving user experience during data fetching.
31 lines
821 B
TypeScript
31 lines
821 B
TypeScript
'use client';
|
|
|
|
import { type SlotComponentProps } from '../types';
|
|
import { SlotDate } from './slot-date';
|
|
import { SlotTime } from './slot-time';
|
|
import { useSlotQuery } from '@/hooks/api/slots';
|
|
import { ScheduleStoreProvider } from '@/stores/schedule';
|
|
import { withContext } from '@/utils/context';
|
|
|
|
export const SlotDateTime = withContext(ScheduleStoreProvider)(function (
|
|
props: Readonly<SlotComponentProps>,
|
|
) {
|
|
const { isLoading } = useSlotQuery(props);
|
|
|
|
if (isLoading) {
|
|
return (
|
|
<div className="flex animate-pulse flex-col space-y-1">
|
|
<div className="h-5 w-28 rounded bg-muted" />
|
|
<div className="h-9 w-48 rounded bg-muted" />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<div className="flex flex-col">
|
|
<SlotDate {...props} />
|
|
<SlotTime {...props} />
|
|
</div>
|
|
);
|
|
});
|