package com.socialapp.data.api import com.auth0.jwt.JWT import com.auth0.jwt.algorithms.Algorithm import okhttp3.Interceptor import okhttp3.Response import java.util.Date class JwtInterceptor(private val tokenProvider: () -> String?) : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val originalRequest = chain.request() val token = tokenProvider() val newRequest = if (token != null) { originalRequest.newBuilder() .header("Authorization", "Bearer $token") .header("Content-Type", "application/json") .build() } else { originalRequest } return chain.proceed(newRequest) } } object JwtTokenManager { private var token: String? = null fun saveToken(newToken: String) { token = newToken } fun getToken(): String? = token fun isTokenValid(): Boolean { return token != null && !isTokenExpired(token!!) } private fun isTokenExpired(token: String): Boolean { return try { val decodedJWT = JWT.decode(token) val expiresAt = decodedJWT.expiresAt expiresAt != null && expiresAt.before(Date()) } catch (e: Exception) { true } } fun clearToken() { token = null } }