diff --git a/lib/app_sources/sourceforge.dart b/lib/app_sources/sourceforge.dart index 2d976ea..ee2f22b 100644 --- a/lib/app_sources/sourceforge.dart +++ b/lib/app_sources/sourceforge.dart @@ -10,8 +10,14 @@ class SourceForge extends AppSource { @override String sourceSpecificStandardizeURL(String url) { - RegExp standardUrlRegEx = RegExp('^https?://$host/projects/[^/]+'); - RegExpMatch? match = standardUrlRegEx.firstMatch(url.toLowerCase()); + RegExp standardUrlRegExB = RegExp('^https?://$host/p/[^/]+'); + RegExpMatch? match = standardUrlRegExB.firstMatch(url.toLowerCase()); + if (match != null) { + url = + 'https://${Uri.parse(url.substring(0, match.end)).host}/projects/${url.substring(Uri.parse(url.substring(0, match.end)).host.length + '/projects/'.length + 1)}'; + } + RegExp standardUrlRegExA = RegExp('^https?://$host/projects/[^/]+'); + match = standardUrlRegExA.firstMatch(url.toLowerCase()); if (match == null) { throw InvalidURLError(name); } diff --git a/lib/main.dart b/lib/main.dart index 1c7caa6..056f3cc 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -21,21 +21,22 @@ import 'package:easy_localization/src/easy_localization_controller.dart'; // ignore: implementation_imports import 'package:easy_localization/src/localization.dart'; -const String currentVersion = '0.12.2'; +const String currentVersion = '0.12.3'; const String currentReleaseTag = 'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES const int bgUpdateCheckAlarmId = 666; -const supportedLocales = [ - Locale('en'), - Locale('zh'), - Locale('it'), - Locale('ja'), - Locale('hu'), - Locale('de'), - Locale('fa'), - Locale('fr') +List> supportedLocales = const [ + MapEntry(Locale('en'), 'English'), + MapEntry(Locale('zh'), '汉语'), + MapEntry(Locale('it'), 'Italiano'), + MapEntry(Locale('ja'), '日本語'), + MapEntry(Locale('hu'), 'Magyar'), + MapEntry(Locale('de'), 'Deutsch'), + MapEntry(Locale('fa'), 'فارسی'), + MapEntry(Locale('fr'), 'Français'), + MapEntry(Locale('es'), 'Español'), ]; const fallbackLocale = Locale('en'); const localeDir = 'assets/translations'; @@ -52,7 +53,7 @@ Future loadTranslations() async { saveLocale: true, forceLocale: forceLocale != null ? Locale(forceLocale) : null, fallbackLocale: fallbackLocale, - supportedLocales: supportedLocales, + supportedLocales: supportedLocales.map((e) => e.key).toList(), assetLoader: const RootBundleAssetLoader(), useOnlyLangCode: true, useFallbackTranslations: true, @@ -171,7 +172,7 @@ void main() async { Provider(create: (context) => LogsProvider()) ], child: EasyLocalization( - supportedLocales: supportedLocales, + supportedLocales: supportedLocales.map((e) => e.key).toList(), path: localeDir, fallbackLocale: fallbackLocale, useOnlyLangCode: true, @@ -221,7 +222,7 @@ class _ObtainiumState extends State { ], onlyIfExists: false); } if (!supportedLocales - .map((e) => e.languageCode) + .map((e) => e.key.languageCode) .contains(context.locale.languageCode) || settingsProvider.forcedLocale == null && context.deviceLocale.languageCode != diff --git a/lib/pages/settings.dart b/lib/pages/settings.dart index a3808e8..988fe85 100644 --- a/lib/pages/settings.dart +++ b/lib/pages/settings.dart @@ -144,8 +144,8 @@ class _SettingsPageState extends State { child: Text(tr('followSystem')), ), ...supportedLocales.map((e) => DropdownMenuItem( - value: e.toLanguageTag(), - child: Text(e.toLanguageTag().toUpperCase()), + value: e.key.toLanguageTag(), + child: Text(e.value), )) ], onChanged: (value) { diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index 872a083..2f03dfb 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -216,7 +216,7 @@ class SettingsProvider with ChangeNotifier { String? get forcedLocale { var fl = prefs?.getString('forcedLocale'); return supportedLocales - .where((element) => element.toLanguageTag() == fl) + .where((element) => element.key.toLanguageTag() == fl) .isNotEmpty ? fl : null; @@ -226,7 +226,7 @@ class SettingsProvider with ChangeNotifier { if (fl == null) { prefs?.remove('forcedLocale'); } else if (supportedLocales - .where((element) => element.toLanguageTag() == fl) + .where((element) => element.key.toLanguageTag() == fl) .isNotEmpty) { prefs?.setString('forcedLocale', fl); } diff --git a/pubspec.lock b/pubspec.lock index a3fbae7..0a80259 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -38,10 +38,10 @@ packages: dependency: transitive description: name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" + sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" async: dependency: transitive description: @@ -282,18 +282,18 @@ packages: dependency: "direct main" description: name: html - sha256: "79d498e6d6761925a34ee5ea8fa6dfef38607781d2fa91e37523474282af55cb" + sha256: "58e3491f7bf0b6a4ea5110c0c688877460d1a6366731155c4a4580e7ded773e8" url: "https://pub.dev" source: hosted - version: "0.15.2" + version: "0.15.3" http: dependency: "direct main" description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "0.13.6" http_parser: dependency: transitive description: @@ -338,10 +338,10 @@ packages: dependency: transitive description: name: markdown - sha256: d95a9d12954aafc97f984ca29baaa7690ed4d9ec4140a23ad40580bcdb6c87f5 + sha256: "8e332924094383133cee218b676871f42db2514f1f6ac617b6cf6152a7faab8e" url: "https://pub.dev" source: hosted - version: "7.0.2" + version: "7.1.0" matcher: dependency: transitive description: @@ -791,10 +791,10 @@ packages: dependency: transitive description: name: webview_flutter_android - sha256: d6cf18cd6c809c5a9294cd99707a21986aac4e08c87e1916ce2590315fb55d3a + sha256: "1acea8def62592123e2fbbca164ed8681a98a890bdcbb88f916d5b4a22687759" url: "https://pub.dev" source: hosted - version: "3.6.2" + version: "3.7.0" webview_flutter_platform_interface: dependency: transitive description: @@ -807,10 +807,10 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: c94d242d8cbe1012c06ba7ac790c46d6e6b68723b7d34f8c74ed19f68d166f49 + sha256: "61f33512810bf1ee9ac89761a4b02663ff64e8227b7dc80654642acd660fd49d" url: "https://pub.dev" source: hosted - version: "3.4.0" + version: "3.4.2" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 89e6ec6..1826128 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 0.12.2+162 # When changing this, update the tag in main() accordingly +version: 0.12.3+163 # When changing this, update the tag in main() accordingly environment: sdk: '>=2.18.2 <3.0.0'