FPS Weapon Management?

Hello there!
If my title doesn’t explain it for you, here’s some detail.

Suppose I am a player with a gun. I get flashed on flashbang impact.
Now at this point, I want the viewmodel to disappear and the player shouldnt be able to shoot again, but then his viewmodel should come back once out of the flashed state.

Now one way I could do this is keep an RunService loop and then when flashed, I can send a remote event and then just Disconnect the runservice loop, and then start it again.

Now my question is,
what’s the best way to do this?