protected override bool Process(Package package) { EMailAccount account = package.Account; CRSMEmail message = package.Message; PXGraph graph = package.Graph; if (message.Body == null) { return(true); } if (message.NoteID == null) { return(false); } Guid noteID = message.NoteID.Value; var extractor = new PX.Data.ImageExtractor(); var body = message.Body; if (extractor.ExtractEmbedded(body, img => AddExtractedImage(graph, noteID, img), out var newBody, out var _)) { message.Body = newBody; } return(true); }
private void ExtractEmbeddedImages(out Action revertCallback) { revertCallback = null; Base.EnsureCachePersistence(typeof(TDocument)); var documentCache = Base.Caches[typeof(TDocument)]; object document = documentCache.Current; if (document == null) { return; } Guid?noteId = documentCache.GetValue(document, nameof(INotable.NoteID)) as Guid?; if (noteId == null) { return; } string html = documentCache.GetValue <THtmlField>(document) as string; if (String.IsNullOrEmpty(html)) { return; } var extractor = new PX.Data.ImageExtractor(); Action revertCallback_ = null; (string src, string title) getSrcAndTitle(PX.Data.ImageExtractor.ImageInfo img) { var(src, title, cb) = AddExtractedImage(noteId.Value, img); revertCallback_ += cb; return(src, title); }; try { if (extractor.ExtractEmbedded(html, getSrcAndTitle, out var newHtml, out var _)) { documentCache.SetValue <THtmlField>(document, newHtml); } } finally { revertCallback = revertCallback_ + (() => documentCache.SetValue <THtmlField>(documentCache.Current, html)); } }