Merge pull request #1256 from matrix-org/luke/fix-rte-md-entity-weirdness
Instead of inserting MD for completion, convert the Entity laterpull/21833/head
						commit
						ff0741d435
					
				| 
						 | 
				
			
			@ -718,9 +718,31 @@ export default class MessageComposerInput extends React.Component {
 | 
			
		|||
                );
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            // Use the original plaintext because `contextText` has had mentions stripped
 | 
			
		||||
            // and these need to end up in contentHTML
 | 
			
		||||
            const md = new Markdown(contentState.getPlainText());
 | 
			
		||||
            // Use the original contentState because `contentText` has had mentions
 | 
			
		||||
            // stripped and these need to end up in contentHTML.
 | 
			
		||||
 | 
			
		||||
            // Replace all Entities of type `LINK` with markdown link equivalents.
 | 
			
		||||
            // TODO: move this into `Markdown` and do the same conversion in the other
 | 
			
		||||
            // two places (toggling from MD->RT mode and loading MD history into RT mode)
 | 
			
		||||
            // but this can only be done when history includes Entities.
 | 
			
		||||
            const pt = contentState.getBlocksAsArray().map((block) => {
 | 
			
		||||
                let blockText = block.getText();
 | 
			
		||||
                let offset = 0;
 | 
			
		||||
                this.findLinkEntities(block, (start, end) => {
 | 
			
		||||
                    const entity = Entity.get(block.getEntityAt(start));
 | 
			
		||||
                    if (entity.getType() !== 'LINK') {
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                    const text = blockText.slice(offset + start, offset + end);
 | 
			
		||||
                    const url = entity.getData().url;
 | 
			
		||||
                    const mdLink = `[${text}](${url})`;
 | 
			
		||||
                    blockText = blockText.slice(0, offset + start) + mdLink + blockText.slice(offset + end);
 | 
			
		||||
                    offset += mdLink.length - text.length;
 | 
			
		||||
                });
 | 
			
		||||
                return blockText;
 | 
			
		||||
            }).join('\n');
 | 
			
		||||
 | 
			
		||||
            const md = new Markdown(pt);
 | 
			
		||||
            if (md.isPlainText()) {
 | 
			
		||||
                contentText = md.toPlaintext();
 | 
			
		||||
            } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -916,9 +938,6 @@ export default class MessageComposerInput extends React.Component {
 | 
			
		|||
                url: href,
 | 
			
		||||
                isCompletion: true,
 | 
			
		||||
            });
 | 
			
		||||
            if (!this.state.isRichtextEnabled) {
 | 
			
		||||
                mdCompletion = `[${completion}](${href})`;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let selection;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue