Update Saqel Platform: 2026-09-08 18:19:28

This commit is contained in:
Hamza-Ayed
2026-09-08 18:19:28 +03:00
parent 75451ebc3f
commit e5cbd89323
22 changed files with 1537 additions and 595 deletions
@@ -35,6 +35,7 @@ class AppConfig {
static const String auditVideoEndpoint = '/api/teacher/audit-studio-video';
static const String uploadLessonEndpoint = '/api/teacher/lessons/upload';
static const String uploadVideoEndpoint = '/api/teacher/videos/upload-direct';
static const String curriculumTreeEndpoint = '/api/curriculum/tree';
static const String qnaEndpoint = '/api/teacher/qna';
static const String cliqPayoutEndpoint = '/api/teacher/payout/request';
@@ -39,7 +39,8 @@ class StorageService {
return _volatileStore[key];
}
Future<void> saveToken(String token) async => await _writeSafe(_keyToken, token);
Future<void> saveToken(String token) async =>
await _writeSafe(_keyToken, token);
Future<String?> getToken() async => await _readSafe(_keyToken);
Future<void> clearSession() async {
@@ -21,21 +21,25 @@ class AppLogger {
if (!kDebugMode) return;
final buffer = StringBuffer();
buffer.writeln('\n🌐 ─── [HTTP REQUEST (TEACHER)] ──────────────────────────────────');
buffer.writeln(
'\n🌐 ─── [HTTP REQUEST (TEACHER)] ──────────────────────────────────');
buffer.writeln('➡️ Method: $method');
buffer.writeln('🔗 URL: $uri');
if (headers != null && headers.isNotEmpty) {
final safeHeaders = Map<String, String>.from(headers);
if (safeHeaders.containsKey('Authorization')) {
final auth = safeHeaders['Authorization']!;
safeHeaders['Authorization'] = auth.length > 20 ? '${auth.substring(0, 15)}...' : 'Bearer [REDACTED]';
safeHeaders['Authorization'] = auth.length > 20
? '${auth.substring(0, 15)}...'
: 'Bearer [REDACTED]';
}
buffer.writeln('📋 Headers: ${jsonEncode(safeHeaders)}');
}
if (body != null) {
buffer.writeln('📦 Body: ${body is String ? body : jsonEncode(body)}');
}
buffer.writeln('───────────────────────────────────────────────────────────────');
buffer.writeln(
'───────────────────────────────────────────────────────────────');
debugPrint(buffer.toString());
}
@@ -52,24 +56,29 @@ class AppLogger {
final emoji = isSuccess ? '✅' : '⚠️';
final buffer = StringBuffer();
buffer.writeln('\n$emoji ─── [HTTP RESPONSE $statusCode (TEACHER)] ──────────────────────');
buffer.writeln(
'\n$emoji ─── [HTTP RESPONSE $statusCode (TEACHER)] ──────────────────────');
buffer.writeln('⬅️ Method: $method');
buffer.writeln('🔗 URL: $uri');
if (duration != null) {
buffer.writeln('⏱️ Time: ${duration.inMilliseconds}ms');
}
if (responseBody != null) {
buffer.writeln('📦 Data: ${responseBody is String ? responseBody : jsonEncode(responseBody)}');
buffer.writeln(
'📦 Data: ${responseBody is String ? responseBody : jsonEncode(responseBody)}');
}
buffer.writeln('───────────────────────────────────────────────────────────────');
buffer.writeln(
'───────────────────────────────────────────────────────────────');
debugPrint(buffer.toString());
}
static void error(String message, {dynamic error, StackTrace? stackTrace, String tag = 'TEACHER_ERROR'}) {
static void error(String message,
{dynamic error, StackTrace? stackTrace, String tag = 'TEACHER_ERROR'}) {
if (!kDebugMode) return;
final buffer = StringBuffer();
buffer.writeln('\n🚨 ─── [ERROR: $tag] ──────────────────────────────────────────');
buffer.writeln(
'\n🚨 ─── [ERROR: $tag] ──────────────────────────────────────────');
buffer.writeln('❌ Message: $message');
if (error != null) {
buffer.writeln('⚠️ Error: $error');
@@ -77,7 +86,8 @@ class AppLogger {
if (stackTrace != null) {
buffer.writeln('📍 Trace: \n$stackTrace');
}
buffer.writeln('───────────────────────────────────────────────────────────────');
buffer.writeln(
'───────────────────────────────────────────────────────────────');
debugPrint(buffer.toString());
}
}