Skip to content

Commit ef5a90a

Browse files
authored
Merge pull request #105 from flutter-news-app-full-source-code/feat/handle-user-generated-content
Feat/handle user generated content
2 parents 9aab3cb + d5bfa21 commit ef5a90a

12 files changed

+903
-48
lines changed

lib/src/config/app_dependencies.dart

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import 'package:flutter_news_app_api_server_full_source_code/src/services/countr
1616
import 'package:flutter_news_app_api_server_full_source_code/src/services/dashboard_summary_service.dart';
1717
import 'package:flutter_news_app_api_server_full_source_code/src/services/database_migration_service.dart';
1818
import 'package:flutter_news_app_api_server_full_source_code/src/services/database_seeding_service.dart';
19-
import 'package:flutter_news_app_api_server_full_source_code/src/services/default_user_preference_limit_service.dart';
19+
import 'package:flutter_news_app_api_server_full_source_code/src/services/default_user_action_limit_service.dart';
2020
import 'package:flutter_news_app_api_server_full_source_code/src/services/firebase_authenticator.dart';
2121
import 'package:flutter_news_app_api_server_full_source_code/src/services/firebase_push_notification_client.dart';
2222
import 'package:flutter_news_app_api_server_full_source_code/src/services/jwt_auth_token_service.dart';
@@ -28,7 +28,7 @@ import 'package:flutter_news_app_api_server_full_source_code/src/services/push_n
2828
import 'package:flutter_news_app_api_server_full_source_code/src/services/push_notification_service.dart';
2929
import 'package:flutter_news_app_api_server_full_source_code/src/services/rate_limit_service.dart';
3030
import 'package:flutter_news_app_api_server_full_source_code/src/services/token_blacklist_service.dart';
31-
import 'package:flutter_news_app_api_server_full_source_code/src/services/user_preference_limit_service.dart';
31+
import 'package:flutter_news_app_api_server_full_source_code/src/services/user_action_limit_service.dart';
3232
import 'package:flutter_news_app_api_server_full_source_code/src/services/verification_code_storage_service.dart';
3333
import 'package:http_client/http_client.dart';
3434
import 'package:logging/logging.dart';
@@ -73,6 +73,8 @@ class AppDependencies {
7373
late final DataRepository<RemoteConfig> remoteConfigRepository;
7474
late final DataRepository<InAppNotification> inAppNotificationRepository;
7575

76+
late final DataRepository<Engagement> engagementRepository;
77+
late final DataRepository<Report> reportRepository;
7678
late final EmailRepository emailRepository;
7779

7880
// Services
@@ -83,7 +85,7 @@ class AppDependencies {
8385
late final AuthService authService;
8486
late final DashboardSummaryService dashboardSummaryService;
8587
late final PermissionService permissionService;
86-
late final UserPreferenceLimitService userPreferenceLimitService;
88+
late final UserActionLimitService userActionLimitService;
8789
late final RateLimitService rateLimitService;
8890
late final CountryQueryService countryQueryService;
8991
late final IPushNotificationService pushNotificationService;
@@ -231,6 +233,22 @@ class AppDependencies {
231233

232234
_log.info('Initialized data client for InAppNotification.');
233235

236+
final engagementClient = DataMongodb<Engagement>(
237+
connectionManager: _mongoDbConnectionManager,
238+
modelName: 'engagements',
239+
fromJson: Engagement.fromJson,
240+
toJson: (item) => item.toJson(),
241+
logger: Logger('DataMongodb<Engagement>'),
242+
);
243+
244+
final reportClient = DataMongodb<Report>(
245+
connectionManager: _mongoDbConnectionManager,
246+
modelName: 'reports',
247+
fromJson: Report.fromJson,
248+
toJson: (item) => item.toJson(),
249+
logger: Logger('DataMongodb<Report>'),
250+
);
251+
234252
// --- Conditionally Initialize Push Notification Clients ---
235253

236254
// Firebase
@@ -319,6 +337,9 @@ class AppDependencies {
319337
inAppNotificationRepository = DataRepository(
320338
dataClient: inAppNotificationClient,
321339
);
340+
engagementRepository = DataRepository(dataClient: engagementClient);
341+
reportRepository = DataRepository(dataClient: reportClient);
342+
322343
// Configure the HTTP client for SendGrid.
323344
// The HttpClient's AuthInterceptor will use the tokenProvider to add
324345
// the 'Authorization: Bearer <SENDGRID_API_KEY>' header.
@@ -368,9 +389,11 @@ class AppDependencies {
368389
topicRepository: topicRepository,
369390
sourceRepository: sourceRepository,
370391
);
371-
userPreferenceLimitService = DefaultUserPreferenceLimitService(
392+
userActionLimitService = DefaultUserActionLimitService(
372393
remoteConfigRepository: remoteConfigRepository,
373-
log: Logger('DefaultUserPreferenceLimitService'),
394+
engagementRepository: engagementRepository,
395+
reportRepository: reportRepository,
396+
log: Logger('DefaultUserActionLimitService'),
374397
);
375398
rateLimitService = MongoDbRateLimitService(
376399
connectionManager: _mongoDbConnectionManager,

0 commit comments

Comments
 (0)