- Added cancelPublicBooking handler to manage booking cancellations. - Updated public booking service to include cancellation logic. - Created cancelPublicBooking schema for input validation. - Modified public booking confirmation page to allow users to cancel their bookings. - Enhanced email service to send cancellation confirmation emails. - Made customerEmail field required in booking schemas and updated related components. - Updated API client to support cancellation requests. - Added migration to enforce non-nullable customer_email fields in the database.
72 lines
1.6 KiB
TypeScript
72 lines
1.6 KiB
TypeScript
import { sentinelClient } from '@better-auth/infra/client';
|
|
import { inferAdditionalFields } from 'better-auth/client/plugins';
|
|
import { createAuthClient } from 'better-auth/react';
|
|
import * as api from './api';
|
|
|
|
const apiBaseUrl = api.apiBaseUrl;
|
|
|
|
const plugins = [
|
|
sentinelClient(),
|
|
inferAdditionalFields({
|
|
user: {
|
|
phone: {
|
|
type: 'string',
|
|
required: false,
|
|
},
|
|
},
|
|
}),
|
|
];
|
|
|
|
export const authClient = createAuthClient({
|
|
baseURL: apiBaseUrl,
|
|
fetchOptions: {
|
|
credentials: 'include',
|
|
},
|
|
plugins: import.meta.env.VITE_BETTER_AUTH_INFRA === 'true' ? plugins : [],
|
|
});
|
|
|
|
export class ApiClientError extends Error {
|
|
status?: number;
|
|
details?: unknown;
|
|
causeError?: unknown;
|
|
|
|
constructor(
|
|
message: string,
|
|
options?: { status?: number; details?: unknown; causeError?: unknown }
|
|
) {
|
|
super(message);
|
|
this.name = 'ApiClientError';
|
|
this.status = options?.status;
|
|
this.details = options?.details;
|
|
this.causeError = options?.causeError;
|
|
}
|
|
}
|
|
|
|
export const apiClient = {
|
|
plans: api.plans,
|
|
user: api.user,
|
|
complexes: api.complexes,
|
|
sports: api.sports,
|
|
courts: api.courts,
|
|
publicBookings: {
|
|
getAvailability: api.getAvailability,
|
|
create: api.createPublic,
|
|
getConfirmation: api.getConfirmation,
|
|
cancelPublic: api.cancelPublic,
|
|
},
|
|
adminBookings: {
|
|
listByComplex: api.listByComplex,
|
|
create: api.createAdmin,
|
|
updateStatus: api.updateStatus,
|
|
},
|
|
};
|
|
|
|
export type { ErrorHandlers } from './api';
|
|
export { configureApiClient } from './api';
|
|
|
|
export function setApiAccessToken(_token: string | null) {
|
|
// accessToken = token;
|
|
}
|
|
|
|
export type ApiClient = typeof apiClient;
|