using ElectronNET.API.Entities; using ElectronNET.API.Serialization; using System; using System.Text.Json; namespace ElectronNET.API { /// /// Query and modify a session's cookies. /// public class Cookies { /// /// Gets the identifier. /// /// /// The identifier. /// public int Id { get; private set; } internal Cookies(int id) { Id = id; } /// /// Emitted when a cookie is changed because it was added, edited, removed, or expired. /// public event Action OnChanged { add { if (_changed == null) { BridgeConnector.Socket.On("webContents-session-cookies-changed" + Id, (args) => { var e = args.EnumerateArray().GetEnumerator(); e.MoveNext(); var cookie = e.Current.Deserialize(ElectronJson.Options); e.MoveNext(); var cause = e.Current.Deserialize(ElectronJson.Options); e.MoveNext(); var removed = e.Current.GetBoolean(); _changed(cookie, cause, removed); }); BridgeConnector.Socket.Emit("register-webContents-session-cookies-changed", Id); } _changed += value; } remove { _changed -= value; if (_changed == null) BridgeConnector.Socket.Off("webContents-session-cookies-changed" + Id); } } private event Action _changed; } }