minor fixes

This commit is contained in:
Thibault Deckers 2022-11-05 19:33:11 +01:00
parent 8d2ab89cb4
commit b6050edfb8
10 changed files with 35 additions and 45 deletions

View file

@ -1,4 +1,6 @@
# cf guide: http://flutter.dev/go/i18n-user-guide # cf guides:
# http://flutter.dev/go/i18n-user-guide
# https://docs.flutter.dev/development/accessibility-and-localization/internationalization
# use defaults to: # use defaults to:
# - parse ARB files from `lib/l10n` # - parse ARB files from `lib/l10n`

View file

@ -4,6 +4,7 @@ import 'package:aves/model/settings/enums/coordinate_format.dart';
import 'package:aves/model/settings/enums/enums.dart'; import 'package:aves/model/settings/enums/enums.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/aves_app.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves_map/aves_map.dart'; import 'package:aves_map/aves_map.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -59,7 +60,7 @@ class CoordinateFilter extends CollectionFilter {
bool get exclusiveProp => false; bool get exclusiveProp => false;
@override @override
String get universalLabel => _formatBounds(lookupAppLocalizations(AppLocalizations.supportedLocales.first), CoordinateFormat.decimal); String get universalLabel => _formatBounds(lookupAppLocalizations(AvesApp.supportedLocales.first), CoordinateFormat.decimal);
@override @override
String getLabel(BuildContext context) => _formatBounds(context.l10n, context.read<Settings>().coordinateFormat); String getLabel(BuildContext context) => _formatBounds(context.l10n, context.read<Settings>().coordinateFormat);

View file

@ -2,7 +2,6 @@ import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:math'; import 'dart:math';
import 'package:aves/l10n/l10n.dart';
import 'package:aves/model/actions/entry_actions.dart'; import 'package:aves/model/actions/entry_actions.dart';
import 'package:aves/model/actions/entry_set_actions.dart'; import 'package:aves/model/actions/entry_set_actions.dart';
import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/filters/filters.dart';
@ -12,6 +11,7 @@ import 'package:aves/model/settings/enums/map_style.dart';
import 'package:aves/model/source/enums/enums.dart'; import 'package:aves/model/source/enums/enums.dart';
import 'package:aves/services/common/optional_event_channel.dart'; import 'package:aves/services/common/optional_event_channel.dart';
import 'package:aves/services/common/services.dart'; import 'package:aves/services/common/services.dart';
import 'package:aves/widgets/aves_app.dart';
import 'package:aves_map/aves_map.dart'; import 'package:aves_map/aves_map.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -283,7 +283,7 @@ class Settings extends ChangeNotifier {
preferredLocales.addAll(_systemLocalesFallback); preferredLocales.addAll(_systemLocalesFallback);
} }
} }
_appliedLocale = basicLocaleListResolution(preferredLocales, AppLocalizations.supportedLocales); _appliedLocale = basicLocaleListResolution(preferredLocales, AvesApp.supportedLocales);
} }
return _appliedLocale!; return _appliedLocale!;
} }

View file

@ -48,6 +48,9 @@ import 'package:tuple/tuple.dart';
class AvesApp extends StatefulWidget { class AvesApp extends StatefulWidget {
final AppFlavor flavor; final AppFlavor flavor;
// temporary exclude locales not ready yet for prime time
static final _unsupportedLocales = {'fa', 'gl', 'nb', 'pl'}.map(Locale.new).toSet();
static final List<Locale> supportedLocales = AppLocalizations.supportedLocales.where((v) => !_unsupportedLocales.contains(v)).toList();
static final GlobalKey<NavigatorState> navigatorKey = GlobalKey(debugLabel: 'app-navigator'); static final GlobalKey<NavigatorState> navigatorKey = GlobalKey(debugLabel: 'app-navigator');
// do not monitor all `ModalRoute`s, which would include popup menus, // do not monitor all `ModalRoute`s, which would include popup menus,
@ -225,7 +228,7 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
themeMode: themeBrightness.appThemeMode, themeMode: themeBrightness.appThemeMode,
locale: settingsLocale, locale: settingsLocale,
localizationsDelegates: AppLocalizations.localizationsDelegates, localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales, supportedLocales: AvesApp.supportedLocales,
// TODO TLAD remove custom scroll behavior when this is fixed: https://github.com/flutter/flutter/issues/82906 // TODO TLAD remove custom scroll behavior when this is fixed: https://github.com/flutter/flutter/issues/82906
scrollBehavior: StretchMaterialScrollBehavior(), scrollBehavior: StretchMaterialScrollBehavior(),
); );

View file

