From babe4e2d806bea76bdae54afaf90bd8076726bf2 Mon Sep 17 00:00:00 2001 From: Aigio Liu Date: Sat, 24 Jul 2021 23:21:15 +0800 Subject: [PATCH] fix --- .../Services/Mvvm/AuthService.cs | 7 +---- .../Pages/LocalAuthPageViewModel.shared.cs | 22 +++++++------- .../Properties/AndroidManifest.xml | 2 +- .../fragment_local_auth_import_steam_user.xml | 1 + .../Extensions/ZXingExtensions.cs | 30 ++++++++++++++++++- .../LocalAuthPage/SteamAuthDataActivity.cs | 2 +- .../LocalAuthPage/SteamAuthTradeActivity.cs | 3 ++ .../LocalAuthPage/LocalAuthFragment.cs | 4 +-- .../UI/MainApplication.cs | 7 ++++- 9 files changed, 56 insertions(+), 22 deletions(-) diff --git a/src/ST.Client.Desktop/Services/Mvvm/AuthService.cs b/src/ST.Client.Desktop/Services/Mvvm/AuthService.cs index 1565b1f64..e41b80e3e 100644 --- a/src/ST.Client.Desktop/Services/Mvvm/AuthService.cs +++ b/src/ST.Client.Desktop/Services/Mvvm/AuthService.cs @@ -43,13 +43,8 @@ namespace System.Application.Services await InitializeAsync(auths, isSync); } - public async Task InitializeAsync(GameAccountPlatformAuthenticator[] auths, bool isSync = false, Action? emptyAction = null) + public async Task InitializeAsync(GameAccountPlatformAuthenticator[] auths, bool isSync = false) { - if (!auths.Any_Nullable()) - { - emptyAction?.Invoke(); - return; - } var hasPassword = repository.HasSecondaryPassword(auths); List list; if (hasPassword) diff --git a/src/ST.Client.Desktop/UI/ViewModels/Pages/LocalAuthPageViewModel.shared.cs b/src/ST.Client.Desktop/UI/ViewModels/Pages/LocalAuthPageViewModel.shared.cs index d4adc6ed3..a5a8a93cd 100644 --- a/src/ST.Client.Desktop/UI/ViewModels/Pages/LocalAuthPageViewModel.shared.cs +++ b/src/ST.Client.Desktop/UI/ViewModels/Pages/LocalAuthPageViewModel.shared.cs @@ -94,7 +94,10 @@ namespace System.Application.UI.ViewModels public bool IsAuthenticatorsEmpty => !AuthService.Current.Authenticators.Items.Any_Nullable(); - public bool IsAuthenticatorsEmptyAndHasPassword => SourceAuthCount > 0 && IsAuthenticatorsEmpty == true; + [Obsolete("use IsAuthenticatorsEmptyButHasSourceAuths")] // AndHasPassword ??? + public bool IsAuthenticatorsEmptyAndHasPassword => SourceAuthCount > 0 && IsAuthenticatorsEmpty; + + public bool IsAuthenticatorsEmptyButHasSourceAuths => SourceAuthCount > 0 && IsAuthenticatorsEmpty; public int SourceAuthCount { get; set; } @@ -135,20 +138,19 @@ namespace System.Application.UI.ViewModels var auths = await AuthService.Current.Repository.GetAllSourceAsync(); SourceAuthCount = auths.Length; //if (IsFirstActivation) - if (IsAuthenticatorsEmptyAndHasPassword) + if (IsAuthenticatorsEmptyButHasSourceAuths) { await Task.Run(async () => { - await AuthService.Current.InitializeAsync(auths -#if __MOBILE__ - , emptyAction: () => - { - IsFirstLoadedAuthenticatorsEmpty = true; - } -#endif - ); + await AuthService.Current.InitializeAsync(auths); }); } +#if __MOBILE__ + else + { + IsFirstLoadedAuthenticatorsEmpty = true; + } +#endif base.Activation(); } diff --git a/src/ST.Client.Mobile.Droid.App/Properties/AndroidManifest.xml b/src/ST.Client.Mobile.Droid.App/Properties/AndroidManifest.xml index ab580b1cc..b376a1571 100644 --- a/src/ST.Client.Mobile.Droid.App/Properties/AndroidManifest.xml +++ b/src/ST.Client.Mobile.Droid.App/Properties/AndroidManifest.xml @@ -1,7 +1,7 @@ - + diff --git a/src/ST.Client.Mobile.Droid.Design/ui/src/main/res/layout/fragment_local_auth_import_steam_user.xml b/src/ST.Client.Mobile.Droid.Design/ui/src/main/res/layout/fragment_local_auth_import_steam_user.xml index d46af9344..0967bc072 100644 --- a/src/ST.Client.Mobile.Droid.Design/ui/src/main/res/layout/fragment_local_auth_import_steam_user.xml +++ b/src/ST.Client.Mobile.Droid.Design/ui/src/main/res/layout/fragment_local_auth_import_steam_user.xml @@ -37,6 +37,7 @@ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginTop="@dimen/activity_vertical_margin" app:endIconMode="clear_text" tools:hint="Steam用户名" xamarin:managedType="Google.Android.Material.TextField.TextInputLayout"> diff --git a/src/ST.Client.Mobile.Droid/Extensions/ZXingExtensions.cs b/src/ST.Client.Mobile.Droid/Extensions/ZXingExtensions.cs index 01441ab8f..176f599d4 100644 --- a/src/ST.Client.Mobile.Droid/Extensions/ZXingExtensions.cs +++ b/src/ST.Client.Mobile.Droid/Extensions/ZXingExtensions.cs @@ -1,3 +1,7 @@ +using System.Collections.Generic; +using System.Linq; +using Xamarin.Essentials; +using ZXing; using ZXing.Mobile; using ZXingResult = ZXing.Result; @@ -20,7 +24,31 @@ namespace System scanner.BottomText = "Wait for the barcode to automatically scan!"; //Start scanning - var result = await scanner.Scan(); + var result = await scanner.Scan(new() + { + // https://github.com/Redth/ZXing.Net.Mobile/issues/808#issuecomment-835089415 + PossibleFormats = new List() { BarcodeFormat.QR_CODE }, + CameraResolutionSelector = new((List availableResolutions) => + { + CameraResolution? result = null; + + double aspectTolerance = 0.1; + var displayOrientationHeight = DeviceDisplay.MainDisplayInfo.Orientation == DisplayOrientation.Portrait ? DeviceDisplay.MainDisplayInfo.Height : DeviceDisplay.MainDisplayInfo.Width; + var displayOrientationWidth = DeviceDisplay.MainDisplayInfo.Orientation == DisplayOrientation.Portrait ? DeviceDisplay.MainDisplayInfo.Width : DeviceDisplay.MainDisplayInfo.Height; + + var targetRatio = displayOrientationHeight / displayOrientationWidth; + var targetHeight = displayOrientationHeight; + var minDiff = double.MaxValue; + + foreach (var r in availableResolutions.Where(r => Math.Abs(((double)r.Width / r.Height) - targetRatio) < aspectTolerance)) + { + if (Math.Abs(r.Height - targetHeight) < minDiff) + minDiff = Math.Abs(r.Height - targetHeight); + result = r; + } + return result; + }) + }); if (result == null) return; handleScanResult(result); diff --git a/src/ST.Client.Mobile.Droid/UI/Activities/LocalAuthPage/SteamAuthDataActivity.cs b/src/ST.Client.Mobile.Droid/UI/Activities/LocalAuthPage/SteamAuthDataActivity.cs index 027863901..e846a6354 100644 --- a/src/ST.Client.Mobile.Droid/UI/Activities/LocalAuthPage/SteamAuthDataActivity.cs +++ b/src/ST.Client.Mobile.Droid/UI/Activities/LocalAuthPage/SteamAuthDataActivity.cs @@ -35,7 +35,7 @@ namespace System.Application.UI.Activities return; } - if (MainApplication.AllowScreenshots) + if (!MainApplication.AllowScreenshots) { this.SetWindowSecure(true); } diff --git a/src/ST.Client.Mobile.Droid/UI/Activities/LocalAuthPage/SteamAuthTradeActivity.cs b/src/ST.Client.Mobile.Droid/UI/Activities/LocalAuthPage/SteamAuthTradeActivity.cs index 3835cc38d..d9ba584dc 100644 --- a/src/ST.Client.Mobile.Droid/UI/Activities/LocalAuthPage/SteamAuthTradeActivity.cs +++ b/src/ST.Client.Mobile.Droid/UI/Activities/LocalAuthPage/SteamAuthTradeActivity.cs @@ -58,6 +58,8 @@ namespace System.Application.UI.Activities binding.tvSteamTradeLoginTip.Text = LocalAuth_SteamTradeLoginTip; binding.tvLoading.Text = LocalAuth_AuthTrade_GetTip; //speedDialDict.ReplaceLabels(ToString2); + binding.btnCancelTrade.Text = LocalAuth_AuthTrade_Cancel; + binding.btnConfirmTrade.Text = LocalAuth_AuthTrade_Confirm; SetMenuTitle(); }).AddTo(this); @@ -68,6 +70,7 @@ namespace System.Application.UI.Activities var state_reverse = !value ? ViewStates.Gone : ViewStates.Visible; binding.layoutContentSteamLogin.Visibility = state; binding.layoutContentConfirmations.Visibility = state_reverse; + binding.layoutActions.Visibility = state; //binding.speedDial.Visibility = state; }).AddTo(this); ViewModel!.WhenAnyValue(x => x.IsRequiresCaptcha).Subscribe(value => diff --git a/src/ST.Client.Mobile.Droid/UI/Fragments/LocalAuthPage/LocalAuthFragment.cs b/src/ST.Client.Mobile.Droid/UI/Fragments/LocalAuthPage/LocalAuthFragment.cs index 211362acc..db4240ec9 100644 --- a/src/ST.Client.Mobile.Droid/UI/Fragments/LocalAuthPage/LocalAuthFragment.cs +++ b/src/ST.Client.Mobile.Droid/UI/Fragments/LocalAuthPage/LocalAuthFragment.cs @@ -97,7 +97,7 @@ namespace System.Application.UI.Fragments .Subscribe(x => { if (!x) return; - OnAuthenticatorsChanged(ViewModel!.IsAuthenticatorsEmpty, x); + OnAuthenticatorsChanged(ViewModel!.IsAuthenticatorsEmpty, false); }) .AddTo(this); ViewModel!.WhenAnyValue(x => x.IsRefreshing) @@ -143,7 +143,7 @@ namespace System.Application.UI.Fragments public override void OnResume() { base.OnResume(); - if (MainApplication.AllowScreenshots) + if (!MainApplication.AllowScreenshots) { Activity.SetWindowSecure(true); } diff --git a/src/ST.Client.Mobile.Droid/UI/MainApplication.cs b/src/ST.Client.Mobile.Droid/UI/MainApplication.cs index b5fd7d98c..483968a32 100644 --- a/src/ST.Client.Mobile.Droid/UI/MainApplication.cs +++ b/src/ST.Client.Mobile.Droid/UI/MainApplication.cs @@ -18,7 +18,12 @@ using Square.LeakCanary; namespace System.Application.UI { [Register(JavaPackageConstants.UI + nameof(MainApplication))] - [Application(Debuggable = _ThisAssembly.Debuggable)] + [Application( + Debuggable = _ThisAssembly.Debuggable, + Label = "@string/app_name", + Theme = "@style/MainTheme", + Icon = "@mipmap/ic_launcher", + RoundIcon = "@mipmap/ic_launcher_round")] public sealed class MainApplication : AndroidApplication { public MainApplication(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)