Skip to content

Commit 04dcf64

Browse files
authored
Merge pull request meld-cp#96 from meld-cp:meld-cp/issue93
Encrypting text in-place in a table breaks
2 parents 0b238e2 + 8123379 commit 04dcf64

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

src/features/feature-inplace-encrypt/FeatureInplaceEncrypt.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Editor, EditorPosition, Notice, Setting, MarkdownPostProcessorContext } from "obsidian";
1+
import { Editor, EditorPosition, Notice, Setting, MarkdownPostProcessorContext, MarkdownRenderer } from "obsidian";
22
import DecryptModal from "./DecryptModal";
33
import { IMeldEncryptPluginFeature } from "../IMeldEncryptPluginFeature";
44
import MeldEncrypt from "../../main";
@@ -12,8 +12,8 @@ import { Decryptable } from "./Decryptable";
1212

1313

1414

15-
const _PREFIX_B = '%%🔐 β ';
16-
const _PREFIX_B_VISIBLE = '🔐 β ';
15+
const _PREFIX_B = '%%🔐β ';
16+
const _PREFIX_B_VISIBLE = '🔐β ';
1717

1818
const _PREFIX_A = '%%🔐α ';
1919
const _PREFIX_A_VISIBLE = '🔐α ';
@@ -52,8 +52,9 @@ export default class FeatureInplaceEncrypt implements IMeldEncryptPluginFeature{
5252
this.pluginSettings = settings;
5353
this.featureSettings = settings.featureInplaceEncrypt;
5454

55-
56-
this.plugin.registerMarkdownPostProcessor( (el,ctx) => this.processEncryptedCodeBlockProcessor(el, ctx) );
55+
this.plugin.registerMarkdownPostProcessor(
56+
(el,ctx) => this.processEncryptedCodeBlockProcessor(el, ctx)
57+
);
5758

5859
plugin.addCommand({
5960
id: 'meld-encrypt',
@@ -75,7 +76,7 @@ export default class FeatureInplaceEncrypt implements IMeldEncryptPluginFeature{
7576

7677
}
7778

78-
private processEncryptedCodeBlockProcessor(el: HTMLElement, ctx: MarkdownPostProcessorContext){
79+
private async processEncryptedCodeBlockProcessor(el: HTMLElement, ctx: MarkdownPostProcessorContext){
7980

8081
const si = ctx.getSectionInfo(el);
8182
if (si == null){
@@ -111,25 +112,26 @@ export default class FeatureInplaceEncrypt implements IMeldEncryptPluginFeature{
111112
return;
112113
}
113114

114-
const textBeforeIndicator = InplaceTextHelper.extractTextBeforeMarker(text, markerStart );
115-
const textAfterIndicator = InplaceTextHelper.extractTextAfterMarker(text, markerEnd);
115+
const textBeforeIndicator = InplaceTextHelper.extractTextBeforeMarker( text, markerStart );
116+
const textAfterIndicator = InplaceTextHelper.extractTextAfterMarker( text, markerEnd );
116117

118+
const newMd = textBeforeIndicator
119+
+ '<span class="meld-encrypt-inline-reading-marker">🔐</span>'
120+
+ textAfterIndicator
121+
;
117122

118-
// create elements
119-
const elPreIndicator = createSpan( { text: textBeforeIndicator } );
120-
const elPostIndicator = createSpan( { text: textAfterIndicator } );
121-
122-
const elIndicator = createSpan( { text: '🔐', cls: 'meld-encrypt-inline-reading-marker' } );
123-
elIndicator.onClickEvent( async () =>
123+
el.empty();
124+
await MarkdownRenderer.renderMarkdown( newMd, el, ctx.sourcePath, this.plugin );
125+
126+
//console.debug( {el} );
127+
const elIndicator = el.querySelector('.meld-encrypt-inline-reading-marker') as HTMLSpanElement;
128+
elIndicator?.onClickEvent( async () =>
124129
await this.handleReadingIndicatorClick(
125130
ctx.sourcePath,
126131
selectionAnalysis.decryptable
127132
)
128133
);
129134

130-
el.empty();
131-
el.append( elPreIndicator, elIndicator, elPostIndicator );
132-
133135
}
134136

135137
private async handleReadingIndicatorClick( path: string, decryptable?:Decryptable ){

0 commit comments

Comments
 (0)