Interrupt (RISING) - triggers twice

I would attach ONCE, in setup(), then leave it alone.
Use enable/disable within your code.

I haven’t tested to see what happens if you attach when the input is already high/low - but i’d be looking around there.
Unless you’re using multiple interrupt sources, there’s no real need to muck around with EIFR that I can see.