feat(mobile): cosmetic update

This commit is contained in:
Alex 2022-10-14 16:17:14 -05:00 committed by GitHub
commit a7f14dc103
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 64 additions and 39 deletions

View File

@ -46,7 +46,7 @@
"backup_controller_page_backup_sub": "Backed up photos and videos", "backup_controller_page_backup_sub": "Backed up photos and videos",
"backup_controller_page_cancel": "Cancel", "backup_controller_page_cancel": "Cancel",
"backup_controller_page_created": "Created on: {}", "backup_controller_page_created": "Created on: {}",
"backup_controller_page_desc_backup": "Turn on backup to automatically upload new assets to the server.", "backup_controller_page_desc_backup": "Turn on foreground backup to automatically upload new assets to the server when opening the app.",
"backup_controller_page_excluded": "Excluded: ", "backup_controller_page_excluded": "Excluded: ",
"backup_controller_page_failed": "Failed ({})", "backup_controller_page_failed": "Failed ({})",
"backup_controller_page_filename": "File name: {} [{}]", "backup_controller_page_filename": "File name: {} [{}]",
@ -58,14 +58,14 @@
"backup_controller_page_select": "Select", "backup_controller_page_select": "Select",
"backup_controller_page_server_storage": "Server Storage", "backup_controller_page_server_storage": "Server Storage",
"backup_controller_page_start_backup": "Start Backup", "backup_controller_page_start_backup": "Start Backup",
"backup_controller_page_status_off": "Backup is off", "backup_controller_page_status_off": "Automatic foreground backup is off",
"backup_controller_page_status_on": "Backup is on", "backup_controller_page_status_on": "Automatic foreground backup is on",
"backup_controller_page_storage_format": "{} of {} used", "backup_controller_page_storage_format": "{} of {} used",
"backup_controller_page_to_backup": "Albums to be backup", "backup_controller_page_to_backup": "Albums to be backup",
"backup_controller_page_total": "Total", "backup_controller_page_total": "Total",
"backup_controller_page_total_sub": "All unique photos and videos from selected albums", "backup_controller_page_total_sub": "All unique photos and videos from selected albums",
"backup_controller_page_turn_off": "Turn off Backup", "backup_controller_page_turn_off": "Turn off foreground backup",
"backup_controller_page_turn_on": "Turn on Backup", "backup_controller_page_turn_on": "Turn on foreground backup",
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
@ -172,4 +172,4 @@
"version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89", "version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89",
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"experimental_settings_subtitle": "Use at your own risk!" "experimental_settings_subtitle": "Use at your own risk!"
} }

View File

@ -7,7 +7,6 @@ import 'package:flutter/services.dart';
import 'package:flutter_displaymode/flutter_displaymode.dart'; import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:hive_flutter/hive_flutter.dart'; import 'package:hive_flutter/hive_flutter.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/immich_colors.dart';
import 'package:immich_mobile/constants/locales.dart'; import 'package:immich_mobile/constants/locales.dart';
import 'package:immich_mobile/modules/backup/background_service/background.service.dart'; import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
import 'package:immich_mobile/modules/backup/models/hive_backup_albums.model.dart'; import 'package:immich_mobile/modules/backup/models/hive_backup_albums.model.dart';

View File

@ -3,7 +3,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/immich_colors.dart';
import 'package:immich_mobile/modules/album/providers/album.provider.dart'; import 'package:immich_mobile/modules/album/providers/album.provider.dart';
import 'package:immich_mobile/modules/album/providers/album_viewer.provider.dart'; import 'package:immich_mobile/modules/album/providers/album_viewer.provider.dart';
import 'package:immich_mobile/modules/album/providers/asset_selection.provider.dart'; import 'package:immich_mobile/modules/album/providers/asset_selection.provider.dart';

View File

