This commit makes the messages of the timer feature to be proxied by
akka-apps and also adds a timer model that is updated based on these
messages.
Moving the timer panel opening logic to the timer button component in
the navigation panel was a consequence of these changes.
Prevents the client from updating its time offset when the time returned
from the server is zero, which is the default returned value when there
is no userId.
This would make the client to calculate a gigantic negative time offset
leading the timer to reach the end prematurely/instantaneously.
Sets conditions for calling play and stop music to avoid being called
repeatedly.
Groups all stop calls into a point to make the code cleaner.
Avoid recreating new audio tag whenever the timer song changes.
Filters users collection by 'online' connection status and describes when/how
server detects that the timer has ended to automatically stop it.
Also, fixed a corner case that when timer alarm was disabled, clients didn't
notify that the timer ended.
When user enters meeting with music already playing, an event listener is set
to play the music only after user interaction.
Also, to keep timer more cohesive and reduce complexity of the condition for
playing music, timer automatically stops after 90% of users notify that the
timer has expired.
Adds a music player for ambient sound which can be turned on and off using a
toggle located inside timer panel. When stopwatch is selected, this toggle is
automattically turned off.