git-touch icon indicating copy to clipboard operation
git-touch copied to clipboard

Link to user profile in markdown

Open shreyas1599 opened this issue 5 years ago • 6 comments

Consider comment_item. I'm trying to add a link to the profile. For example, @shreyas1599 should link to my profile. I used a simple regex to do this:

body.replaceAllMapped(new RegExp(r"@[^\s]+"), (match) { return "[${match[0]}](https://github.com/${match[0] })";

A couple of questions:

  • Should I place this in markdown_view.dart or leave it in comment_item.dart itself?
  • Also in mardown_view.dart I see you've used a github prefix. For now, I could just push the relative path.
  • But in router.dart you've added a TODO: /github.
  • So should I try and replace all the existing github routes to use the prefix github or just push the relative path for now? Something like this: return Provider.of<ThemeModel>(context).push(context, "/${m['login']}");
  • I could first open a PR to change all the existing routes to use /github and then implement the above.

@pd4d10 I'd like your opinion on this. Thanks.

shreyas1599 avatar May 12 '20 09:05 shreyas1599

If the purpose is to replace @somebody with a link, it seems not enough to just tweak the onTapLink method.

We should add a plugin to flutter_markdown to identify the @somebody syntax, then turn it into a link.

pd4d10 avatar May 12 '20 10:05 pd4d10

But in router.dart you've added a TODO: /github.

Yeah, it is a legacy todo. We should open an issue for this: Add /github prefix to GitHub related screens, just like other platforms.

pd4d10 avatar May 12 '20 10:05 pd4d10

body.replaceAllMapped(new RegExp(r"@[^\s]+"), (match) { return "[${match[0]}](https://github.com/${match[0] })";

Oh, I missed this replacement process. This might also work but it seems more common to write a plugin for flutter_markdown

pd4d10 avatar May 12 '20 10:05 pd4d10

Sorry, I don't exactly understand. I've never written one before. By plugin do you mean, I use flutter_markdown and create a package that identifies the @ symbol and converts it into a link? Can you give an example of writing a plugin for a package?

shreyas1599 avatar May 16 '20 15:05 shreyas1599

MarkdownBody has a property named extensionSet: https://pub.dev/documentation/flutter_markdown/latest/flutter_markdown/MarkdownBody-class.html

For examples see: https://pub.dev/packages/markdown#syntax-extensions

pd4d10 avatar May 17 '20 04:05 pd4d10

There is also a legacy issue related to this: Rendering <img> tag correctly. <img> seems to be frequently used.

pd4d10 avatar May 17 '20 04:05 pd4d10