feat: multi-subscription frontend support

- Add SubscriptionListItem and SubscriptionsListResponse types
- Add getSubscriptions/getSubscriptionById API methods
- Add optional subscriptionId parameter to all 30+ API methods
- Create /subscriptions page with subscription list cards
- Add /subscription/:subscriptionId route for per-subscription management
- Dashboard: show multi-tariff navigation block when user has 2+ subscriptions
- Subscription page: read subscriptionId from URL params, pass to all queries
- SubscriptionPurchase: accept subscriptionId from query params
- SubscriptionCardExpired: pass subscription.id to API calls
- Full backward compatibility: without subscriptionId, works as before
This commit is contained in:
c0mrade
2026-03-19 19:26:42 +03:00
parent 84bded7974
commit 820ba46cc4
8 changed files with 562 additions and 173 deletions

View File

@@ -26,6 +26,7 @@ import OAuthCallback from './pages/OAuthCallback';
import Dashboard from './pages/Dashboard';
// User pages - lazy load
const Subscriptions = lazy(() => import('./pages/Subscriptions'));
const Subscription = lazy(() => import('./pages/Subscription'));
const SubscriptionPurchase = lazy(() => import('./pages/SubscriptionPurchase'));
const Balance = lazy(() => import('./pages/Balance'));
@@ -257,6 +258,26 @@ function App() {
</ProtectedRoute>
}
/>
<Route
path="/subscriptions"
element={
<ProtectedRoute>
<LazyPage>
<Subscriptions />
</LazyPage>
</ProtectedRoute>
}
/>
<Route
path="/subscription/:subscriptionId"
element={
<ProtectedRoute>
<LazyPage>
<Subscription />
</LazyPage>
</ProtectedRoute>
}
/>
<Route
path="/subscription"
element={