إنجاز: تفعيل خاصية استعادة كلمة المرور وإعادة تعيينها

- إضافة نقاط نهاية لخاصيتي استعادة كلمة المرور وإعادة تعيينها في الواجهة الخلفية.

- إنشاء اختبارات لخاصية إعادة تعيين كلمة المرور لضمان كفاءتها وأمانها.

- تطوير صفحات واجهة المستخدم لخاصيتي استعادة كلمة المرور وإعادة تعيينها مع معالجة النماذج.

- دمج حدود تحميل ديناميكية لأنواع ملفات مختلفة بناءً على خطط المستخدمين.

- تقديم أداة جديدة لتغيير حجم الصور مع إمكانية تعديل الأبعاد وإعدادات الجودة.

- تحديث نظام التوجيه والتنقل ليشمل أدوات جديدة وميزات مصادقة.

- تحسين تجربة المستخدم من خلال معالجة الأخطاء ورسائل التغذية الراجعة المناسبة.

- إضافة دعم التدويل للميزات الجديدة باللغات الإنجليزية والعربية والفرنسية.
This commit is contained in:
Your Name
2026-03-07 14:23:50 +02:00
parent 0ad2ba0f02
commit 71f7d0382d
27 changed files with 1460 additions and 7 deletions

View File

@@ -0,0 +1,45 @@
import { useState, useEffect, useCallback } from 'react';
import { TOOL_LIMITS_MB } from '@/config/toolLimits';
interface FileLimitsMb {
pdf: number;
word: number;
image: number;
video: number;
homepageSmartUpload: number;
}
interface ConfigData {
file_limits_mb: FileLimitsMb;
max_upload_mb: number;
}
const API_BASE = import.meta.env.VITE_API_URL || '';
/**
* Fetches dynamic upload limits from /api/config.
* Falls back to the hardcoded TOOL_LIMITS_MB on error.
*/
export function useConfig() {
const [limits, setLimits] = useState<FileLimitsMb>(TOOL_LIMITS_MB);
const [loading, setLoading] = useState(true);
const fetchConfig = useCallback(async () => {
try {
const res = await fetch(`${API_BASE}/api/config`, { credentials: 'include' });
if (!res.ok) throw new Error('config fetch failed');
const data: ConfigData = await res.json();
setLimits(data.file_limits_mb);
} catch {
// Keep hardcoded fallback
} finally {
setLoading(false);
}
}, []);
useEffect(() => {
fetchConfig();
}, [fetchConfig]);
return { limits, loading, refetch: fetchConfig };
}