Blinking two LEDs in and out of phase

I am trying to enter the if statement inside the void blink () function same as I did when using the blink funcion with delay()

void blink(unsigned long onTime, unsigned long phaseDifference, unsigned long rate,uint16_t repetitions)
{
  for (int i = 0; i < repetitions; i++)
  { 
  if (phaseDifference < onTime)
  {
    digitalWrite(led1, HIGH);
    delay(phaseDifference);
    digitalWrite(led2, HIGH);
    delay(onTime - phaseDifference);
    digitalWrite(led1, LOW);
    delay(phaseDifference);
    digitalWrite(led2, LOW);
    delay(rate - (onTime + phaseDifference));
  }
  else
  {
    digitalWrite(led1, HIGH);
    delay(onTime);
    digitalWrite(led1, LOW);

    delay(phaseDifference - onTime);

    digitalWrite(led2, HIGH);
    delay(onTime);
    digitalWrite(led2, LOW);

    delay(rate - (onTime + phaseDifference));
  }
}
}

my try is at the following:

const byte led1 = 2;
const byte led2 = 8;

unsigned long cycleCount = 0;

unsigned long previousMillis = 0;

void blink(unsigned long onTime, unsigned long phaseDifference,unsigned long rate,unsigned long repetitions)
{
  if(cycleCount < repetitions)
  {
  unsigned long timePassed = millis() - previousMillis;

  if (timePassed >= rate)
  {
    previousMillis = millis(); // Start a new cycle
    timePassed = 0;
    cycleCount++;
  }
  
  if (timePassed < onTime)
  {
    digitalWrite(led1, HIGH);
  }
  else
  {
    digitalWrite(led1, LOW);
  }
  if (timePassed >= phaseDifference && timePassed < (phaseDifference+onTime))
    digitalWrite(led2, HIGH);
  else
    digitalWrite(led2, LOW);
} else
{
  cycleCount = 0;
}
}

void setup()
{  
  Serial.begin(115200);
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
}

void loop() 
{ 
  

blink(50,0,500,10);
blink(500,50,1000,5);

}

what am I missing?
the two LED are constantly on