Skip to content
This repository was archived by the owner on Jul 24, 2025. It is now read-only.

Commit 13ffa2f

Browse files
Fix #1530
1 parent 5256e8c commit 13ffa2f

File tree

3 files changed

+53
-103
lines changed

3 files changed

+53
-103
lines changed

LenovoLegionToolkit.Lib/Utils/WarrantyChecker.cs

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ public class WarrantyChecker(ApplicationSettings settings, HttpClientFactory htt
1919
using var httpClient = httpClientFactory.Create();
2020

2121
var warrantyInfo = await GetStandardWarrantyInfo(httpClient, machineInformation, token).ConfigureAwait(false);
22-
warrantyInfo ??= await GetChineseWarrantyInfo(httpClient, machineInformation, token).ConfigureAwait(false);
2322

2423
settings.Store.WarrantyInfo = warrantyInfo;
2524
settings.SynchronizeStore();
@@ -59,54 +58,4 @@ public class WarrantyChecker(ApplicationSettings settings, HttpClientFactory htt
5958

6059
return new WarrantyInfo(startDate, endDate, link);
6160
}
62-
63-
private static async Task<WarrantyInfo?> GetChineseWarrantyInfo(HttpClient httpClient, MachineInformation machineInformation, CancellationToken token)
64-
{
65-
var machineInfo = await httpClient
66-
.GetStringAsync($"https://newsupport.lenovo.com.cn/api/machine/getmachineinfo?sn={machineInformation.SerialNumber}", token)
67-
.ConfigureAwait(false);
68-
69-
var node = JsonNode.Parse(machineInfo);
70-
if (node is null || node["statusCode"]?.GetValue<int>() != 200)
71-
return null;
72-
73-
var dataNode = node["data"];
74-
var startDate = dataNode?["ProductDate"]?.GetValue<DateTime>();
75-
76-
var driveWarrantyInfo = await httpClient
77-
.GetStringAsync($"https://newsupport.lenovo.com.cn/api/drive/{machineInformation.SerialNumber}/drivewarrantyinfo", token)
78-
.ConfigureAwait(false);
79-
80-
node = JsonNode.Parse(driveWarrantyInfo);
81-
if (node is null || node["statusCode"]?.GetValue<int>() != 200)
82-
return null;
83-
84-
dataNode = node["data"];
85-
86-
var detailInfoNode = dataNode?["detailinfo"];
87-
var warrantyNode = detailInfoNode?["warranty"]?.AsArray() ?? [];
88-
var onsiteNode = detailInfoNode?["onsite"]?.AsArray() ?? [];
89-
var otherNode = detailInfoNode?["other"]?.AsArray() ?? [];
90-
91-
var endDate = warrantyNode.Concat(onsiteNode).Concat(otherNode)
92-
.Select(n => n?["PartEndDate"])
93-
.Where(n => n is not null)
94-
.Select(n => DateTime.Parse(n!.ToString()))
95-
.DefaultIfEmpty(DateTime.MinValue)
96-
.Max();
97-
98-
if (endDate < startDate)
99-
{
100-
var baseInfoNode = dataNode?["baseinfo"]?.AsArray() ?? [];
101-
endDate = baseInfoNode
102-
.Select(n => n?["EndDate"])
103-
.Where(n => n is not null)
104-
.Select(n => DateTime.Parse(n!.ToString()))
105-
.Max();
106-
}
107-
108-
var link = new Uri($"https://newsupport.lenovo.com.cn/deviceGuarantee.html?fromsource=deviceGuarantee&selname={machineInformation.SerialNumber}");
109-
110-
return new WarrantyInfo(startDate, endDate, link);
111-
}
11261
}

LenovoLegionToolkit.WPF/Windows/Utils/DeviceInformationWindow.xaml

Lines changed: 52 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -93,56 +93,58 @@
9393
<TextBlock x:Name="_biosLabel" Focusable="True" />
9494
</custom:CardControl>
9595

