private Task OnDeleteVisualization(MessageContainer obj)
        {
            MessageDeleteVisualization message = MessageDeleteVisualization.Unpack(obj);

            if (message != null)
            {
                DeleteVisualization(message.VisId, false);
            }

            return(Task.CompletedTask);
        }
        /// <summary>
        /// Deletes a single visualization with the provided <see cref="Guid"/>.
        /// </summary>
        /// <param name="visId">The <see cref="Guid"/> of the visualization.</param>
        /// <param name="syncWithRemote">Indicates whether the visualization should also be deleted on remote clients.</param>
        /// <returns>A bool indicating whether a visualization was successfully deleted.
        /// Returns <see langword="false"/> when there is no visualization with the provided <see cref="Guid"/>.</returns>
        public bool DeleteVisualization(Guid visId, bool syncWithRemote = true)
        {
            if (Visualizations.ContainsKey(visId))
            {
                var settings = Visualizations[visId].Settings;
                Visualizations[visId].Dispose();
                Visualizations.Remove(visId);
                if (syncWithRemote)
                {
                    var message = new MessageDeleteVisualization(visId);
                    Services.NetworkManager().SendMessage(message.Pack());
                }

                // send notification event that a vis was deleted
                VisualizationDeletedEventBroadcast.Invoke(settings);

                return(true);
            }

            return(false);
        }