From 9f3afff273cb0fb8258b814e484ca057cced0ae8 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Tue, 9 Jan 2018 14:17:20 +0100 Subject: [PATCH] Separate homepage and repository for a package --- app/lib/frontend/model_properties.dart | 5 +++++ app/lib/frontend/models.dart | 12 ++++++++++++ app/lib/frontend/templates.dart | 10 ++++++---- app/lib/shared/utils.dart | 6 ++++++ app/test/frontend/golden/pkg_show_page.html | 1 + .../golden/pkg_show_page_flutter_plugin.html | 1 + app/test/frontend/golden/pkg_show_page_outdated.html | 1 + app/test/frontend/golden/pkg_show_version_page.html | 1 + app/views/pkg/show.mustache | 5 +++++ 9 files changed, 38 insertions(+), 4 deletions(-) diff --git a/app/lib/frontend/model_properties.dart b/app/lib/frontend/model_properties.dart index 9e1b62b94d..d7399d47de 100644 --- a/app/lib/frontend/model_properties.dart +++ b/app/lib/frontend/model_properties.dart @@ -78,6 +78,11 @@ class Pubspec { return _asString(_json['homepage']); } + String get repository { + _load(); + return _asString(_json['repository']); + } + String get description { _load(); return _asString(_json['description']); diff --git a/app/lib/frontend/models.dart b/app/lib/frontend/models.dart index 1361cc6008..1fd37433ff 100644 --- a/app/lib/frontend/models.dart +++ b/app/lib/frontend/models.dart @@ -205,10 +205,22 @@ class PackageVersion extends db.ExpandoModel { String get documentationNice => niceUrl(documentation); String get homepage { + if (pubspec.repository == null && isRepositoryUrl(pubspec.homepage)) { + return null; + } return pubspec.homepage; } String get homepageNice => niceUrl(homepage); + + String get repository { + if (pubspec.repository == null && isRepositoryUrl(pubspec.homepage)) { + return pubspec.homepage; + } + return pubspec.repository; + } + + String get repositoryNice => niceUrl(repository); } @db.Kind(name: 'PrivateKey', idType: db.IdType.String) diff --git a/app/lib/frontend/templates.dart b/app/lib/frontend/templates.dart index 4474ccfe4f..865b967d51 100644 --- a/app/lib/frontend/templates.dart +++ b/app/lib/frontend/templates.dart @@ -265,7 +265,7 @@ class TemplateService { if (selectedVersion.readme != null) { readmeFilename = selectedVersion.readme.filename; renderedReadme = - _renderFile(selectedVersion.readme, selectedVersion.homepage); + _renderFile(selectedVersion.readme, selectedVersion.repository); } String changelogFilename; @@ -273,7 +273,7 @@ class TemplateService { if (selectedVersion.changelog != null) { changelogFilename = selectedVersion.changelog.filename; renderedChangelog = - _renderFile(selectedVersion.changelog, selectedVersion.homepage); + _renderFile(selectedVersion.changelog, selectedVersion.repository); } String exampleFilename; @@ -281,7 +281,7 @@ class TemplateService { if (selectedVersion.example != null) { exampleFilename = selectedVersion.example.filename; renderedExample = - _renderFile(selectedVersion.example, selectedVersion.homepage); + _renderFile(selectedVersion.example, selectedVersion.repository); if (renderedExample != null) { renderedExample = '

' '${_htmlEscaper.convert(exampleFilename)}' @@ -346,6 +346,8 @@ class TemplateService { _getAuthorsHtml(selectedVersion.pubspec.getAllAuthors()), 'homepage': selectedVersion.homepage, 'nice_homepage': selectedVersion.homepageNice, + 'repository': selectedVersion.repository, + 'nice_repository': selectedVersion.repositoryNice, 'documentation': selectedVersion.documentation, 'nice_documentation': selectedVersion.documentationNice, // TODO: make this 'Uploaders' if Package.uploaders is > 1?! @@ -354,7 +356,7 @@ class TemplateService { 'short_created': selectedVersion.shortCreated, 'install_html': _renderInstall(isFlutterPackage, analysis?.platforms), 'license_html': - _renderLicenses(selectedVersion.homepage, analysis?.licenses), + _renderLicenses(selectedVersion.repository, analysis?.licenses), 'score_box_html': _renderScoreBox(extract?.overallScore, isOutdated: extract?.isOutdated, isNewPackage: package.isNewPackage()), diff --git a/app/lib/shared/utils.dart b/app/lib/shared/utils.dart index 8f604cdbb5..d10d2955ad 100644 --- a/app/lib/shared/utils.dart +++ b/app/lib/shared/utils.dart @@ -358,3 +358,9 @@ class StringInternPool { } } } + +bool isRepositoryUrl(String url) { + if (url == null) return false; + return url.startsWith('https://github.com/') || + url.startsWith('https://gitlab.com/'); +} diff --git a/app/test/frontend/golden/pkg_show_page.html b/app/test/frontend/golden/pkg_show_page.html index e9ccfaa41a..d0adfb8691 100644 --- a/app/test/frontend/golden/pkg_show_page.html +++ b/app/test/frontend/golden/pkg_show_page.html @@ -287,6 +287,7 @@

Author

Homepage

hans.juergen.com +

Documentation

www.dartdocs.org/documentation/foobar_pkg/0.1.1/ diff --git a/app/test/frontend/golden/pkg_show_page_flutter_plugin.html b/app/test/frontend/golden/pkg_show_page_flutter_plugin.html index 7249e5d98f..f9b1575338 100644 --- a/app/test/frontend/golden/pkg_show_page_flutter_plugin.html +++ b/app/test/frontend/golden/pkg_show_page_flutter_plugin.html @@ -252,6 +252,7 @@

Author

Homepage

hans.juergen.com +

Documentation

www.dartdocs.org/documentation/foobar_pkg/0.1.1/ diff --git a/app/test/frontend/golden/pkg_show_page_outdated.html b/app/test/frontend/golden/pkg_show_page_outdated.html index c8dd0d115b..734543224b 100644 --- a/app/test/frontend/golden/pkg_show_page_outdated.html +++ b/app/test/frontend/golden/pkg_show_page_outdated.html @@ -261,6 +261,7 @@

Author

Homepage

hans.juergen.com +

Documentation

www.dartdocs.org/documentation/foobar_pkg/0.1.1/ diff --git a/app/test/frontend/golden/pkg_show_version_page.html b/app/test/frontend/golden/pkg_show_version_page.html index 7fd607a7ac..99d691eb78 100644 --- a/app/test/frontend/golden/pkg_show_version_page.html +++ b/app/test/frontend/golden/pkg_show_version_page.html @@ -288,6 +288,7 @@

Author

Homepage

hans.juergen.com +

Documentation

www.dartdocs.org/documentation/foobar_pkg/0.1.1/ diff --git a/app/views/pkg/show.mustache b/app/views/pkg/show.mustache index 0315c63acc..154878795f 100644 --- a/app/views/pkg/show.mustache +++ b/app/views/pkg/show.mustache @@ -99,6 +99,11 @@ import 'package:{{package}}/{{library}}'; {{package.nice_homepage}} {{/package.homepage}} + {{#package.repository}} +

Repository

+ {{package.nice_repository}} + {{/package.repository}} + {{#package.documentation}}

Documentation

{{package.nice_documentation}}