View getting stuck when entering page for second time

Hello, I am using cordova maps plugin. I am facing a problem where if I enter my page once it works perfectly but if I leave the page and enter again, then it gets stuck in one of the steps. Idk what part of the code to post since it’s arround 2k lines of code. Has this happened to anyone?

Here is a video, the moment where I don’t show the phone’s screen is when I enter the map’s page, and then leave it and enter again (I can’t show anything else bec of privacy):

This started happening since I started to check if Bluetooth and GPS were on, if user accepted GPS permissions and if he had connection to Internet.

This is the code I use to check everything before loading the map, I have many detectors bec I was suggested to but I don’t really think they’re doing any good:

public ionViewWillEnter(): void {
    this.platform.ready().then(() => {
      this.insomnia.keepAwake();
      this.platform.registerBackButtonAction(() => this.navigating ? this.stopNavigation() : this.exitPage());

      this.checkPreconditions();

      this.events.subscribe("precondition:set", () => {
        if (this.isBluetoothOn && this.hasInternet && this.hasGPSPermission && this.isGPSOn) {
          this.start();
          if (!(this.detector as ViewRef).destroyed) this.detector.detectChanges();
        };
      });
    });
  }

  private checkPreconditions(): void {
    bluetoothSerial.isEnabled(() => {
      this.isBluetoothOn = true;
      this.events.publish("precondition:set");
    }, () => this.enableBluetooth());


    if (this.network.type == "none") {
      this.hasInternet = false;
      let connection = this.network.onConnect().subscribe(() => {
        this.hasInternet = true;
        this.events.publish("precondition:set");
        if (!(this.detector as ViewRef).destroyed) this.detector.detectChanges();
        connection.unsubscribe();
      });
    } else {
      this.hasInternet = true;
      this.events.publish("precondition:set");
    };

    this.requestGPSPermissions();


  }

  public requestGPSPermissions(): void {

    this.permissionsService.checkLocationPermissions().then(permissions => {
      this.hasGPSPermission = permissions;

      if (permissions) {
        this.events.publish("precondition:set");
        this.diagnostic.isLocationEnabled().then(on => {
          this.isGPSOn = on;

          if (on) this.events.publish("precondition:set");
          else this.turnGPSOn();
        })
      }

      if (!(this.detector as ViewRef).destroyed) this.detector.detectChanges();
    })
  }

  public turnGPSOn(): void {
    this.serviciosNativos.encenderGPS(undefined, false).subscribe(on => {
      this.isGPSOn = on;

      if (on) this.events.publish("precondition:set");

      if (!(this.detector as ViewRef).destroyed) this.detector.detectChanges();
    })
  }

  public enableBluetooth(): void {
    bluetoothSerial.enable(() => {
      this.isBluetoothOn = true;
      this.events.publish("precondition:set");
      if (!(this.detector as ViewRef).destroyed) this.detector.detectChanges();
    }, this.isBluetoothOn = false);

    if (!(this.detector as ViewRef).destroyed) this.detector.detectChanges();
  }

  private async start(): Promise<any> {
    if (!(this.detector as ViewRef).destroyed) this.detector.detectChanges();
    
    ...

    if (!(this.detector as ViewRef).destroyed) this.detector.detectChanges();
  }

Update: ok, appearently if I change the code to this, it works, so the problem is with events and permissions I assume?

public ionViewWillEnter(): void {
    this.platform.ready().then(() => {
      this.insomnia.keepAwake();
      this.platform.registerBackButtonAction(() => this.navigating ? this.stopNavigation() : this.exitPage());

      this.isBluetoothOn = true;
      this.isGPSOn = true;
      this.hasGPSPermission = true;
      this.hasInternet = true;
      this.start();
    });
  }