@ -151,7 +151,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
actions: [ actions: [
TextButton( TextButton(
style: TextButton.styleFrom( style: TextButton.styleFrom(
primary: Theme.of(context).primaryColor, foregroundColor: Theme.of(context).primaryColor,
), ),
onPressed: onPressed:
sharedUsersList.value.isEmpty ? null : _createSharedAlbum, sharedUsersList.value.isEmpty ? null : _createSharedAlbum,

View File

@ -1,5 +1,6 @@
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_swipe_detector/flutter_swipe_detector.dart'; import 'package:flutter_swipe_detector/flutter_swipe_detector.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
@ -111,6 +112,9 @@ class GalleryViewerPage extends HookConsumerWidget {
: const BouncingScrollPhysics(), : const BouncingScrollPhysics(),
itemCount: assetList.length, itemCount: assetList.length,
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
onPageChanged: (value) {
HapticFeedback.selectionClick();
},
itemBuilder: (context, index) { itemBuilder: (context, index) {
initState(index); initState(index);

View File

@ -21,7 +21,9 @@ Future<bool> loadTranslations() async {
await controller.loadTranslations(); await controller.loadTranslations();
return Localization.load(controller.locale, return Localization.load(
translations: controller.translations, controller.locale,
fallbackTranslations: controller.fallbackTranslations); translations: controller.translations,
fallbackTranslations: controller.fallbackTranslations,
);
} }

View File

@ -16,8 +16,8 @@ class AlbumPreviewPage extends HookConsumerWidget {
final assets = useState<List<AssetEntity>>([]); final assets = useState<List<AssetEntity>>([]);
_getAssetsInAlbum() async { _getAssetsInAlbum() async {
assets.value = assets.value = await album.getAssetListRange(
await album.getAssetListRange(start: 0, end: album.assetCount); start: 0, end: await album.assetCountAsync);
} }
useEffect( useEffect(
@ -34,7 +34,7 @@ class AlbumPreviewPage extends HookConsumerWidget {
title: Column( title: Column(
children: [ children: [
Text( Text(
"${album.name} (${album.assetCount})", "${album.name} (${album.assetCountAsync})",
style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold), style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
), ),
Padding( Padding(

View File

@ -158,7 +158,6 @@ class BackupControllerPage extends HookConsumerWidget {
} }
void _showBatteryOptimizationInfoToUser() { void _showBatteryOptimizationInfoToUser() {
final buttonTextColor = Theme.of(context).primaryColor;
showDialog<void>( showDialog<void>(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
@ -173,13 +172,14 @@ class BackupControllerPage extends HookConsumerWidget {
).tr(), ).tr(),
), ),
actions: [ actions: [
OutlinedButton( ElevatedButton(
onPressed: () => launchUrl( onPressed: () => launchUrl(
Uri.parse('https://dontkillmyapp.com'), Uri.parse('https://dontkillmyapp.com'),
mode: LaunchMode.externalApplication, mode: LaunchMode.externalApplication,
), ),
child: const Text( child: const Text(
"backup_controller_page_background_battery_info_link", "backup_controller_page_background_battery_info_link",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 12),
).tr(), ).tr(),
), ),
ElevatedButton( ElevatedButton(
@ -220,7 +220,12 @@ class BackupControllerPage extends HookConsumerWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if (!isBackgroundEnabled) if (!isBackgroundEnabled)
const Text("backup_controller_page_background_description").tr(), Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child:
const Text("backup_controller_page_background_description")
.tr(),
),
if (isBackgroundEnabled) if (isBackgroundEnabled)
SwitchListTile( SwitchListTile(
title: title:

View File

@ -11,7 +11,7 @@ class DeleteDialog extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
return AlertDialog( return AlertDialog(
backgroundColor: Colors.grey[200], // backgroundColor: Colors.grey[200],
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
title: const Text("delete_dialog_title").tr(), title: const Text("delete_dialog_title").tr(),
content: const Text("delete_dialog_alert").tr(), content: const Text("delete_dialog_alert").tr(),
@ -20,9 +20,12 @@ class DeleteDialog extends ConsumerWidget {
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
child: const Text( child: Text(
"delete_dialog_cancel", "delete_dialog_cancel",
style: TextStyle(color: Colors.blueGrey), style: TextStyle(
color: Theme.of(context).primaryColor,
fontWeight: FontWeight.bold,
),
).tr(), ).tr(),
), ),
TextButton( TextButton(
@ -32,7 +35,10 @@ class DeleteDialog extends ConsumerWidget {
}, },
child: Text( child: Text(
"delete_dialog_ok", "delete_dialog_ok",
style: TextStyle(color: Colors.red[400]), style: TextStyle(
color: Colors.red[400],
fontWeight: FontWeight.bold,
),
).tr(), ).tr(),
), ),
], ],

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/hive_box.dart'; import 'package:immich_mobile/constants/hive_box.dart';
@ -120,6 +121,7 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
.delete(savedLoginInfoKey); .delete(savedLoginInfoKey);
} }
} catch (e) { } catch (e) {
HapticFeedback.vibrate();
debugPrint("Error logging in $e"); debugPrint("Error logging in $e");
return false; return false;
} }

View File

@ -142,8 +142,8 @@ class ChangePasswordButton extends ConsumerWidget {
return ElevatedButton( return ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
visualDensity: VisualDensity.standard, visualDensity: VisualDensity.standard,
primary: Theme.of(context).primaryColor, backgroundColor: Theme.of(context).primaryColor,
onPrimary: Colors.grey[50], foregroundColor: Colors.grey[50],
elevation: 2, elevation: 2,
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 25), padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 25),
), ),

View File

@ -203,8 +203,8 @@ class LoginButton extends ConsumerWidget {
return ElevatedButton( return ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
visualDensity: VisualDensity.standard, visualDensity: VisualDensity.standard,
primary: Theme.of(context).primaryColor, backgroundColor: Theme.of(context).primaryColor,
onPrimary: Colors.grey[50], foregroundColor: Colors.grey[50],
elevation: 2, elevation: 2,
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 25), padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 25),
), ),

View File

@ -1,6 +1,7 @@
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart'; import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/routing/router.dart';
@ -44,6 +45,7 @@ class TabControllerPage extends ConsumerWidget {
), ),
currentIndex: tabsRouter.activeIndex, currentIndex: tabsRouter.activeIndex,
onTap: (index) { onTap: (index) {
HapticFeedback.selectionClick();
tabsRouter.setActiveIndex(index); tabsRouter.setActiveIndex(index);
}, },
items: [ items: [

View File

@ -103,8 +103,8 @@ class VersionAnnouncementOverlay extends HookConsumerWidget {
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
shape: const StadiumBorder(), shape: const StadiumBorder(),
visualDensity: VisualDensity.standard, visualDensity: VisualDensity.standard,
primary: Colors.indigo, backgroundColor: Colors.indigo,
onPrimary: Colors.grey[50], foregroundColor: Colors.grey[50],
elevation: 2, elevation: 2,
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
vertical: 10, vertical: 10,

View File

@ -25,9 +25,11 @@ String getImageUrl(final AssetResponseDto asset) {
return '${box.get(serverEndpointKey)}/asset/file?aid=${asset.deviceAssetId}&did=${asset.deviceId}&isThumb=false'; return '${box.get(serverEndpointKey)}/asset/file?aid=${asset.deviceAssetId}&did=${asset.deviceId}&isThumb=false';
} }
String _getThumbnailUrl(final String id, String _getThumbnailUrl(
{ThumbnailFormat type = ThumbnailFormat.WEBP}) { final String id, {
ThumbnailFormat type = ThumbnailFormat.WEBP,
}) {
final box = Hive.box(userInfoBox); final box = Hive.box(userInfoBox);
return '${box.get(serverEndpointKey)}/asset/thumbnail/${id}?format=${type.value}'; return '${box.get(serverEndpointKey)}/asset/thumbnail/$id?format=${type.value}';
} }

View File

@ -72,8 +72,8 @@ ThemeData immichDarkTheme = ThemeData(
cardColor: Colors.grey[900], cardColor: Colors.grey[900],
elevatedButtonTheme: ElevatedButtonThemeData( elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
onPrimary: Colors.black87, foregroundColor: Colors.black87,
primary: immichDarkThemePrimaryColor, backgroundColor: immichDarkThemePrimaryColor,
), ),
), ),
); );
@ -126,8 +126,8 @@ ThemeData immichLightTheme = ThemeData(
), ),
elevatedButtonTheme: ElevatedButtonThemeData( elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
primary: Colors.indigo, backgroundColor: Colors.indigo,
onPrimary: Colors.white, foregroundColor: Colors.white,
), ),
), ),
); );

View File

@ -112,8 +112,10 @@ class ImmichCacheInfoRepository extends ImmichCacheRepository {
} }
@override @override
Future<CacheObject> insert(CacheObject cacheObject, Future<CacheObject> insert(
{bool setTouchedToNow = true}) async { CacheObject cacheObject, {
bool setTouchedToNow = true,
}) async {
int newId = keyLookupHiveBox.length == 0 int newId = keyLookupHiveBox.length == 0
? 0 ? 0
: keyLookupHiveBox.values.reduce(max) + 1; : keyLookupHiveBox.values.reduce(max) + 1;
@ -144,8 +146,10 @@ class ImmichCacheInfoRepository extends ImmichCacheRepository {
} }
@override @override
Future<int> update(CacheObject cacheObject, Future<int> update(
{bool setTouchedToNow = true}) async { CacheObject cacheObject, {
bool setTouchedToNow = true,
}) async {
if (cacheObject.id != null) { if (cacheObject.id != null) {
cacheObjectLookupBox.put(cacheObject.id, cacheObject.toMap()); cacheObjectLookupBox.put(cacheObject.id, cacheObject.toMap());
return 1; return 1;