HiDeoo / intro.js-react

Intro.js react wrapper

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

stepIndex values differ between Windows and Apple-based devices at the end of the tour.

hiroshinishio opened this issue · comments

Describe the bug

stepIndex values differ between Windows and Apple-based devices at the end of the tour. So I had to do this workaround.

  const onExit = async (stepIndex: number) => {
    // It should be compared to steps.length -1, but at least in Windows, there is a weird quirk in the way the library counts indexes, so when there are n steps, the index just before Exit is somehow n.
    // In iOS, like Mac PC, iPad, and iPhone, stepIndex will be 'n - 1'.
    if (stepIndex === steps.length || stepIndex === steps.length - 1) {
      setStepEnabled(false);
      // Process that counts once the tour is completed to the end.
      const newNumberOfTimesCompleted = numberOfTimesCompleted + 1;
      setNumberOfTimesCompleted(newNumberOfTimesCompleted);
      await handleSubmitProductTour(
        docId,
        productTourName,
        newNumberOfTimesCompleted
      );
    }
  };

To Reproduce

To reproduce, prepare a Windows PC and a Mac PC (or iPad or iPhone) and try console logging stepIndex in the onExit function.

I was able to notice this because my fellow developer and I were using different operating systems. I don't think I would have noticed otherwise.

Expected behavior

I would like to see the same count for devices or rather operating systems.

How often does this bug happen?

Every time

System Info

PC Spec

Device

  • Device name DESKTOP-608QNA0
  • Processor Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz 1.61 GHz
  • Installed RAM 16.0 GB (15.8 GB usable)
  • System type 64-bit operating system, x64-based processor
  • Pen and touch No pen or touch input is available for this display

OS

  • Edition Windows 10 Home
  • Version 21H2
  • Installed on ‎3/‎27/‎2021
  • OS build 19044.1826
  • Experience Windows Feature Experience Pack 120.2212.4180.0

Browser

  • Chrome Version 104.0.5112.81 (Official Build) (64-bit)

Mobile Spec

Device and OS

  • Software Version: 15.5
  • Model Name: iPhone 13 Pro

Browser

  • Chrome Version 103.0.5060.63

Additional Context

I don't know if it is because of Intro.js-react or Intro.js.
So created the same issue for Intro.js too.
usablica/intro.js#1746

Thanks for the very detailed issue. This is definitely a weird one.

I think intro.js by default, at least according to the documentation, does not provide the step index to the exit callback. This may have been something I added because I needed it at the time but it looks like I'm not doing anything fancy with it, I just call the callback with the _currentStep provided by the intro.js instance:

https://github.com/HiDeoo/intro.js-react/blob/main/src/components/Steps/index.js#L116

I just tried to repro the issue using the small demo I have for this repository but was unable to repro, I always get on exit step index 1 logged on macOS Monterey & Windows 10.

Would you be able to try it and see if you can repro on your end using this demo? https://codesandbox.io/s/citpdf

If not, would you be able to provide a repro of the issue?

If you're still having this issue, feel free to re-open with a small repro example.