package com.airlock.iam.flow.shared.domain.service;

import com.airlock.iam.flow.application.configuration.flow.FlowConfigHash;
import com.airlock.iam.flow.domain.model.session.InternalFlowSession;
import com.airlock.iam.flow.domain.service.FlowNotAllowedException;
import com.airlock.iam.flow.shared.domain.model.session.FlowSessionImpl;
import com.airlock.iam.flow.shared.domain.model.session.MultiFlowCapableUserSession;
import jakarta.inject.Inject;
import java.util.Set;

public final class NoFlowSessionUserSessionConnector implements FlowSessionUserSessionConnector {
   @Override
   public InternalFlowSession createFlowSessionFromUserSession(FlowConfigHash flowConfigHash, MultiFlowCapableUserSession userSession) {
      if (!userSession.isPristine()) {
         throw new FlowNotAllowedException();
      }

      userSession.clear();
      return new FlowSessionImpl(flowConfigHash, Set.of());
   }

   @Override
   public void finalizeFlowSessionToUserSession(InternalFlowSession flowSession, MultiFlowCapableUserSession userSession) {
   }
}
