Add subcription level filtering
This commit is contained in:
@@ -18,6 +18,27 @@ export interface ApiError {
|
||||
details?: any;
|
||||
}
|
||||
|
||||
export interface SubscriptionError {
|
||||
error: string;
|
||||
message: string;
|
||||
code: string;
|
||||
details: {
|
||||
required_feature: string;
|
||||
required_level: string;
|
||||
current_plan: string;
|
||||
upgrade_url: string;
|
||||
};
|
||||
}
|
||||
|
||||
// Subscription error event emitter
|
||||
class SubscriptionErrorEmitter extends EventTarget {
|
||||
emitSubscriptionError(error: SubscriptionError) {
|
||||
this.dispatchEvent(new CustomEvent('subscriptionError', { detail: error }));
|
||||
}
|
||||
}
|
||||
|
||||
export const subscriptionErrorEmitter = new SubscriptionErrorEmitter();
|
||||
|
||||
class ApiClient {
|
||||
private client: AxiosInstance;
|
||||
private baseURL: string;
|
||||
@@ -146,6 +167,13 @@ class ApiClient {
|
||||
if (error.response) {
|
||||
// Server responded with error status
|
||||
const { status, data } = error.response;
|
||||
|
||||
// Check for subscription errors
|
||||
if (status === 403 && (data as any)?.code === 'SUBSCRIPTION_UPGRADE_REQUIRED') {
|
||||
const subscriptionError = data as SubscriptionError;
|
||||
subscriptionErrorEmitter.emitSubscriptionError(subscriptionError);
|
||||
}
|
||||
|
||||
return {
|
||||
message: (data as any)?.detail || (data as any)?.message || `Request failed with status ${status}`,
|
||||
status,
|
||||
|
||||
Reference in New Issue
Block a user