feat: update app icons and refactor home top professionals section to display dynamic agent profiles.

This commit is contained in:
pradeepkumar
2026-03-18 11:42:46 +05:30
parent b52e356a04
commit a90f039b4b
30 changed files with 303 additions and 200 deletions

View File

@@ -1,6 +1,7 @@
import 'dart:async';
import 'package:logger/logger.dart';
import 'package:real_estate_mobile/config/app_config.dart';
import 'package:real_estate_mobile/core/network/api_client.dart';
import 'package:real_estate_mobile/core/storage/secure_storage.dart';
import 'package:real_estate_mobile/features/messaging/data/models/message.dart';
import 'package:real_estate_mobile/features/support_chat/data/models/support_chat_models.dart';
@@ -144,12 +145,31 @@ class SocketService {
}
Future<void> _reconnectWithFreshToken() async {
// Wait briefly for any in-flight REST token refresh to complete
await Future.delayed(const Duration(milliseconds: 500));
final token = await SecureStorage.getAccessToken();
if (token != null && token != _currentToken) {
if (token == null) return;
// If token hasn't changed, try triggering a refresh via a lightweight API call
if (token == _currentToken) {
try {
// Make a lightweight call that triggers the API client's 401 interceptor
// which auto-refreshes the token
final dio = ApiClient.instance.dio;
await dio.get('/auth/me');
final refreshedToken = await SecureStorage.getAccessToken();
if (refreshedToken == null || refreshedToken == _currentToken) return;
_currentToken = refreshedToken;
} catch (_) {
return; // Token refresh failed — user will need to re-login
}
} else {
_currentToken = token;
_socket?.io.options?['auth'] = {'token': token};
_socket?.connect();
}
_socket?.io.options?['auth'] = {'token': _currentToken};
_socket?.connect();
}
void disconnect() {