@ -1,8 +1,8 @@
import 'dart:collection'; import 'dart:collection';
import 'package:aves/l10n/l10n.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/widgets/aves_app.dart';
import 'package:aves/widgets/common/basic/query_bar.dart'; import 'package:aves/widgets/common/basic/query_bar.dart';
import 'package:aves/widgets/common/basic/reselectable_radio_list_tile.dart'; import 'package:aves/widgets/common/basic/reselectable_radio_list_tile.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
@ -123,7 +123,7 @@ class _LocaleSelectionPageState extends State<LocaleSelectionPage> {
} }
LinkedHashMap<Locale, String> _getLocaleOptions(BuildContext context) { LinkedHashMap<Locale, String> _getLocaleOptions(BuildContext context) {
final displayLocales = AppLocalizations.supportedLocales.map((locale) => MapEntry(locale, LocaleTile.getLocaleName(locale))).toList()..sort((a, b) => compareAsciiUpperCase(a.value, b.value)); final displayLocales = AvesApp.supportedLocales.map((locale) => MapEntry(locale, LocaleTile.getLocaleName(locale))).toList()..sort((a, b) => compareAsciiUpperCase(a.value, b.value));
return LinkedHashMap.of({ return LinkedHashMap.of({
LocaleTile.systemLocaleOption: context.l10n.settingsSystemDefault, LocaleTile.systemLocaleOption: context.l10n.settingsSystemDefault,

View file

@ -3,9 +3,13 @@ import 'package:test/test.dart';
void main() { void main() {
test('Video date parsing', () { test('Video date parsing', () {
final localOffset = DateTime.now().timeZoneOffset; DateTime shiftTimeZoneOffset(DateTime date) {
// local time zone offset may not be the same across time (because of DST),
// so we cannot reliably use `DateTime.now().timeZoneOffset`
return date.add(date.timeZoneOffset);
}
expect(VideoMetadataFormatter.parseVideoDate('2011-05-08T03:46+09:00'), DateTime(2011, 5, 7, 18, 46).add(localOffset).millisecondsSinceEpoch); expect(VideoMetadataFormatter.parseVideoDate('2011-05-08T03:46+09:00'), shiftTimeZoneOffset(DateTime(2011, 5, 7, 18, 46)).millisecondsSinceEpoch);
expect(VideoMetadataFormatter.parseVideoDate('UTC 2021-05-30 19:14:21'), DateTime(2021, 5, 30, 19, 14, 21).millisecondsSinceEpoch); expect(VideoMetadataFormatter.parseVideoDate('UTC 2021-05-30 19:14:21'), DateTime(2021, 5, 30, 19, 14, 21).millisecondsSinceEpoch);
expect(VideoMetadataFormatter.parseVideoDate('2021/10/31 21:23:17'), DateTime(2021, 10, 31, 21, 23, 17).millisecondsSinceEpoch); expect(VideoMetadataFormatter.parseVideoDate('2021/10/31 21:23:17'), DateTime(2021, 10, 31, 21, 23, 17).millisecondsSinceEpoch);
expect(VideoMetadataFormatter.parseVideoDate('2021-09-10T7:14:49 pmZ'), DateTime(2021, 9, 10, 19, 14, 49).millisecondsSinceEpoch); expect(VideoMetadataFormatter.parseVideoDate('2021-09-10T7:14:49 pmZ'), DateTime(2021, 9, 10, 19, 14, 49).millisecondsSinceEpoch);

View file

@ -1,10 +1,11 @@
import 'package:aves/l10n/l10n.dart'; import 'package:aves/l10n/l10n.dart';
import 'package:aves/utils/file_utils.dart'; import 'package:aves/utils/file_utils.dart';
import 'package:aves/widgets/aves_app.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
void main() { void main() {
test('format file size', () { test('format file size', () {
final l10n = lookupAppLocalizations(AppLocalizations.supportedLocales.first); final l10n = lookupAppLocalizations(AvesApp.supportedLocales.first);
final locale = l10n.localeName; final locale = l10n.localeName;
expect(formatFileSize(locale, 1024), '1.00 KB'); expect(formatFileSize(locale, 1024), '1.00 KB');
expect(formatFileSize(locale, 1536), '1.50 KB'); expect(formatFileSize(locale, 1536), '1.50 KB');

View file

@ -1,12 +1,13 @@
import 'package:aves/l10n/l10n.dart'; import 'package:aves/l10n/l10n.dart';
import 'package:aves/model/settings/enums/coordinate_format.dart'; import 'package:aves/model/settings/enums/coordinate_format.dart';
import 'package:aves/widgets/aves_app.dart';
import 'package:aves_map/aves_map.dart'; import 'package:aves_map/aves_map.dart';
import 'package:latlong2/latlong.dart'; import 'package:latlong2/latlong.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
void main() { void main() {
test('Decimal degrees to DMS (sexagesimal)', () { test('Decimal degrees to DMS (sexagesimal)', () {
final l10n = lookupAppLocalizations(AppLocalizations.supportedLocales.first); final l10n = lookupAppLocalizations(AvesApp.supportedLocales.first);
expect(ExtraCoordinateFormat.toDMS(l10n, LatLng(37.496667, 127.0275)), ['37° 29 48.00″ N', '127° 1 39.00″ E']); // Gangnam expect(ExtraCoordinateFormat.toDMS(l10n, LatLng(37.496667, 127.0275)), ['37° 29 48.00″ N', '127° 1 39.00″ E']); // Gangnam
expect(ExtraCoordinateFormat.toDMS(l10n, LatLng(78.9243503, 11.9230465)), ['78° 55 27.66″ N', '11° 55 22.97″ E']); // Ny-Ålesund expect(ExtraCoordinateFormat.toDMS(l10n, LatLng(78.9243503, 11.9230465)), ['78° 55 27.66″ N', '11° 55 22.97″ E']); // Ny-Ålesund
expect(ExtraCoordinateFormat.toDMS(l10n, LatLng(-38.6965891, 175.9830047)), ['38° 41 47.72″ S', '175° 58 58.82″ E']); // Taupo expect(ExtraCoordinateFormat.toDMS(l10n, LatLng(-38.6965891, 175.9830047)), ['38° 41 47.72″ S', '175° 58 58.82″ E']); // Taupo

View file

@ -17,13 +17,17 @@ void main() {
}); });
test('Parse dates', () { test('Parse dates', () {
final localOffset = DateTime.now().timeZoneOffset; DateTime shiftTimeZoneOffset(DateTime date) {
// local time zone offset may not be the same across time (because of DST),
// so we cannot reliably use `DateTime.now().timeZoneOffset`
return date.add(date.timeZoneOffset);
}
expect(parseUnknownDateFormat('1600995564713'), DateTime(2020, 9, 25, 0, 59, 24, 713).add(localOffset)); expect(parseUnknownDateFormat('1600995564713'), shiftTimeZoneOffset(DateTime(2020, 9, 25, 0, 59, 24, 713)));
expect(parseUnknownDateFormat('pre1600995564713suf'), DateTime(2020, 9, 25, 0, 59, 24, 713).add(localOffset)); expect(parseUnknownDateFormat('pre1600995564713suf'), shiftTimeZoneOffset(DateTime(2020, 9, 25, 0, 59, 24, 713)));
expect(parseUnknownDateFormat('1600995564'), DateTime(2020, 9, 25, 0, 59, 24, 0).add(localOffset)); expect(parseUnknownDateFormat('1600995564'), shiftTimeZoneOffset(DateTime(2020, 9, 25, 0, 59, 24, 0)));
expect(parseUnknownDateFormat('pre1600995564suf'), DateTime(2020, 9, 25, 0, 59, 24, 0).add(localOffset)); expect(parseUnknownDateFormat('pre1600995564suf'), shiftTimeZoneOffset(DateTime(2020, 9, 25, 0, 59, 24, 0)));
expect(parseUnknownDateFormat('IMG_20210901_142523_783'), DateTime(2021, 9, 1, 14, 25, 23, 783)); expect(parseUnknownDateFormat('IMG_20210901_142523_783'), DateTime(2021, 9, 1, 14, 25, 23, 783));
expect(parseUnknownDateFormat('Screenshot_20211028-115056_Aves'), DateTime(2021, 10, 28, 11, 50, 56, 0)); expect(parseUnknownDateFormat('Screenshot_20211028-115056_Aves'), DateTime(2021, 10, 28, 11, 50, 56, 0));

View file

@ -16,14 +16,7 @@
], ],
"es": [ "es": [
"widgetOpenPageHome", "settingsAllowMediaManagement"
"widgetOpenPageCollection",
"widgetOpenPageViewer",
"editEntryLocationDialogSetCustom",
"settingsAllowMediaManagement",
"tagEditorSectionPlaceholders",
"tagPlaceholderCountry",
"tagPlaceholderPlace"
], ],
"fa": [ "fa": [
@ -608,14 +601,6 @@
"filePickerUseThisFolder" "filePickerUseThisFolder"
], ],
"fr": [
"editEntryLocationDialogSetCustom",
"settingsAllowMediaManagement",
"tagEditorSectionPlaceholders",
"tagPlaceholderCountry",
"tagPlaceholderPlace"
],
"gl": [ "gl": [
"accessibilityAnimationsRemove", "accessibilityAnimationsRemove",
"accessibilityAnimationsKeep", "accessibilityAnimationsKeep",
@ -1089,6 +1074,7 @@
], ],
"it": [ "it": [
"widgetOpenPageCollection",
"editEntryLocationDialogSetCustom", "editEntryLocationDialogSetCustom",
"settingsAllowMediaManagement", "settingsAllowMediaManagement",
"tagEditorSectionPlaceholders", "tagEditorSectionPlaceholders",
@ -1136,14 +1122,6 @@
"tagPlaceholderPlace" "tagPlaceholderPlace"
], ],
"ko": [
"editEntryLocationDialogSetCustom",
"settingsAllowMediaManagement",
"tagEditorSectionPlaceholders",
"tagPlaceholderCountry",
"tagPlaceholderPlace"
],
"nb": [ "nb": [
"videoActionCaptureFrame", "videoActionCaptureFrame",
"videoActionSelectStreams", "videoActionSelectStreams",
@ -1768,11 +1746,7 @@
], ],
"ru": [ "ru": [
"editEntryLocationDialogSetCustom", "settingsAllowMediaManagement"
"settingsAllowMediaManagement",
"tagEditorSectionPlaceholders",
"tagPlaceholderCountry",
"tagPlaceholderPlace"
], ],
"tr": [ "tr": [