package com.airlock.iam.authentication.infrastructure.service.ui;

import com.airlock.iam.common.api.domain.model.user.UserIdentity;
import com.airlock.iam.common.domain.model.user.PrincipalInfo;
import jakarta.inject.Inject;
import java.util.Optional;

public class LogoutDisclaimerSkipService {
   private final PrincipalInfo principalInfo;
   private final Optional<LogoutDisclaimerSkipService.SkipDisclaimerQueryParameter> skipDisclaimerQueryParameter;

   @Inject
   public LogoutDisclaimerSkipService(
      PrincipalInfo principalInfo, Optional<LogoutDisclaimerSkipService.SkipDisclaimerQueryParameter> skipDisclaimerQueryParameter
   ) {
      this.principalInfo = principalInfo;
      this.skipDisclaimerQueryParameter = skipDisclaimerQueryParameter;
   }

   public boolean skipDisclaimer() {
      return this.skipDisclaimerQueryParameter.isPresent() || this.isRepresentationOngoing();
   }

   private boolean isRepresentationOngoing() {
      return this.principalInfo.getAuthenticatedIdentity().flatMap(UserIdentity::representerId).isPresent();
   }

   public static final class SkipDisclaimerQueryParameter {
   }
}
