diff --git a/src/ST.Client.Android/Services/Implementation/DnsAnalysisServiceImpl.cs b/src/ST.Client.Android/Services/Implementation/DnsAnalysisServiceImpl.cs
new file mode 100644
index 000000000..3423e2ec6
--- /dev/null
+++ b/src/ST.Client.Android/Services/Implementation/DnsAnalysisServiceImpl.cs
@@ -0,0 +1,114 @@
+using Android.Content;
+using Android.Net;
+using System.Application.Services;
+using System.Application.Services.Implementation;
+using System.Collections.Generic;
+using System.Net;
+using System.Threading.Tasks;
+using XEPlatform = Xamarin.Essentials.Platform;
+
+namespace System.Application.Services.Implementation
+{
+ internal sealed class DnsAnalysisServiceImpl : IDnsAnalysisService
+ {
+ ///
+ /// https://developer.android.google.cn/reference/android/net/ConnectivityManager?hl=zh-cn
+ ///
+ static ConnectivityManager ConnectivityManager
+ {
+ get
+ {
+ var connectivityManager = XEPlatform.CurrentActivity.GetSystemService(Context.ConnectivityService);
+ return connectivityManager;
+ }
+ }
+
+ public static List GetDnsServers()
+ {
+ List endPoints = new();
+ var connectivityManager = ConnectivityManager;
+
+ var activeConnection = connectivityManager.ActiveNetwork;
+ var linkProperties = connectivityManager.GetLinkProperties(activeConnection);
+
+ if (linkProperties != null)
+ {
+ foreach (var currentAddress in linkProperties.DnsServers)
+ {
+ var endPoint = new IPEndPoint(IPAddress.Parse(currentAddress.HostAddress), 53);
+ endPoints.Add(endPoint);
+ }
+ }
+
+ return endPoints;
+ }
+
+ public Task AnalysisDomainIp(string url, bool isIPv6 = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task AnalysisDomainIpBy114Dns(string url, bool isIPv6 = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task AnalysisDomainIpByAliDns(string url, bool isIPv6 = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task AnalysisDomainIpByCloudflare(string url, bool isIPv6 = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task AnalysisDomainIpByCustomDns(string url, IPAddress[]? dnsServers = null, bool isIPv6 = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task AnalysisDomainIpByDnspod(string url, bool isIPv6 = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task AnalysisDomainIpByGoogleDns(string url, bool isIPv6 = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public int AnalysisHostnameTime(string url)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetHostByIPAddress(IPAddress ip)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetIsIpv6Support()
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task PingHostname(string url)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
+
+// ReSharper disable once CheckNamespace
+namespace Microsoft.Extensions.DependencyInjection
+{
+ partial class ServiceCollectionExtensions
+ {
+ public static IServiceCollection AddDnsAnalysisService(this IServiceCollection services)
+ {
+ services.AddSingleton();
+ return services;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/ST.Client.Android/UI/Activities/LocalAuthPage/SteamAuthTradeActivity.cs b/src/ST.Client.Android/UI/Activities/LocalAuthPage/SteamAuthTradeActivity.cs
index 91146705f..ec8d7db95 100644
--- a/src/ST.Client.Android/UI/Activities/LocalAuthPage/SteamAuthTradeActivity.cs
+++ b/src/ST.Client.Android/UI/Activities/LocalAuthPage/SteamAuthTradeActivity.cs
@@ -35,7 +35,7 @@ namespace System.Application.UI.Activities
[Register(JavaPackageConstants.Activities + nameof(MockSteamAuthTradeActivity))]
[Activity(Theme = ManifestConstants.MainTheme2_NoActionBar,
LaunchMode = LaunchMode.SingleTask,
- //MainLauncher = true,
+ MainLauncher = true,
Label = "AuthTrade(Mock)",
ConfigurationChanges = ManifestConstants.ConfigurationChanges)]
internal sealed class MockSteamAuthTradeActivity : BaseSteamAuthTradeActivity
@@ -154,7 +154,8 @@ namespace System.Application.UI.Activities
binding.layoutSteamUserName.Hint = Steam_User;
binding.layoutSteamPassword.Hint = Steam_Password;
binding.layoutCaptcha.Hint = Steam_ImageCodeTip;
- binding.tvConfirmConutMessage.Text = ViewModel!.ConfirmationsConutMessage;
+ if (!ViewModel!.IsConfirmationsAny)
+ binding.tvConfirmConutMessage.Text = ViewModel!.ConfirmationsConutMessage;
binding.cbStreamRememberMe.Text = User_Rememberme;
binding.btnLogin.Text = Login;
binding.tvSteamTradeLoginTip.Text = LocalAuth_SteamTradeLoginTip;
@@ -191,11 +192,18 @@ namespace System.Application.UI.Activities
ViewModel!.WhenAnyValue(x => x.ConfirmationsConutMessage).SubscribeInMainThread(value =>
{
if (binding == null) return;
- binding.tvConfirmConutMessage.Text = value;
- if (ViewModel!.IsConfirmationsEmpty)
+ if (!ViewModel!.IsConfirmationsAny)
{
+ binding.tvConfirmConutMessage.Text = value;
+ binding.tvConfirmConutMessage.Visibility = ViewStates.Visible;
binding.layoutActions.Visibility = ViewStates.Gone;
}
+ else
+ {
+ binding.tvConfirmConutMessage.Visibility = ViewStates.Gone;
+ binding.layoutActions.Visibility = ViewStates.Visible;
+ Toast.Show(value, ToastLength.Short);
+ }
}).AddTo(this);
ViewModel!.WhenAnyValue(x => x.IsLoading).SubscribeInMainThread(value =>
{
@@ -205,7 +213,7 @@ namespace System.Application.UI.Activities
binding.layoutContentSteamLogin.Visibility = (value || ViewModel!.IsLoggedIn) ? ViewStates.Gone : ViewStates.Visible;
binding.layoutLoading.Visibility = state;
//binding.swipeRefreshLayout.Refreshing = value;
- binding.layoutActions.Visibility = (value || !ViewModel!.IsLoggedIn || ViewModel!.IsConfirmationsEmpty) ? ViewStates.Gone : ViewStates.Visible;
+ binding.layoutActions.Visibility = (value || !ViewModel!.IsLoggedIn || !ViewModel!.IsConfirmationsAny) ? ViewStates.Gone : ViewStates.Visible;
}).AddTo(this);
ViewModel!.WhenAnyValue(x => x.UnselectAll).SubscribeInMainThread(value =>
{
@@ -266,7 +274,7 @@ namespace System.Application.UI.Activities
};
var layout = new LinearLayoutManager2(this, LinearLayoutManager.Vertical, false);
binding!.rvConfirmations.SetLayoutManager(layout);
- binding.rvConfirmations.AddItemDecoration(VerticalItemDecoration2.Get(this, Resource.Dimension.activity_vertical_margin, Resource.Dimension.fab_full_height, noTop: true));
+ binding.rvConfirmations.AddItemDecoration(VerticalItemDecoration2.Get(this, Resource.Dimension.activity_vertical_margin, Resource.Dimension.tab_height, noTop: true));
binding.rvConfirmations.SetAdapter(adapter);
//var actionItems = Enum2.GetAll().Where(x => x != ActionItem.Refresh);
diff --git a/src/ST.Client.Android/UI/Fragments/CommunityFixFragment.cs b/src/ST.Client.Android/UI/Fragments/CommunityFixFragment.cs
index 484c30dc5..84c532b90 100644
--- a/src/ST.Client.Android/UI/Fragments/CommunityFixFragment.cs
+++ b/src/ST.Client.Android/UI/Fragments/CommunityFixFragment.cs
@@ -39,7 +39,7 @@ namespace System.Application.UI.Fragments
proxyS.WhenAnyValue(x => x.AccelerateTime).SubscribeInMainThread(value =>
{
if (binding == null) return;
- binding.tvAccelerateTime.Text = AppResources.CommunityFix_AlreadyProxy + value.ToString("hh:mm:ss");
+ binding.tvAccelerateTime.Text = AppResources.CommunityFix_AlreadyProxy + value.ToString(@"hh\:mm\:ss");
}).AddTo(this);
proxyS.WhenAnyValue(x => x.ProxyStatus).SubscribeInMainThread(value =>
{
diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Windows/LocalAuthPage/AuthTradeWindow.axaml b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Windows/LocalAuthPage/AuthTradeWindow.axaml
index 889d4b0c1..2a02f294d 100644
--- a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Windows/LocalAuthPage/AuthTradeWindow.axaml
+++ b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Windows/LocalAuthPage/AuthTradeWindow.axaml
@@ -79,10 +79,10 @@
+ IsEnabled="{Binding IsConfirmationsAny}">
+ IsEnabled="{Binding IsConfirmationsAny}">