clean routes
This commit is contained in:
45
apps/website/lib/auth/RoutePathBuilder.ts
Normal file
45
apps/website/lib/auth/RoutePathBuilder.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { buildPath } from '../routing/RouteConfig';
|
||||
|
||||
/**
|
||||
* RoutePathBuilder builds paths from route IDs with optional parameters and locale
|
||||
*
|
||||
* Usage:
|
||||
* ```typescript
|
||||
* const builder = new RoutePathBuilder();
|
||||
*
|
||||
* // Simple route
|
||||
* builder.build('auth.login'); // → '/auth/login'
|
||||
*
|
||||
* // With parameters
|
||||
* builder.build('league.detail', { id: '123' }); // → '/leagues/123'
|
||||
*
|
||||
* // With locale
|
||||
* builder.build('auth.login', {}, { locale: 'de' }); // → '/de/auth/login'
|
||||
*
|
||||
* // With parameters and locale
|
||||
* builder.build('league.detail', { id: '123' }, { locale: 'de' }); // → '/de/leagues/123'
|
||||
* ```
|
||||
*/
|
||||
export class RoutePathBuilder {
|
||||
/**
|
||||
* Build a path from route ID with optional parameters and locale
|
||||
* @param routeId - Route ID in format 'category.routeName'
|
||||
* @param params - Optional parameters for parameterized routes
|
||||
* @param options - Optional options including locale
|
||||
* @returns Complete path with optional locale prefix
|
||||
*/
|
||||
build(
|
||||
routeId: string,
|
||||
params?: Record<string, string>,
|
||||
options?: { locale?: string | null }
|
||||
): string {
|
||||
const path = buildPath(routeId, params);
|
||||
|
||||
// Add locale prefix if provided
|
||||
if (options?.locale) {
|
||||
return `/${options.locale}${path}`;
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user