mirror of
https://github.com/git-touch/git-touch
synced 2025-02-23 23:07:53 +01:00
feat: markdown view base path
This commit is contained in:
parent
716924d27d
commit
003263d955
@ -114,7 +114,8 @@ class ObjectScreen extends StatelessWidget {
|
||||
case 'markdown':
|
||||
return Padding(
|
||||
padding: CommonStyle.padding,
|
||||
child: MarkdownView(payload['text']),
|
||||
child: MarkdownView(payload['text'],
|
||||
basePaths: [owner, name, branch, ...paths]),
|
||||
);
|
||||
case 'svg':
|
||||
return SvgPicture.network(rawUrl);
|
||||
|
@ -334,7 +334,10 @@ class RepositoryScreen extends StatelessWidget {
|
||||
Container(
|
||||
padding: CommonStyle.padding,
|
||||
color: Colors.white,
|
||||
child: MarkdownView(readme),
|
||||
child: MarkdownView(
|
||||
readme,
|
||||
basePaths: [owner, name, branch ?? 'master'], // TODO:
|
||||
),
|
||||
),
|
||||
CommonStyle.verticalGap,
|
||||
],
|
||||
|
@ -2,17 +2,20 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||
import 'package:git_touch/models/theme.dart';
|
||||
import 'package:git_touch/screens/issue.dart';
|
||||
import 'package:git_touch/screens/object.dart';
|
||||
import 'package:git_touch/screens/repository.dart';
|
||||
import 'package:git_touch/screens/user.dart';
|
||||
import 'package:git_touch/utils/utils.dart';
|
||||
import 'package:primer/primer.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:uri/uri.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
class MarkdownView extends StatelessWidget {
|
||||
final String text;
|
||||
final List<String> basePaths;
|
||||
|
||||
MarkdownView(this.text);
|
||||
MarkdownView(this.text, {this.basePaths});
|
||||
|
||||
static const _basicStyle =
|
||||
TextStyle(fontSize: 16, color: PrimerColors.gray900, height: 1.5);
|
||||
@ -29,6 +32,27 @@ class MarkdownView extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
return MarkdownBody(
|
||||
onTapLink: (url) {
|
||||
if (basePaths != null &&
|
||||
!url.startsWith('https://') &&
|
||||
!url.startsWith('http://')) {
|
||||
// Treat as relative path
|
||||
|
||||
final x = basePaths.sublist(3).join('/');
|
||||
var y = path.join(x, url);
|
||||
if (y.startsWith('/')) y = y.substring(1);
|
||||
final paths = path.split(y);
|
||||
|
||||
return Provider.of<ThemeModel>(context).pushRoute(
|
||||
context,
|
||||
(_) => ObjectScreen(
|
||||
basePaths[0],
|
||||
basePaths[1],
|
||||
basePaths[2],
|
||||
paths: paths,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// TODO: Relative paths
|
||||
if (url.startsWith('https://github.com')) {
|
||||
Map<String, String> m;
|
||||
|
Loading…
x
Reference in New Issue
Block a user