updates
This commit is contained in:
@@ -33,6 +33,7 @@ export interface PageContent {
|
||||
quick_links?: Array<{ label: string; url: string }>;
|
||||
support_links?: Array<{ label: string; url: string }>;
|
||||
};
|
||||
badges?: Array<{ text: string; icon: string }>;
|
||||
hero_title?: string;
|
||||
hero_subtitle?: string;
|
||||
hero_image?: string;
|
||||
@@ -82,6 +83,7 @@ export interface UpdatePageContentData {
|
||||
quick_links?: Array<{ label: string; url: string }>;
|
||||
support_links?: Array<{ label: string; url: string }>;
|
||||
};
|
||||
badges?: Array<{ text: string; icon: string }>;
|
||||
hero_title?: string;
|
||||
hero_subtitle?: string;
|
||||
hero_image?: string;
|
||||
@@ -148,6 +150,11 @@ const pageContentService = {
|
||||
};
|
||||
}
|
||||
|
||||
// Handle badges array
|
||||
if (data.badges) {
|
||||
updateData.badges = data.badges; // Send as array, backend will convert to JSON
|
||||
}
|
||||
|
||||
// Handle values and features arrays
|
||||
if (data.values) {
|
||||
updateData.values = data.values; // Send as array, backend will convert to JSON
|
||||
|
||||
@@ -36,6 +36,91 @@ export interface UpdateStripeSettingsRequest {
|
||||
stripe_webhook_secret?: string;
|
||||
}
|
||||
|
||||
export interface SmtpSettingsResponse {
|
||||
status: string;
|
||||
data: {
|
||||
smtp_host: string;
|
||||
smtp_port: string;
|
||||
smtp_user: string;
|
||||
smtp_password: string;
|
||||
smtp_password_masked: string;
|
||||
smtp_from_email: string;
|
||||
smtp_from_name: string;
|
||||
smtp_use_tls: boolean;
|
||||
has_host: boolean;
|
||||
has_user: boolean;
|
||||
has_password: boolean;
|
||||
updated_at?: string | null;
|
||||
updated_by?: string | null;
|
||||
};
|
||||
message?: string;
|
||||
}
|
||||
|
||||
export interface UpdateSmtpSettingsRequest {
|
||||
smtp_host?: string;
|
||||
smtp_port?: string;
|
||||
smtp_user?: string;
|
||||
smtp_password?: string;
|
||||
smtp_from_email?: string;
|
||||
smtp_from_name?: string;
|
||||
smtp_use_tls?: boolean;
|
||||
}
|
||||
|
||||
export interface TestSmtpEmailRequest {
|
||||
email: string;
|
||||
}
|
||||
|
||||
export interface TestSmtpEmailResponse {
|
||||
status: string;
|
||||
message: string;
|
||||
data: {
|
||||
recipient: string;
|
||||
sent_at: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface CompanySettingsResponse {
|
||||
status: string;
|
||||
data: {
|
||||
company_name: string;
|
||||
company_tagline: string;
|
||||
company_logo_url: string;
|
||||
company_favicon_url: string;
|
||||
company_phone: string;
|
||||
company_email: string;
|
||||
company_address: string;
|
||||
updated_at?: string | null;
|
||||
updated_by?: string | null;
|
||||
};
|
||||
message?: string;
|
||||
}
|
||||
|
||||
export interface UpdateCompanySettingsRequest {
|
||||
company_name?: string;
|
||||
company_tagline?: string;
|
||||
company_phone?: string;
|
||||
company_email?: string;
|
||||
company_address?: string;
|
||||
}
|
||||
|
||||
export interface UploadLogoResponse {
|
||||
status: string;
|
||||
message: string;
|
||||
data: {
|
||||
logo_url: string;
|
||||
full_url: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface UploadFaviconResponse {
|
||||
status: string;
|
||||
message: string;
|
||||
data: {
|
||||
favicon_url: string;
|
||||
full_url: string;
|
||||
};
|
||||
}
|
||||
|
||||
const systemSettingsService = {
|
||||
/**
|
||||
* Get platform currency (public endpoint)
|
||||
@@ -82,7 +167,123 @@ const systemSettingsService = {
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* Get SMTP settings (Admin only)
|
||||
*/
|
||||
getSmtpSettings: async (): Promise<SmtpSettingsResponse> => {
|
||||
const response = await apiClient.get<SmtpSettingsResponse>(
|
||||
'/api/admin/system-settings/smtp'
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* Update SMTP settings (Admin only)
|
||||
*/
|
||||
updateSmtpSettings: async (
|
||||
settings: UpdateSmtpSettingsRequest
|
||||
): Promise<SmtpSettingsResponse> => {
|
||||
const response = await apiClient.put<SmtpSettingsResponse>(
|
||||
'/api/admin/system-settings/smtp',
|
||||
settings
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* Test SMTP email (Admin only)
|
||||
*/
|
||||
testSmtpEmail: async (
|
||||
email: string
|
||||
): Promise<TestSmtpEmailResponse> => {
|
||||
const response = await apiClient.post<TestSmtpEmailResponse>(
|
||||
'/api/admin/system-settings/smtp/test',
|
||||
{ email }
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* Get company settings (public endpoint)
|
||||
*/
|
||||
getCompanySettings: async (): Promise<CompanySettingsResponse> => {
|
||||
const response = await apiClient.get<CompanySettingsResponse>(
|
||||
'/api/admin/system-settings/company'
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* Update company settings (Admin only)
|
||||
*/
|
||||
updateCompanySettings: async (
|
||||
settings: UpdateCompanySettingsRequest
|
||||
): Promise<CompanySettingsResponse> => {
|
||||
const response = await apiClient.put<CompanySettingsResponse>(
|
||||
'/api/admin/system-settings/company',
|
||||
settings
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* Upload company logo (Admin only)
|
||||
*/
|
||||
uploadCompanyLogo: async (
|
||||
file: File
|
||||
): Promise<UploadLogoResponse> => {
|
||||
const formData = new FormData();
|
||||
formData.append('image', file);
|
||||
|
||||
const response = await apiClient.post<UploadLogoResponse>(
|
||||
'/api/admin/system-settings/company/logo',
|
||||
formData,
|
||||
{
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data',
|
||||
},
|
||||
}
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* Upload company favicon (Admin only)
|
||||
*/
|
||||
uploadCompanyFavicon: async (
|
||||
file: File
|
||||
): Promise<UploadFaviconResponse> => {
|
||||
const formData = new FormData();
|
||||
formData.append('image', file);
|
||||
|
||||
const response = await apiClient.post<UploadFaviconResponse>(
|
||||
'/api/admin/system-settings/company/favicon',
|
||||
formData,
|
||||
{
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data',
|
||||
},
|
||||
}
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
};
|
||||
|
||||
export default systemSettingsService;
|
||||
|
||||
export type {
|
||||
PlatformCurrencyResponse,
|
||||
UpdateCurrencyRequest,
|
||||
StripeSettingsResponse,
|
||||
UpdateStripeSettingsRequest,
|
||||
SmtpSettingsResponse,
|
||||
UpdateSmtpSettingsRequest,
|
||||
TestSmtpEmailRequest,
|
||||
TestSmtpEmailResponse,
|
||||
CompanySettingsResponse,
|
||||
UpdateCompanySettingsRequest,
|
||||
UploadLogoResponse,
|
||||
UploadFaviconResponse,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user