import 'dart:developer'; import 'package:flutter/foundation.dart'; import 'package:http_interceptor/http_interceptor.dart'; import 'package:injectable/injectable.dart'; import 'package:paperless_mobile/core/store/local_vault.dart'; @prod @injectable class AuthenticationInterceptor implements InterceptorContract { final LocalVault _localVault; AuthenticationInterceptor(this._localVault); @override Future interceptRequest({required BaseRequest request}) async { final auth = await _localVault.loadAuthenticationInformation(); if (kDebugMode) { log("Intercepted ${request.method} request to ${request.url.toString()}"); } return request.copyWith( //Append server Url headers: auth?.token?.isEmpty ?? true ? request.headers : { ...request.headers, 'Authorization': 'Token ${auth!.token}', }, ); } @override Future interceptResponse( {required BaseResponse response}) async => response; @override Future shouldInterceptRequest() async => true; @override Future shouldInterceptResponse() async => true; }