mirror of
https://github.com/immich-app/immich.git
synced 2025-01-21 00:52:43 -05:00
refactor combat message
This commit is contained in:
parent
a8a63b24d0
commit
3760782d7f
2 changed files with 72 additions and 53 deletions
|
@ -16,7 +16,6 @@ import 'package:immich_mobile/providers/asset.provider.dart';
|
||||||
import 'package:immich_mobile/providers/authentication.provider.dart';
|
import 'package:immich_mobile/providers/authentication.provider.dart';
|
||||||
import 'package:immich_mobile/providers/backup/backup.provider.dart';
|
import 'package:immich_mobile/providers/backup/backup.provider.dart';
|
||||||
import 'package:immich_mobile/providers/server_info.provider.dart';
|
import 'package:immich_mobile/providers/server_info.provider.dart';
|
||||||
import 'package:immich_mobile/utils/version_compatibility.dart';
|
|
||||||
import 'package:immich_mobile/widgets/common/immich_logo.dart';
|
import 'package:immich_mobile/widgets/common/immich_logo.dart';
|
||||||
import 'package:immich_mobile/widgets/common/immich_title_text.dart';
|
import 'package:immich_mobile/widgets/common/immich_title_text.dart';
|
||||||
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
||||||
|
@ -27,8 +26,8 @@ import 'package:immich_mobile/widgets/forms/login/login_button.dart';
|
||||||
import 'package:immich_mobile/widgets/forms/login/o_auth_login_button.dart';
|
import 'package:immich_mobile/widgets/forms/login/o_auth_login_button.dart';
|
||||||
import 'package:immich_mobile/widgets/forms/login/password_input.dart';
|
import 'package:immich_mobile/widgets/forms/login/password_input.dart';
|
||||||
import 'package:immich_mobile/widgets/forms/login/server_endpoint_input.dart';
|
import 'package:immich_mobile/widgets/forms/login/server_endpoint_input.dart';
|
||||||
|
import 'package:immich_mobile/widgets/forms/login/version_compatibility_warning.dart';
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
|
|
||||||
class LoginForm extends HookConsumerWidget {
|
class LoginForm extends HookConsumerWidget {
|
||||||
|
@ -54,31 +53,10 @@ class LoginForm extends HookConsumerWidget {
|
||||||
final logoAnimationController = useAnimationController(
|
final logoAnimationController = useAnimationController(
|
||||||
duration: const Duration(seconds: 60),
|
duration: const Duration(seconds: 60),
|
||||||
)..repeat();
|
)..repeat();
|
||||||
final serverInfo = ref.watch(serverInfoProvider);
|
|
||||||
final warningMessage = useState<String?>(null);
|
|
||||||
final loginFormKey = GlobalKey<FormState>();
|
final loginFormKey = GlobalKey<FormState>();
|
||||||
final ValueNotifier<String?> serverEndpoint = useState<String?>(null);
|
final ValueNotifier<String?> serverEndpoint = useState<String?>(null);
|
||||||
|
|
||||||
checkVersionMismatch() async {
|
|
||||||
try {
|
|
||||||
final packageInfo = await PackageInfo.fromPlatform();
|
|
||||||
final appVersion = packageInfo.version;
|
|
||||||
final appMajorVersion = int.parse(appVersion.split('.')[0]);
|
|
||||||
final appMinorVersion = int.parse(appVersion.split('.')[1]);
|
|
||||||
final serverMajorVersion = serverInfo.serverVersion.major;
|
|
||||||
final serverMinorVersion = serverInfo.serverVersion.minor;
|
|
||||||
|
|
||||||
warningMessage.value = getVersionCompatibilityMessage(
|
|
||||||
appMajorVersion,
|
|
||||||
appMinorVersion,
|
|
||||||
serverMajorVersion,
|
|
||||||
serverMinorVersion,
|
|
||||||
);
|
|
||||||
} catch (error) {
|
|
||||||
warningMessage.value = 'Error checking version compatibility';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Fetch the server login credential and enables oAuth login if necessary
|
/// Fetch the server login credential and enables oAuth login if necessary
|
||||||
/// Returns true if successful, false otherwise
|
/// Returns true if successful, false otherwise
|
||||||
Future<bool> getServerLoginCredential() async {
|
Future<bool> getServerLoginCredential() async {
|
||||||
|
@ -340,40 +318,12 @@ class LoginForm extends HookConsumerWidget {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
buildVersionCompatWarning() {
|
|
||||||
checkVersionMismatch();
|
|
||||||
|
|
||||||
if (warningMessage.value == null) {
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.only(bottom: 8.0),
|
|
||||||
child: Container(
|
|
||||||
padding: const EdgeInsets.all(16),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color:
|
|
||||||
context.isDarkTheme ? Colors.red.shade700 : Colors.red.shade100,
|
|
||||||
borderRadius: BorderRadius.circular(8),
|
|
||||||
border: Border.all(
|
|
||||||
color:
|
|
||||||
context.isDarkTheme ? Colors.red.shade900 : Colors.red[200]!,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
child: Text(
|
|
||||||
warningMessage.value!,
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
buildLogin() {
|
buildLogin() {
|
||||||
return AutofillGroup(
|
return AutofillGroup(
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
children: [
|
||||||
buildVersionCompatWarning(),
|
const VersionCompatibilityWarning(),
|
||||||
Text(
|
Text(
|
||||||
sanitizeUrl(serverEndpointController.text),
|
sanitizeUrl(serverEndpointController.text),
|
||||||
style: context.textTheme.displaySmall,
|
style: context.textTheme.displaySmall,
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
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/providers/server_info.provider.dart';
|
||||||
|
import 'package:immich_mobile/utils/version_compatibility.dart';
|
||||||
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
|
|
||||||
|
class VersionCompatibilityWarning extends HookConsumerWidget {
|
||||||
|
const VersionCompatibilityWarning({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
|
final warningMessage = useState<String?>(null);
|
||||||
|
final serverInfo = ref.watch(serverInfoProvider);
|
||||||
|
|
||||||
|
checkVersionMismatch() async {
|
||||||
|
try {
|
||||||
|
final packageInfo = await PackageInfo.fromPlatform();
|
||||||
|
final appVersion = packageInfo.version;
|
||||||
|
final appMajorVersion = int.parse(appVersion.split('.')[0]);
|
||||||
|
final appMinorVersion = int.parse(appVersion.split('.')[1]);
|
||||||
|
final serverMajorVersion = serverInfo.serverVersion.major;
|
||||||
|
final serverMinorVersion = serverInfo.serverVersion.minor;
|
||||||
|
|
||||||
|
warningMessage.value = getVersionCompatibilityMessage(
|
||||||
|
appMajorVersion,
|
||||||
|
appMinorVersion,
|
||||||
|
serverMajorVersion,
|
||||||
|
serverMinorVersion,
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
warningMessage.value = 'Error checking version compatibility';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(
|
||||||
|
() {
|
||||||
|
checkVersionMismatch();
|
||||||
|
return () {};
|
||||||
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
|
return warningMessage.value == null
|
||||||
|
? const SizedBox.shrink()
|
||||||
|
: Padding(
|
||||||
|
padding: const EdgeInsets.only(bottom: 8.0),
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: context.isDarkTheme
|
||||||
|
? Colors.red.shade700
|
||||||
|
: Colors.red.shade100,
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
border: Border.all(
|
||||||
|
color: context.isDarkTheme
|
||||||
|
? Colors.red.shade900
|
||||||
|
: Colors.red[200]!,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
warningMessage.value!,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue