106 lines
3.1 KiB
TypeScript
106 lines
3.1 KiB
TypeScript
// ============================================================================
|
|
// Constants
|
|
// ============================================================================
|
|
|
|
export const API_URL =
|
|
process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000/api/v1";
|
|
export const USE_MOCKS =
|
|
process.env.NEXT_PUBLIC_USE_MOCKS?.toLowerCase() === "true" || false;
|
|
export const BOT_USERNAME =
|
|
process.env.NEXT_PUBLIC_BOT_USERNAME || "your_bot_username";
|
|
|
|
// Local Storage Keys
|
|
export const STORAGE_KEYS = {
|
|
ACCESS_TOKEN: "tgex_access_token",
|
|
REFRESH_TOKEN: "tgex_refresh_token",
|
|
USER: "tgex_user",
|
|
SELECTED_TARGET_CHANNEL: "tgex_selected_target_channel",
|
|
} as const;
|
|
|
|
// API Endpoints
|
|
export const API_ENDPOINTS = {
|
|
// Auth
|
|
AUTH_INIT: "/auth/init",
|
|
AUTH_COMPLETE: "/auth/complete",
|
|
AUTH_REFRESH: "/auth/refresh",
|
|
AUTH_ME: "/auth/me",
|
|
|
|
// Target Channels
|
|
TARGET_CHANNELS: "/target-channels",
|
|
TARGET_CHANNEL: (id: string) => `/target-channels/${id}`,
|
|
|
|
// External Channels
|
|
EXTERNAL_CHANNELS: "/external-channels",
|
|
EXTERNAL_CHANNEL: (id: string) => `/external-channels/${id}`,
|
|
EXTERNAL_CHANNELS_IMPORT: "/external-channels/import",
|
|
|
|
// Creatives
|
|
CREATIVES: "/creatives",
|
|
CREATIVE: (id: string) => `/creatives/${id}`,
|
|
|
|
// Purchases
|
|
PURCHASES: "/purchases",
|
|
PURCHASE: (id: string) => `/purchases/${id}`,
|
|
PURCHASE_REFRESH_VIEWS: (id: string) => `/purchases/${id}/refresh-views`,
|
|
|
|
// Analytics
|
|
ANALYTICS_OVERVIEW: "/analytics/overview",
|
|
ANALYTICS_COSTS: "/analytics/costs",
|
|
ANALYTICS_CHANNELS: "/analytics/channels",
|
|
ANALYTICS_CREATIVES: "/analytics/creatives",
|
|
} as const;
|
|
|
|
// Error Codes
|
|
export const ERROR_CODES = {
|
|
UNAUTHORIZED: "UNAUTHORIZED",
|
|
FORBIDDEN: "FORBIDDEN",
|
|
NOT_FOUND: "NOT_FOUND",
|
|
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
INTERNAL_ERROR: "INTERNAL_ERROR",
|
|
CHANNEL_NOT_FOUND: "CHANNEL_NOT_FOUND",
|
|
CHANNEL_ALREADY_EXISTS: "CHANNEL_ALREADY_EXISTS",
|
|
INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS",
|
|
CREATIVE_IN_USE: "CREATIVE_IN_USE",
|
|
INVALID_INVITE_LINK: "INVALID_INVITE_LINK",
|
|
} as const;
|
|
|
|
// Date Formats
|
|
export const DATE_FORMATS = {
|
|
DISPLAY: "dd.MM.yyyy",
|
|
DISPLAY_WITH_TIME: "dd.MM.yyyy HH:mm",
|
|
API: "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
|
|
} as const;
|
|
|
|
// Pagination
|
|
export const DEFAULT_PAGE_SIZE = 20;
|
|
export const PAGE_SIZE_OPTIONS = [10, 20, 50, 100];
|
|
|
|
// Routes
|
|
export const ROUTES = {
|
|
HOME: "/",
|
|
LOGIN: "/login",
|
|
AUTH_COMPLETE: "/auth/complete",
|
|
|
|
CHANNELS: "/channels",
|
|
CHANNEL_DETAIL: (id: string) => `/channels/${id}`,
|
|
|
|
EXTERNAL_CHANNELS: "/external-channels",
|
|
EXTERNAL_CHANNEL_DETAIL: (id: string) => `/external-channels/${id}`,
|
|
EXTERNAL_CHANNELS_IMPORT: "/external-channels/import",
|
|
|
|
CREATIVES: "/creatives",
|
|
CREATIVE_NEW: "/creatives/new",
|
|
CREATIVE_DETAIL: (id: string) => `/creatives/${id}`,
|
|
CREATIVE_EDIT: (id: string) => `/creatives/${id}/edit`,
|
|
|
|
PURCHASES: "/purchases",
|
|
PURCHASE_NEW: "/purchases/new",
|
|
PURCHASE_DETAIL: (id: string) => `/purchases/${id}`,
|
|
PURCHASE_EDIT: (id: string) => `/purchases/${id}/edit`,
|
|
|
|
ANALYTICS: "/analytics",
|
|
ANALYTICS_COSTS: "/analytics/costs",
|
|
ANALYTICS_CHANNELS: "/analytics/channels",
|
|
ANALYTICS_CREATIVES: "/analytics/creatives",
|
|
} as const;
|