feels weird to have the `vibrate` logic duplicated in the same file.. shouldn't this be handled transparently by `RingView`?