WS2812B and remote

Hello. I have a WS2812B led strip and I want to switch between colors or animatios with a remote, but for example when I press the third button the leds start doing the animation and if I press the first button while it is still doing the animation to switch to color red I can’t because the IR sensor doesn’t even recieve any data from the remote. Can any of you help me, I’ll be very greatful.
Here is my code:

#include <FastLED.h>
#include <IRremote.h>
IRrecv irrecv (12);
#define LED_PIN   7
#define NUM_LEDS   90
CRGB leds [NUM_LEDS];
decode_results result;
void setup() {
  FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  Serial.begin (9600);
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode(&result)) {
    delay (50);
    Serial.println (result.value, HEX);
    irrecv.resume();
  }
  switch (result.value) {
    case 0xFF6897://Button 0
      fill_solid (leds, NUM_LEDS, CRGB(0, 191, 216));//Color Blue
      FastLED.show();
      break;
    case 0xFF30CF://Button 1
      fill_solid (leds, NUM_LEDS, CRGB(255, 0, 0));//Color Red
      FastLED.show();
      break;
    case 0xFF7A85://Button 3
      FadeInOut(0x00, 0xb4, 0xd8);//Color Light Blue
      FadeInOut(0xff, 0x2a, 0x00);//Color Red
      FadeInOut(0xff, 0x70, 0xb2);//Color Pink
      FadeInOut(0x30, 0xff, 0x59);//Color Green
      FadeInOut(0xed, 0xe5, 0x15);//Color Yellow
      FadeInOut(0x2a, 0x15, 0xed);//Color Dark Blue
      break ;

  }
}

void FadeInOut(byte red, byte green, byte blue) {
  float r, g, b;
  for (int k = 0; k < 256; k = k + 1) {
    delay (5);
    r = (k / 256.0) * red;
    g = (k / 256.0) * green;
    b = (k / 256.0) * blue;
    fill_solid (leds, NUM_LEDS, CRGB(r, g, b));
    FastLED.show();
  }

  for (int k = 255; k >= 0; k = k - 2) {
    delay (5);
    r = (k / 256.0) * red;
    g = (k / 256.0) * green;
    b = (k / 256.0) * blue;
    fill_solid (leds, NUM_LEDS, CRGB(r, g, b));
    FastLED.show();
  }
}

and if I press the first button while it is still doing the animation to switch to color red I can’t because the IR sensor doesn’t even recieve any data from the remote.

It is receiving data it is just that your code is not looking at it.

This is because you have written the code as blocking code. You need to write all the colour changing functions as a state machine. We answer this one several times a week, do a search for answers.

Start by reading this