96-
<Grid Margin="0,16,0,24">
97-
98-
<Grid.ColumnDefinitions>
99-
<ColumnDefinition Width="*" />
100-
<ColumnDefinition Width="Auto" />
101-
</Grid.ColumnDefinitions>
102-
103-
<TextBlock
104-
Grid.Column="0"
105-
Focusable="True"
106-
FontSize="24"
107-
FontWeight="Medium"
108-
Text="{x:Static resources:Resource.DeviceInformationWindow_Warranty_Title}" />
109-
<wpfui:Button
110-
x:Name="_refreshWarrantyButton"
111-
Grid.Column="1"
112-
Click="RefreshWarrantyButton_OnClick"
113-
Icon="ArrowClockwise32"
114-
ToolTip="{x:Static resources:Resource.DeviceInformationWindow_Refresh}" />
115-
</Grid>
116-
117-
<custom:CardControl Margin="0,0,0,8">
118-
<custom:CardControl.Header>
119-
<controls:CardHeaderControl Title="{x:Static resources:Resource.DeviceInformationWindow_WarrantyStartDate_Title}" />
120-
</custom:CardControl.Header>
121-
<TextBlock
122-
x:Name="_warrantyStartLabel"
123-
Focusable="True"
124-
Text="-" />
125-
</custom:CardControl>
126-
127-
<custom:CardControl Margin="0,0,0,8">
128-
<custom:CardControl.Header>
129-
<controls:CardHeaderControl Title="{x:Static resources:Resource.DeviceInformationWindow_WarrantyEndDate_Title}" />
130-
</custom:CardControl.Header>
131-
<TextBlock
132-
x:Name="_warrantyEndLabel"
133-
Focusable="True"
134-
Text="-" />
135-
</custom:CardControl>
136-
137-
138-
<custom:CardAction
139-
x:Name="_warrantyLinkCardAction"
140-
Margin="0,8,0,8"
141-
Click="WarrantyLinkCardAction_OnClick"
142-
Content="{x:Static resources:Resource.DeviceInformationWindow_LenovoSupport}"
143-
Icon="Open24"
144-
IsChevronVisible="False"
145-
IsEnabled="False" />
96+
<StackPanel x:Name="_warrantyInfo" Visibility="Hidden">
97+
<Grid Margin="0,16,0,24">
98+
99+
<Grid.ColumnDefinitions>
100+
<ColumnDefinition Width="*" />
101+
<ColumnDefinition Width="Auto" />
102+
</Grid.ColumnDefinitions>
103+
104+
<TextBlock
105+
Grid.Column="0"
106+
Focusable="True"
107+
FontSize="24"
108+
FontWeight="Medium"
109+
Text="{x:Static resources:Resource.DeviceInformationWindow_Warranty_Title}" />
110+
<wpfui:Button
111+
x:Name="_refreshWarrantyButton"
112+
Grid.Column="1"
113+
Click="RefreshWarrantyButton_OnClick"
114+
Icon="ArrowClockwise32"
115+
ToolTip="{x:Static resources:Resource.DeviceInformationWindow_Refresh}" />
116+
</Grid>
117+
118+
<custom:CardControl Margin="0,0,0,8">
119+
<custom:CardControl.Header>
120+
<controls:CardHeaderControl Title="{x:Static resources:Resource.DeviceInformationWindow_WarrantyStartDate_Title}" />
121+
</custom:CardControl.Header>
122+
<TextBlock
123+
x:Name="_warrantyStartLabel"
124+
Focusable="True"
125+
Text="-" />
126+
</custom:CardControl>
127+
128+
<custom:CardControl Margin="0,0,0,8">
129+
<custom:CardControl.Header>
130+
<controls:CardHeaderControl Title="{x:Static resources:Resource.DeviceInformationWindow_WarrantyEndDate_Title}" />
131+
</custom:CardControl.Header>
132+
<TextBlock
133+
x:Name="_warrantyEndLabel"
134+
Focusable="True"
135+
Text="-" />
136+
</custom:CardControl>
137+
138+
139+
<custom:CardAction
140+
x:Name="_warrantyLinkCardAction"
141+
Margin="0,8,0,8"
142+
Click="WarrantyLinkCardAction_OnClick"
143+
Content="{x:Static resources:Resource.DeviceInformationWindow_LenovoSupport}"
144+
Icon="Open24"
145+
IsChevronVisible="False"
146+
IsEnabled="False" />
147+
</StackPanel>
146148

147149
</StackPanel>
148150

LenovoLegionToolkit.WPF/Windows/Utils/DeviceInformationWindow.xaml.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,15 @@ private async Task RefreshAsync(bool forceRefresh = false)
3939
_warrantyLinkCardAction.IsEnabled = false;
4040

4141
var warrantyInfo = await _warrantyChecker.GetWarrantyInfo(mi, forceRefresh);
42-
_warrantyLinkCardAction.IsEnabled = false;
4342

4443
if (!warrantyInfo.HasValue)
4544
return;
4645

4746
_warrantyStartLabel.Text = warrantyInfo.Value.Start is not null ? warrantyInfo.Value.Start?.ToString(LocalizationHelper.ShortDateFormat) : "-";
4847
_warrantyEndLabel.Text = warrantyInfo.Value.End is not null ? warrantyInfo.Value.End?.ToString(LocalizationHelper.ShortDateFormat) : "-";
4948
_warrantyLinkCardAction.Tag = warrantyInfo.Value.Link;
50-
5149
_warrantyLinkCardAction.IsEnabled = true;
50+
_warrantyInfo.Visibility = Visibility.Visible;
5251
}
5352
catch (Exception ex)
5453
{

0 commit comments

Comments
 (0)