Fixed important in notification

This commit is contained in:
llsajjad
2025-09-27 14:57:42 +03:30
parent 359f7f2608
commit ca81da026d
5 changed files with 36 additions and 21 deletions
@@ -1,3 +1,4 @@
// notification_repository.dart
import 'package:tm_app/core/utils/result.dart'; import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/model/notification__response/notification_response_model.dart'; import 'package:tm_app/data/services/model/notification__response/notification_response_model.dart';
import 'package:tm_app/data/services/notification_service.dart'; import 'package:tm_app/data/services/notification_service.dart';
@@ -28,4 +29,14 @@ class NotificationsRepository {
offset: offset, offset: offset,
); );
} }
Future<Result<NotificationResponseModel>> getImportantNotifications({
required int limit,
required int offset,
}) {
return _notificationsService.getImportantNotifications(
limit: limit,
offset: offset,
);
}
} }
+9 -7
View File
@@ -1,17 +1,19 @@
// notification_api.dart
class NotificationApi { class NotificationApi {
static const String notifications = '/api/v1/notifications'; static const String notifications = '/api/v1/notifications';
static String getNotifications({required int limit, required int offset}) { static String getNotifications({required int limit, required int offset}) {
return '$notifications?limit=$limit&offset=$offset'; return '$notifications?limit=$limit&offset=$offset';
} }
static const String feedback = '/api/v1/feedback';
static const String markAllAsRead = '/api/v1/notifications/mark'; static const String markAllAsRead = '/api/v1/notifications/mark';
static const String markAsRead = '/api/v1/notifications/mark-as-read'; static const String markAsRead = '/api/v1/notifications/mark-as-read';
static const String tenderApprovalsTender = '/api/v1/notifications';
static const String unreadNotifications = '/api/v1/notifications?seen=false'; static const String unreadNotifications = '/api/v1/notifications?seen=false';
static String getUnreadNotifications({required int limit, required int offset}) { static String getUnreadNotifications({required int limit, required int offset}) {
return '$unreadNotifications?limit=$limit&offset=$offset'; return '/api/v1/notifications?seen=false&limit=$limit&offset=$offset';
} }
}
static String getImportantNotifications({required int limit, required int offset}) {
return '/api/v1/notifications?priority=important&limit=$limit&offset=$offset';
}
}
+13 -4
View File
@@ -1,10 +1,8 @@
// notification_service.dart // notification_service.dart
import 'dart:convert'; import 'dart:convert';
import 'package:tm_app/core/utils/result.dart'; import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/api/notification_api.dart'; import 'package:tm_app/data/services/api/notification_api.dart';
import 'package:tm_app/data/services/model/notification__response/notification_response_model.dart'; import 'package:tm_app/data/services/model/notification__response/notification_response_model.dart';
import '../../core/network/network_manager.dart'; import '../../core/network/network_manager.dart';
class NotificationsService { class NotificationsService {
@@ -18,7 +16,6 @@ class NotificationsService {
}) async { }) async {
final result = await _networkManager.makeRequest( final result = await _networkManager.makeRequest(
NotificationApi.getNotifications(limit: limit, offset: offset), NotificationApi.getNotifications(limit: limit, offset: offset),
//NotificationApi.notifications,
method: 'GET', method: 'GET',
(json) => NotificationResponseModel.fromJson(json), (json) => NotificationResponseModel.fromJson(json),
); );
@@ -52,7 +49,19 @@ class NotificationsService {
required int offset, required int offset,
}) async { }) async {
final result = await _networkManager.makeRequest( final result = await _networkManager.makeRequest(
NotificationApi.unreadNotifications, NotificationApi.getUnreadNotifications(limit: limit, offset: offset),
method: 'GET',
(json) => NotificationResponseModel.fromJson(json),
);
return result;
}
Future<Result<NotificationResponseModel>> getImportantNotifications({
required int limit,
required int offset,
}) async {
final result = await _networkManager.makeRequest(
NotificationApi.getImportantNotifications(limit: limit, offset: offset),
method: 'GET', method: 'GET',
(json) => NotificationResponseModel.fromJson(json), (json) => NotificationResponseModel.fromJson(json),
); );
+2 -1
View File
@@ -1,3 +1,4 @@
// notification_view_model.dart
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tm_app/core/utils/app_toast.dart'; import 'package:tm_app/core/utils/app_toast.dart';
@@ -169,7 +170,7 @@ class NotificationViewModel with ChangeNotifier {
final int offset = (page - 1) * _pageSize; final int offset = (page - 1) * _pageSize;
final result = await _repository.getUnreadNotifications( final result = await _repository.getImportantNotifications(
limit: _pageSize, limit: _pageSize,
offset: offset, offset: offset,
); );
@@ -17,15 +17,7 @@ class NotificationImportantTab extends StatelessWidget {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
} }
final importantFromApi = viewModel.importantNotificationResponse?.data ?? []; final importantNotifications = viewModel.importantNotificationResponse?.data ?? [];
final allNotifications = viewModel.allNotificationResponse?.data ?? [];
final source = importantFromApi.isNotEmpty ? importantFromApi : allNotifications;
final importantNotifications = source
.where((n) => (n.priority ?? '').toLowerCase() == 'important')
.toList();
if (importantNotifications.isEmpty) { if (importantNotifications.isEmpty) {
return const Center(child: Text(NotificationStrings.noImportantNotifications)); return const Center(child: Text(NotificationStrings.noImportantNotifications));