EnakPoint & EnakCoin wallet, PIN, outlet, order, community, reward
- Wallet EnakPoint & EnakCoin: beranda, riwayat, saldo kedaluwarsa, kode bayar, tukar EnakCoin, transfer - PIN (buat, ganti, lupa), outlet, riwayat order, game spin - Halaman community, webview, coming soon, dan ikon menu beranda baru - Redesign Reward Saya: kartu tiket, filter chip, detail kode + QR - Hapus customer point loader, menu, dan checkout lama - Base URL ke enaklo-pos-api.altru.id Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
5954510b93
commit
f5e3075205
@@ -17,6 +17,7 @@ import 'interceptors/bad_request_interceptor.dart';
|
||||
import 'interceptors/connection_timeout_interceptor.dart';
|
||||
import 'interceptors/internal_server_interceptor.dart';
|
||||
import 'interceptors/not_found_interceptor.dart';
|
||||
import 'interceptors/sensitive_aware_log_interceptor.dart';
|
||||
import 'interceptors/unauthorized_interceptor.dart';
|
||||
|
||||
@lazySingleton
|
||||
@@ -37,10 +38,12 @@ class ApiClient {
|
||||
|
||||
if (kDebugMode) {
|
||||
_dio.interceptors.add(
|
||||
AwesomeDioInterceptor(
|
||||
logResponseHeaders: false,
|
||||
logRequestTimeout: false,
|
||||
logRequestHeaders: true,
|
||||
SensitiveAwareLogInterceptor(
|
||||
AwesomeDioInterceptor(
|
||||
logResponseHeaders: false,
|
||||
logRequestTimeout: false,
|
||||
logRequestHeaders: true,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -54,6 +57,7 @@ class ApiClient {
|
||||
bool followRedirects = true,
|
||||
bool Function(int?)? validateStatus,
|
||||
String? contentType,
|
||||
Map<String, dynamic>? extra,
|
||||
}) async {
|
||||
try {
|
||||
return await _dio.post(
|
||||
@@ -64,6 +68,7 @@ class ApiClient {
|
||||
followRedirects: followRedirects,
|
||||
validateStatus: validateStatus,
|
||||
contentType: contentType,
|
||||
extra: extra,
|
||||
),
|
||||
queryParameters: params,
|
||||
);
|
||||
@@ -103,6 +108,7 @@ class ApiClient {
|
||||
bool followRedirects = true,
|
||||
bool Function(int?)? validateStatus,
|
||||
String? contentType,
|
||||
Map<String, dynamic>? extra,
|
||||
}) async {
|
||||
try {
|
||||
return await _dio.get(
|
||||
@@ -112,6 +118,7 @@ class ApiClient {
|
||||
followRedirects: followRedirects,
|
||||
validateStatus: validateStatus,
|
||||
contentType: contentType,
|
||||
extra: extra,
|
||||
),
|
||||
queryParameters: params,
|
||||
);
|
||||
@@ -153,6 +160,7 @@ class ApiClient {
|
||||
bool Function(int?)? validateStatus,
|
||||
String? contentType,
|
||||
void Function(int count, int total)? onSendProgress,
|
||||
Map<String, dynamic>? extra,
|
||||
}) async {
|
||||
try {
|
||||
return await _dio.put(
|
||||
@@ -163,6 +171,7 @@ class ApiClient {
|
||||
followRedirects: followRedirects,
|
||||
validateStatus: validateStatus,
|
||||
contentType: contentType,
|
||||
extra: extra,
|
||||
),
|
||||
queryParameters: params,
|
||||
onSendProgress: onSendProgress,
|
||||
@@ -204,6 +213,7 @@ class ApiClient {
|
||||
bool followRedirects = true,
|
||||
bool Function(int?)? validateStatus,
|
||||
String? contentType,
|
||||
Map<String, dynamic>? extra,
|
||||
}) async {
|
||||
try {
|
||||
return await _dio.delete(
|
||||
@@ -214,6 +224,7 @@ class ApiClient {
|
||||
followRedirects: followRedirects,
|
||||
validateStatus: validateStatus,
|
||||
contentType: contentType,
|
||||
extra: extra,
|
||||
),
|
||||
queryParameters: params,
|
||||
);
|
||||
|
||||
+517
-1374
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
/// Key untuk `Options.extra` yang menandai request berisi data rahasia
|
||||
/// (PIN, OTP). Request bertanda ini tidak dicetak ke log sama sekali.
|
||||
const String kSensitiveRequest = 'sensitive';
|
||||
|
||||
class SensitiveAwareLogInterceptor extends Interceptor {
|
||||
final Interceptor _logger;
|
||||
|
||||
SensitiveAwareLogInterceptor(this._logger);
|
||||
|
||||
bool _isSensitive(RequestOptions options) =>
|
||||
options.extra[kSensitiveRequest] == true;
|
||||
|
||||
@override
|
||||
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
|
||||
if (_isSensitive(options)) return handler.next(options);
|
||||
_logger.onRequest(options, handler);
|
||||
}
|
||||
|
||||
@override
|
||||
void onResponse(Response response, ResponseInterceptorHandler handler) {
|
||||
if (_isSensitive(response.requestOptions)) return handler.next(response);
|
||||
_logger.onResponse(response, handler);
|
||||
}
|
||||
|
||||
@override
|
||||
void onError(DioException err, ErrorInterceptorHandler handler) {
|
||||
if (_isSensitive(err.requestOptions)) return handler.next(err);
|
||||
_logger.onError(err, handler);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user