join :: LocationId -> LocationAction LocationView
join locationId = do
    userId <- getCurrentUserId
    oldLocationId <- getUserLocation userId
    setLocation locationId userId
    onLeave oldLocationId
    onJoin locationId 
    view locationId
join :: LocationId -> LocationAction LocationView
join locationId = do
    userId <- getCurrentUserId
    oldLocationId <- getUserLocation userId
    setLocation locationId userId
    onLeave oldLocationId
    onJoin locationId 
    view locationId
join locationId = do
    userId <- getCurrentUserId
    oldLocationId <- getUserLocation userId
    setLocation locationId userId
    onLeave oldLocationId
    onJoin locationId 
    view locationId