Skip to content

Commit e5db702

Browse files
authored
Merge pull request #2112 from ImranR98/dev
- GitLab URL parsing bugfix (#2106) - Tencent store bugfix (#2108) - Allow for MarkDown inside "about" app field (#2109)
2 parents 7da631e + 53451fd commit e5db702

File tree

6 files changed

+110
-87
lines changed

6 files changed

+110
-87
lines changed

.flutter

Submodule .flutter updated 11053 files

lib/app_sources/gitlab.dart

+5-1
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,12 @@ class GitLab extends AppSource {
5353

5454
@override
5555
String sourceSpecificStandardizeURL(String url, {bool forSelection = false}) {
56+
var urlSegments = url.split('/');
57+
var cutOffIndex = urlSegments.indexWhere((s) => s == '-');
58+
url =
59+
urlSegments.sublist(0, cutOffIndex <= 0 ? null : cutOffIndex).join('/');
5660
RegExp standardUrlRegEx = RegExp(
57-
'^https?://(www\\.)?${getSourceRegex(hosts)}/[^/]+(/[^/]+){1,20}',
61+
'^https?://(www\\.)?${getSourceRegex(hosts)}/[^/]+(/[^/-]+){1,20}',
5862
caseSensitive: false);
5963
RegExpMatch? match = standardUrlRegEx.firstMatch(url);
6064
if (match == null) {

lib/app_sources/tencent.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ class Tencent extends AppSource {
6464
var author = json['app_detail_records'][appId]['app_info']['author'];
6565
var releaseDate =
6666
json['app_detail_records'][appId]['app_info']['update_time'];
67+
var apkName = Uri.parse(apkUrl).queryParameters['fsname'] ??
68+
'${appId}_${version}.apk';
6769

6870
return APKDetails(
69-
version,
70-
[MapEntry(Uri.parse(apkUrl).queryParameters['fsname']!, apkUrl)],
71-
AppNames(author, appName),
71+
version, [MapEntry(apkName, apkUrl)], AppNames(author, appName),
7272
releaseDate: releaseDate != null
7373
? DateTime.fromMillisecondsSinceEpoch(releaseDate * 1000)
7474
: null);

lib/pages/app.dart

+32-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:easy_localization/easy_localization.dart';
22
import 'package:flutter/material.dart';
33
import 'package:flutter/services.dart';
4+
import 'package:flutter_markdown/flutter_markdown.dart';
45
import 'package:obtainium/components/generated_form_modal.dart';
56
import 'package:obtainium/custom_errors.dart';
67
import 'package:obtainium/main.dart';
@@ -12,6 +13,7 @@ import 'package:obtainium/providers/source_provider.dart';
1213
import 'package:url_launcher/url_launcher_string.dart';
1314
import 'package:webview_flutter/webview_flutter.dart';
1415
import 'package:provider/provider.dart';
16+
import 'package:markdown/markdown.dart' as md;
1517

1618
class AppPage extends StatefulWidget {
1719
const AppPage({super.key, required this.appId});
@@ -221,24 +223,41 @@ class _AppPageState extends State<AppPage> {
221223
if (app?.app.additionalSettings['about'] is String &&
222224
app?.app.additionalSettings['about'].isNotEmpty)
223225
Column(
226+
mainAxisSize: MainAxisSize.min,
224227
children: [
225228
const SizedBox(
226229
height: 48,
227230
),
228231
GestureDetector(
229-
onLongPress: () {
230-
Clipboard.setData(ClipboardData(
231-
text: app?.app.additionalSettings['about'] ?? ''));
232-
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
233-
content: Text(tr('copiedToClipboard')),
234-
));
235-
},
236-
child: Text(
237-
app?.app.additionalSettings['about'],
238-
textAlign: TextAlign.center,
239-
style: const TextStyle(fontStyle: FontStyle.italic),
240-
),
241-
)
232+
onLongPress: () {
233+
Clipboard.setData(ClipboardData(
234+
text: app?.app.additionalSettings['about'] ?? ''));
235+
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
236+
content: Text(tr('copiedToClipboard')),
237+
));
238+
},
239+
child: Markdown(
240+
physics: NeverScrollableScrollPhysics(),
241+
shrinkWrap: true,
242+
styleSheet: MarkdownStyleSheet(
243+
blockquoteDecoration:
244+
BoxDecoration(color: Theme.of(context).cardColor),
245+
textAlign: WrapAlignment.center),
246+
data: app?.app.additionalSettings['about'],
247+
onTapLink: (text, href, title) {
248+
if (href != null) {
249+
launchUrlString(href,
250+
mode: LaunchMode.externalApplication);
251+
}
252+
},
253+
extensionSet: md.ExtensionSet(
254+
md.ExtensionSet.gitHubFlavored.blockSyntaxes,
255+
[
256+
md.EmojiSyntax(),
257+
...md.ExtensionSet.gitHubFlavored.inlineSyntaxes
258+
],
259+
),
260+
))
242261
],
243262
),
244263
],

0 commit comments

Comments
 (0)