use Game.updatedAt when last move time is not available
cache unread messages longer