public void HandleDeleteShapes(LitePeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var req = DeleteShapesRequest.Read(operationRequest.Parameters); var owner = req.initialOwnerId; var shapesBeingRemoved = _doc.GetShapes().Where(sh => sh.InitialOwner() == owner && sh.ShapeCode() != VdShapeType.Badge && sh.ShapeCode() != VdShapeType.Cluster && sh.ShapeCode() != VdShapeType.ClusterLink ); //check permissions foreach (var sr in shapesBeingRemoved) { if (!_doc.editingPermission(sr, owner)) { return; } } //ok, remove foreach (var sr in shapesBeingRemoved.ToArray()) { UnlockDeleteBroadcast(sr.Id(), req.ownerId); } _pendingChanges = true; }
public void SendDeleteShapesRequest(int ownerId, int initialOwnerId, int topicId) { if (peer == null || peer.PeerState != PeerStateValue.Connected) { return; } peer.OpCustom((byte)DiscussionOpCode.DeleteShapesRequest, DeleteShapesRequest.Write(ownerId, initialOwnerId, topicId), true); }