Skip to content

Commit f1d8c05

Browse files
committed
refactor(email): Replace in-memory email client with SendGrid
- Replaced HtEmailInMemoryClient with HtEmailSendGrid. - Configured SendGrid API key and URL. - Added HtHttpClient for SendGrid integration. - Implemented token provider for SendGrid auth. - Updated email repository dependency.
1 parent 4a002a6 commit f1d8c05

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

lib/src/config/app_dependencies.dart

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ import 'package:ht_api/src/services/user_preference_limit_service.dart';
1313
import 'package:ht_api/src/services/verification_code_storage_service.dart';
1414
import 'package:ht_data_mongodb/ht_data_mongodb.dart';
1515
import 'package:ht_data_repository/ht_data_repository.dart';
16-
import 'package:ht_email_inmemory/ht_email_inmemory.dart';
1716
import 'package:ht_email_repository/ht_email_repository.dart';
17+
import 'package:ht_email_sendgrid/ht_email_sendgrid.dart';
18+
import 'package:ht_http_client/ht_http_client.dart';
1819
import 'package:ht_shared/ht_shared.dart';
1920
import 'package:logging/logging.dart';
2021

@@ -166,9 +167,24 @@ class AppDependencies {
166167
);
167168
remoteConfigRepository = HtDataRepository(dataClient: remoteConfigClient);
168169

169-
const emailClient = HtEmailInMemoryClient();
170-
171-
emailRepository = const HtEmailRepository(emailClient: emailClient);
170+
// Configure the HTTP client for SendGrid.
171+
// The HtHttpClient's AuthInterceptor will use the tokenProvider to add
172+
// the 'Authorization: Bearer <SENDGRID_API_KEY>' header.
173+
final sendGridHttpClient = HtHttpClient(
174+
baseUrl:
175+
EnvironmentConfig.sendGridApiUrl ?? 'https://api.sendgrid.com/v3',
176+
tokenProvider: () async => EnvironmentConfig.sendGridApiKey,
177+
isWeb: false, // This is a server-side implementation.
178+
logger: Logger('HtEmailSendgridClient'),
179+
);
180+
181+
// Initialize the SendGrid email client with the dedicated HTTP client.
182+
final emailClient = HtEmailSendGrid(
183+
httpClient: sendGridHttpClient,
184+
log: Logger('HtEmailSendgrid'),
185+
);
186+
187+
emailRepository = HtEmailRepository(emailClient: emailClient);
172188

173189
// 5. Initialize Services
174190
tokenBlacklistService = MongoDbTokenBlacklistService(

0 commit comments

Comments
 (0)