You've already forked immich
mirror of
https://github.com/immich-app/immich.git
synced 2025-07-16 07:24:40 +02:00
fix(mobile): empty translation placeholders (#18063)
* fix: empty placeholders * fix: use namedArgs --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
@ -61,7 +61,8 @@ class AlbumThumbnailCard extends ConsumerWidget {
|
||||
if (album.ownerId == ref.read(currentUserProvider)?.id) {
|
||||
owner = 'owned'.tr();
|
||||
} else if (album.ownerName != null) {
|
||||
owner = 'album_thumbnail_shared_by'.tr(args: [album.ownerName!]);
|
||||
owner = 'album_thumbnail_shared_by'
|
||||
.tr(namedArgs: {'user': album.ownerName!});
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,10 +75,9 @@ class AlbumThumbnailCard extends ConsumerWidget {
|
||||
children: [
|
||||
TextSpan(
|
||||
text: album.assetCount == 1
|
||||
? 'album_thumbnail_card_item'
|
||||
.tr(args: ['${album.assetCount}'])
|
||||
? 'album_thumbnail_card_item'.tr()
|
||||
: 'album_thumbnail_card_items'
|
||||
.tr(args: ['${album.assetCount}']),
|
||||
.tr(namedArgs: {'count': '${album.assetCount}'}),
|
||||
),
|
||||
if (owner != null) const TextSpan(text: ' • '),
|
||||
if (owner != null) TextSpan(text: owner),
|
||||
|
@ -2,9 +2,9 @@ import 'package:auto_route/auto_route.dart';
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:immich_mobile/entities/album.entity.dart';
|
||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/entities/album.entity.dart';
|
||||
import 'package:immich_mobile/services/api.service.dart';
|
||||
import 'package:immich_mobile/utils/image_url_builder.dart';
|
||||
import 'package:openapi/api.dart';
|
||||
@ -96,7 +96,7 @@ class AlbumThumbnailListTile extends StatelessWidget {
|
||||
style: const TextStyle(
|
||||
fontSize: 12,
|
||||
),
|
||||
).tr(args: ['${album.assetCount}']),
|
||||
).tr(namedArgs: {'count': '${album.assetCount}'}),
|
||||
if (album.shared)
|
||||
const Text(
|
||||
'album_thumbnail_card_shared',
|
||||
|
@ -7,24 +7,24 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/extensions/collection_extensions.dart';
|
||||
import 'package:immich_mobile/providers/album/album.provider.dart';
|
||||
import 'package:immich_mobile/services/album.service.dart';
|
||||
import 'package:immich_mobile/services/stack.service.dart';
|
||||
import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
|
||||
import 'package:immich_mobile/models/asset_selection_state.dart';
|
||||
import 'package:immich_mobile/providers/multiselect.provider.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/immich_asset_grid.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/control_bottom_app_bar.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/entities/album.entity.dart';
|
||||
import 'package:immich_mobile/entities/asset.entity.dart';
|
||||
import 'package:immich_mobile/extensions/collection_extensions.dart';
|
||||
import 'package:immich_mobile/models/asset_selection_state.dart';
|
||||
import 'package:immich_mobile/providers/album/album.provider.dart';
|
||||
import 'package:immich_mobile/providers/asset.provider.dart';
|
||||
import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
|
||||
import 'package:immich_mobile/providers/multiselect.provider.dart';
|
||||
import 'package:immich_mobile/providers/user.provider.dart';
|
||||
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/services/album.service.dart';
|
||||
import 'package:immich_mobile/services/stack.service.dart';
|
||||
import 'package:immich_mobile/utils/immich_loading_overlay.dart';
|
||||
import 'package:immich_mobile/utils/selection_handlers.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/control_bottom_app_bar.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/immich_asset_grid.dart';
|
||||
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
||||
|
||||
class MultiselectGrid extends HookConsumerWidget {
|
||||
const MultiselectGrid({
|
||||
@ -190,8 +190,9 @@ class MultiselectGrid extends HookConsumerWidget {
|
||||
context: context,
|
||||
msg: force
|
||||
? 'assets_deleted_permanently'
|
||||
.tr(args: ["${selection.value.length}"])
|
||||
: 'assets_trashed'.tr(args: ["${selection.value.length}"]),
|
||||
.tr(namedArgs: {'count': "${selection.value.length}"})
|
||||
: 'assets_trashed'
|
||||
.tr(namedArgs: {'count': "${selection.value.length}"}),
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
selectionEnabledHook.value = false;
|
||||
@ -225,7 +226,7 @@ class MultiselectGrid extends HookConsumerWidget {
|
||||
ImmichToast.show(
|
||||
context: context,
|
||||
msg: 'assets_removed_permanently_from_device'
|
||||
.tr(args: ["$deletedCount"]),
|
||||
.tr(namedArgs: {'count': "$deletedCount"}),
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
|
||||
@ -254,8 +255,9 @@ class MultiselectGrid extends HookConsumerWidget {
|
||||
context: context,
|
||||
msg: shouldDeletePermanently
|
||||
? 'assets_deleted_permanently_from_server'
|
||||
.tr(args: ["${toDelete.length}"])
|
||||
: 'assets_trashed_from_server'.tr(args: ["${toDelete.length}"]),
|
||||
.tr(namedArgs: {'count': "${toDelete.length}"})
|
||||
: 'assets_trashed_from_server'
|
||||
.tr(namedArgs: {'count': "${toDelete.length}"}),
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
}
|
||||
|
@ -2,13 +2,13 @@ import 'package:auto_route/auto_route.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/entities/asset.entity.dart';
|
||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||
import 'package:immich_mobile/providers/asset_viewer/asset_people.provider.dart';
|
||||
import 'package:immich_mobile/models/search/search_curated_content.model.dart';
|
||||
import 'package:immich_mobile/providers/asset_viewer/asset_people.provider.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/widgets/search/curated_people_row.dart';
|
||||
import 'package:immich_mobile/widgets/search/person_name_edit_form.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/entities/asset.entity.dart';
|
||||
|
||||
class PeopleInfo extends ConsumerWidget {
|
||||
final Asset asset;
|
||||
@ -109,13 +109,13 @@ class PeopleInfo extends ConsumerWidget {
|
||||
|
||||
if (ageInMonths <= 11) {
|
||||
return "exif_bottom_sheet_person_age_months"
|
||||
.tr(args: [ageInMonths.toString()]);
|
||||
.tr(namedArgs: {'months': ageInMonths.toString()});
|
||||
} else if (ageInMonths > 12 && ageInMonths <= 23) {
|
||||
return "exif_bottom_sheet_person_age_year_months"
|
||||
.tr(args: [(ageInMonths - 12).toString()]);
|
||||
.tr(namedArgs: {'months': (ageInMonths - 12).toString()});
|
||||
} else {
|
||||
return "exif_bottom_sheet_person_age_years"
|
||||
.tr(args: [ageInYears.toString()]);
|
||||
.tr(namedArgs: {'years': ageInYears.toString()});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,9 +56,12 @@ class BackupAssetInfoTable extends ConsumerWidget {
|
||||
fontSize: 10.0,
|
||||
),
|
||||
).tr(
|
||||
args: isUploadInProgress
|
||||
? [asset.fileName, asset.fileType.toLowerCase()]
|
||||
: ["-", "-"],
|
||||
namedArgs: isUploadInProgress
|
||||
? {
|
||||
'filename': asset.fileName,
|
||||
'size': asset.fileType.toLowerCase(),
|
||||
}
|
||||
: {'filename': "-", 'size': "-"},
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -78,9 +81,11 @@ class BackupAssetInfoTable extends ConsumerWidget {
|
||||
fontSize: 10.0,
|
||||
),
|
||||
).tr(
|
||||
args: [
|
||||
isUploadInProgress ? _getAssetCreationDate(asset) : "-",
|
||||
],
|
||||
namedArgs: {
|
||||
'date': isUploadInProgress
|
||||
? _getAssetCreationDate(asset)
|
||||
: "-",
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -99,9 +104,7 @@ class BackupAssetInfoTable extends ConsumerWidget {
|
||||
fontSize: 10.0,
|
||||
),
|
||||
).tr(
|
||||
args: [
|
||||
isUploadInProgress ? asset.id : "-",
|
||||
],
|
||||
namedArgs: {'id': isUploadInProgress ? asset.id : "-"},
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -21,8 +21,6 @@ class BackupErrorChipText extends ConsumerWidget {
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 11,
|
||||
),
|
||||
).tr(
|
||||
args: [count.toString()],
|
||||
);
|
||||
).tr(namedArgs: {'count': count.toString()});
|
||||
}
|
||||
}
|
||||
|
@ -5,17 +5,17 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||
import 'package:immich_mobile/models/backup/backup_state.model.dart';
|
||||
import 'package:immich_mobile/providers/asset.provider.dart';
|
||||
import 'package:immich_mobile/providers/auth.provider.dart';
|
||||
import 'package:immich_mobile/providers/backup/backup.provider.dart';
|
||||
import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
|
||||
import 'package:immich_mobile/providers/auth.provider.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/providers/asset.provider.dart';
|
||||
import 'package:immich_mobile/providers/user.provider.dart';
|
||||
import 'package:immich_mobile/providers/websocket.provider.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/utils/bytes_units.dart';
|
||||
import 'package:immich_mobile/widgets/common/app_bar_dialog/app_bar_profile_info.dart';
|
||||
import 'package:immich_mobile/widgets/common/app_bar_dialog/app_bar_server_info.dart';
|
||||
import 'package:immich_mobile/widgets/common/confirm_dialog.dart';
|
||||
import 'package:immich_mobile/utils/bytes_units.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class ImmichAppBarDialog extends HookConsumerWidget {
|
||||
@ -200,10 +200,10 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
||||
padding: const EdgeInsets.only(top: 12.0),
|
||||
child:
|
||||
const Text('backup_controller_page_storage_format').tr(
|
||||
args: [
|
||||
usedDiskSpace,
|
||||
totalDiskSpace,
|
||||
],
|
||||
namedArgs: {
|
||||
'used': usedDiskSpace,
|
||||
'total': totalDiskSpace,
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -1,20 +1,21 @@
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/entities/asset.entity.dart';
|
||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||
import 'package:immich_mobile/extensions/collection_extensions.dart';
|
||||
import 'package:immich_mobile/providers/timeline.provider.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/immich_asset_grid.dart';
|
||||
import 'package:immich_mobile/models/map/map_event.model.dart';
|
||||
import 'package:immich_mobile/entities/asset.entity.dart';
|
||||
import 'package:immich_mobile/providers/db.provider.dart';
|
||||
import 'package:immich_mobile/widgets/common/drag_sheet.dart';
|
||||
import 'package:immich_mobile/providers/timeline.provider.dart';
|
||||
import 'package:immich_mobile/utils/color_filter_generator.dart';
|
||||
import 'package:immich_mobile/utils/throttle.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
|
||||
import 'package:immich_mobile/widgets/asset_grid/immich_asset_grid.dart';
|
||||
import 'package:immich_mobile/widgets/common/drag_sheet.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||
|
||||
@ -252,7 +253,8 @@ class _MapSheetDragRegion extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final assetsInBoundsText = assetsInBoundCount > 0
|
||||
? "map_assets_in_bounds".tr(args: [assetsInBoundCount.toString()])
|
||||
? "map_assets_in_bounds"
|
||||
.tr(namedArgs: {'count': assetsInBoundCount.toString()})
|
||||
: "map_no_assets_in_bounds".tr();
|
||||
|
||||
return SingleChildScrollView(
|
||||
|
@ -44,13 +44,13 @@ class MapTimeDropDown extends StatelessWidget {
|
||||
DropdownMenuEntry(
|
||||
value: 7,
|
||||
label: "map_settings_date_range_option_days".tr(
|
||||
args: ["7"],
|
||||
namedArgs: {'days': "7"},
|
||||
),
|
||||
),
|
||||
DropdownMenuEntry(
|
||||
value: 30,
|
||||
label: "map_settings_date_range_option_days".tr(
|
||||
args: ["30"],
|
||||
namedArgs: {'days': "30"},
|
||||
),
|
||||
),
|
||||
DropdownMenuEntry(
|
||||
@ -81,7 +81,8 @@ class MapTimeDropDown extends StatelessWidget {
|
||||
),
|
||||
)
|
||||
.inDays,
|
||||
label: "map_settings_date_range_option_years".tr(args: ["3"]),
|
||||
label: "map_settings_date_range_option_years"
|
||||
.tr(namedArgs: {'years': "3"}),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
@ -85,7 +85,8 @@ class AdvancedSettings extends HookConsumerWidget {
|
||||
},
|
||||
),
|
||||
SettingsSliderListTile(
|
||||
text: "advanced_settings_log_level_title".tr(args: [logLevel]),
|
||||
text: "advanced_settings_log_level_title"
|
||||
.tr(namedArgs: {'level': logLevel}),
|
||||
valueNotifier: levelId,
|
||||
maxValue: 8,
|
||||
minValue: 1,
|
||||
|
@ -3,10 +3,10 @@ import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/providers/app_settings.provider.dart';
|
||||
import 'package:immich_mobile/services/app_settings.service.dart';
|
||||
import 'package:immich_mobile/utils/hooks/app_settings_update_hook.dart';
|
||||
import 'package:immich_mobile/widgets/settings/settings_slider_list_tile.dart';
|
||||
import 'package:immich_mobile/widgets/settings/settings_sub_title.dart';
|
||||
import 'package:immich_mobile/widgets/settings/settings_switch_list_tile.dart';
|
||||
import 'package:immich_mobile/utils/hooks/app_settings_update_hook.dart';
|
||||
|
||||
class LayoutSettings extends HookConsumerWidget {
|
||||
const LayoutSettings({
|
||||
@ -30,7 +30,7 @@ class LayoutSettings extends HookConsumerWidget {
|
||||
SettingsSliderListTile(
|
||||
valueNotifier: tilesPerRow,
|
||||
text: 'theme_setting_asset_list_tiles_per_row_title'
|
||||
.tr(args: ["${tilesPerRow.value}"]),
|
||||
.tr(namedArgs: {'count': "${tilesPerRow.value}"}),
|
||||
label: "${tilesPerRow.value}",
|
||||
maxValue: 6,
|
||||
minValue: 2,
|
||||
|
@ -164,10 +164,14 @@ class _BackgroundSettingsEnabled extends HookConsumerWidget {
|
||||
switch (v) { 0 => 5000, 1 => 30000, 2 => 120000, _ => 600000 };
|
||||
|
||||
String formatBackupDelaySliderValue(int v) => switch (v) {
|
||||
0 => 'setting_notifications_notify_seconds'.tr(args: const ['5']),
|
||||
1 => 'setting_notifications_notify_seconds'.tr(args: const ['30']),
|
||||
2 => 'setting_notifications_notify_minutes'.tr(args: const ['2']),
|
||||
_ => 'setting_notifications_notify_minutes'.tr(args: const ['10']),
|
||||
0 => 'setting_notifications_notify_seconds'
|
||||
.tr(namedArgs: {'count': '5'}),
|
||||
1 => 'setting_notifications_notify_seconds'
|
||||
.tr(namedArgs: {'count': '30'}),
|
||||
2 => 'setting_notifications_notify_minutes'
|
||||
.tr(namedArgs: {'count': '2'}),
|
||||
_ => 'setting_notifications_notify_minutes'
|
||||
.tr(namedArgs: {'count': '10'}),
|
||||
};
|
||||
|
||||
final backupTriggerDelay =
|
||||
@ -221,7 +225,9 @@ class _BackgroundSettingsEnabled extends HookConsumerWidget {
|
||||
SettingsSliderListTile(
|
||||
valueNotifier: triggerDelay,
|
||||
text: 'backup_controller_page_background_delay'.tr(
|
||||
args: [formatBackupDelaySliderValue(triggerDelay.value)],
|
||||
namedArgs: {
|
||||
'duration': formatBackupDelaySliderValue(triggerDelay.value),
|
||||
},
|
||||
),
|
||||
maxValue: 3.0,
|
||||
noDivisons: 3,
|
||||
|
@ -1,9 +1,9 @@
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart' show useEffect, useState;
|
||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||
import 'package:immich_mobile/entities/duplicated_asset.entity.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/entities/duplicated_asset.entity.dart';
|
||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||
import 'package:immich_mobile/extensions/theme_extensions.dart';
|
||||
import 'package:immich_mobile/providers/db.provider.dart';
|
||||
|
||||
@ -35,7 +35,7 @@ class LocalStorageSettings extends HookConsumerWidget {
|
||||
style: context.textTheme.bodyLarge?.copyWith(
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
).tr(args: ["${cacheItemCount.value}"]),
|
||||
).tr(namedArgs: {'count': "${cacheItemCount.value}"}),
|
||||
subtitle: Text(
|
||||
"cache_settings_duplicated_assets_subtitle",
|
||||
style: context.textTheme.bodyMedium?.copyWith(
|
||||
|
@ -4,11 +4,11 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||
import 'package:immich_mobile/providers/notification_permission.provider.dart';
|
||||
import 'package:immich_mobile/services/app_settings.service.dart';
|
||||
import 'package:immich_mobile/utils/hooks/app_settings_update_hook.dart';
|
||||
import 'package:immich_mobile/widgets/settings/settings_button_list_tile.dart';
|
||||
import 'package:immich_mobile/widgets/settings/settings_slider_list_tile.dart';
|
||||
import 'package:immich_mobile/widgets/settings/settings_sub_page_scaffold.dart';
|
||||
import 'package:immich_mobile/widgets/settings/settings_switch_list_tile.dart';
|
||||
import 'package:immich_mobile/utils/hooks/app_settings_update_hook.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
|
||||
class NotificationSetting extends HookConsumerWidget {
|
||||
@ -90,7 +90,7 @@ class NotificationSetting extends HookConsumerWidget {
|
||||
enabled: hasPermission,
|
||||
valueNotifier: sliderValue,
|
||||
text: 'setting_notifications_notify_failures_grace_period'
|
||||
.tr(args: [formattedValue]),
|
||||
.tr(namedArgs: {'duration': formattedValue}),
|
||||
maxValue: 5.0,
|
||||
noDivisons: 5,
|
||||
label: formattedValue,
|
||||
@ -105,13 +105,14 @@ String _formatSliderValue(double v) {
|
||||
if (v == 0.0) {
|
||||
return 'setting_notifications_notify_immediately'.tr();
|
||||
} else if (v == 1.0) {
|
||||
return 'setting_notifications_notify_minutes'.tr(args: const ['30']);
|
||||
return 'setting_notifications_notify_minutes'
|
||||
.tr(namedArgs: {'count': '30'});
|
||||
} else if (v == 2.0) {
|
||||
return 'setting_notifications_notify_hours'.tr(args: const ['2']);
|
||||
return 'setting_notifications_notify_hours'.tr(namedArgs: {'count': '2'});
|
||||
} else if (v == 3.0) {
|
||||
return 'setting_notifications_notify_hours'.tr(args: const ['8']);
|
||||
return 'setting_notifications_notify_hours'.tr(namedArgs: {'count': '8'});
|
||||
} else if (v == 4.0) {
|
||||
return 'setting_notifications_notify_hours'.tr(args: const ['24']);
|
||||
return 'setting_notifications_notify_hours'.tr(namedArgs: {'count': '24'});
|
||||
} else {
|
||||
return 'setting_notifications_notify_never'.tr();
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -6,15 +7,15 @@ import 'package:flutter/services.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||
import 'package:immich_mobile/widgets/search/thumbnail_with_info.dart';
|
||||
import 'package:immich_mobile/models/shared_link/shared_link.model.dart';
|
||||
import 'package:immich_mobile/providers/server_info.provider.dart';
|
||||
import 'package:immich_mobile/providers/shared_link.provider.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/providers/server_info.provider.dart';
|
||||
import 'package:immich_mobile/widgets/common/confirm_dialog.dart';
|
||||
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
||||
import 'package:immich_mobile/utils/image_url_builder.dart';
|
||||
import 'package:immich_mobile/utils/url_helper.dart';
|
||||
import 'package:immich_mobile/widgets/common/confirm_dialog.dart';
|
||||
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
||||
import 'package:immich_mobile/widgets/search/thumbnail_with_info.dart';
|
||||
|
||||
class SharedLinkItem extends ConsumerWidget {
|
||||
final SharedLink sharedLink;
|
||||
@ -44,17 +45,17 @@ class SharedLinkItem extends ConsumerWidget {
|
||||
if (difference.inHours % 24 > 12) {
|
||||
dayDifference += 1;
|
||||
}
|
||||
expiresText =
|
||||
"shared_link_expires_days".tr(args: [dayDifference.toString()]);
|
||||
expiresText = "shared_link_expires_days"
|
||||
.tr(namedArgs: {'count': dayDifference.toString()});
|
||||
} else if (difference.inHours > 0) {
|
||||
expiresText = "shared_link_expires_hours"
|
||||
.tr(args: [difference.inHours.toString()]);
|
||||
.tr(namedArgs: {'count': difference.inHours.toString()});
|
||||
} else if (difference.inMinutes > 0) {
|
||||
expiresText = "shared_link_expires_minutes"
|
||||
.tr(args: [difference.inMinutes.toString()]);
|
||||
.tr(namedArgs: {'count': difference.inMinutes.toString()});
|
||||
} else if (difference.inSeconds > 0) {
|
||||
expiresText = "shared_link_expires_seconds"
|
||||
.tr(args: [difference.inSeconds.toString()]);
|
||||
.tr(namedArgs: {'count': difference.inSeconds.toString()});
|
||||
}
|
||||
}
|
||||
return Text(
|
||||
|
Reference in New Issue
Block a user