Skip to content
This repository was archived by the owner on Nov 25, 2023. It is now read-only.

Commit a73bccc

Browse files
authored
Merge pull request #103 from Invvard/fix/101-layout-not-loading
Fix/101 layout not loading
2 parents e4a1324 + 14f1ecf commit a73bccc

File tree

9 files changed

+243
-261
lines changed

9 files changed

+243
-261
lines changed

src/InvvardDev.EZLayoutDisplay.Desktop/Helper/EZLayoutMaker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ public EZLayoutMaker()
2222
_keyDefinitionDictionary = new KeyDefinitionDictionary();
2323
}
2424

25-
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionIds)
25+
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout)
2626
{
2727
Logger.TraceMethod();
2828
Logger.DebugInputParam(nameof(ergodoxLayout), ergodoxLayout);
2929

3030
var ezLayout = new EZLayout { HashId = ergodoxLayout.HashId, Name = ergodoxLayout.Title };
3131

32-
var ergodoxLayers = ergodoxLayout.Revisions.FirstOrDefault(r => r.HashId == layoutRevisionIds)?.Layers ?? ergodoxLayout.Revisions.First().Layers;
32+
var ergodoxLayers = ergodoxLayout.Revision.Layers ?? ergodoxLayout.Revision.Layers;
3333

3434
if (ergodoxLayers?.Any() != null)
3535
{

src/InvvardDev.EZLayoutDisplay.Desktop/Model/ErgodoxLayout.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ public class ErgodoxLayout
3030
public List<ErgodoxTag> Tags { get; set; }
3131

3232
/// <summary>
33-
/// Gets or sets the list of <see cref="Revision"/>.
33+
/// Gets or sets the <see cref="Revision"/>.
3434
/// </summary>
35-
[JsonProperty("revisions")]
36-
public List<Revision> Revisions { get; set; }
35+
[JsonProperty("revision")]
36+
public Revision Revision { get; set; }
3737
}
3838

3939
public class DataRoot

src/InvvardDev.EZLayoutDisplay.Desktop/Service/Design/LayoutService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace InvvardDev.EZLayoutDisplay.Desktop.Service.Design
88
{
99
public class LayoutService : ILayoutService
1010
{
11-
public async Task<ErgodoxLayout> GetLayoutInfo(string layoutHashId)
11+
public async Task<ErgodoxLayout> GetLayoutInfo(string layoutHashId, string layoutRevisionId)
1212
{
1313
Debug.WriteLine("Layout retrieved.");
1414

@@ -19,15 +19,15 @@ public async Task<ErgodoxLayout> GetLayoutInfo(string layoutHashId)
1919
}
2020

2121
/// <inheritdoc />
22-
public async Task<ErgodoxLayout> GetErgodoxLayout(string layoutHashId)
22+
public async Task<ErgodoxLayout> GetErgodoxLayout(string layoutHashId, string layoutRevisionId)
2323
{
2424
Debug.WriteLine("Layout retrieved.");
2525

2626
return await new Task<ErgodoxLayout>(() => new ErgodoxLayout());
2727
}
2828

2929
/// <inheritdoc />
30-
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionIds)
30+
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayouts)
3131
{
3232
Debug.WriteLine("Layout prepared");
3333

src/InvvardDev.EZLayoutDisplay.Desktop/Service/Implementation/LayoutService.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,48 +17,50 @@ public class LayoutService : ILayoutService
1717
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
1818

1919
private readonly string GetLayoutBody =
20-
"{{\"operationName\":\"getLayout\",\"variables\":{{\"hashId\":\"{0}\"}},\"query\":\"query getLayout($hashId: String!) {{\\n Layout(hashId: $hashId) {{\\n ...LayoutData\\n }}\\n}}\\n\\nfragment LayoutData on Layout {{\\n geometry\\n hashId\\n title\\n tags {{\\n id\\n hashId\\n name\\n }}\\n revisions {{\\n ...RevisionData\\n }}\\n}}\\n\\nfragment RevisionData on Revision {{\\n hashId\\n model\\n title\\n swatch\\n hexUrl\\n zipUrl\\n layers {{\\n hashId\\n keys\\n position\\n title\\n color\\n}}\\n}}\\n\"}}";
20+
"{{\"operationName\":\"getLayout\",\"variables\":{{\"hashId\":\"{0}\",\"revisionId\":\"{1}\"}},\"query\":\"query getLayout($hashId: String!, $revisionId: String!) {{\\n Layout(hashId: $hashId, revisionId: $revisionId) {{\\n ...LayoutData\\n }}\\n}}\\n\\nfragment LayoutData on Layout {{\\n geometry\\n hashId\\n title\\n tags {{\\n id\\n hashId\\n name\\n }}\\n revision {{\\n ...RevisionData\\n }}\\n}}\\n\\nfragment RevisionData on Revision {{\\n hashId\\n model\\n title\\n swatch\\n hexUrl\\n zipUrl\\n qmkVersion\\n qmkUptodate\\n config\\n layers {{\\n hashId\\n keys\\n position\\n title\\n color\\n}}\\n}}\\n\"}}";
2121

2222
private readonly string GetLayoutInfoRequestBody =
23-
"{{\"operationName\":\"getLayout\",\"variables\":{{\"hashId\":\"{0}\"}},\"query\":\"query getLayout($hashId: String!) {{\\n Layout(hashId: $hashId) {{\\n ...LayoutData\\n __typename\\n }}\\n}}\\n\\nfragment LayoutData on Layout {{\\n geometry\\n hashId\\n title\\n tags {{\\n id\\n hashId\\n name\\n }}\\n revisions {{\\n hashId\\n title\\n hexUrl\\n model\\n zipUrl\\n layers {{\\n position\\n title\\n }}\\n }}\\n __typename\\n}}\\n\"}}";
23+
"{{\"operationName\":\"getLayout\",\"variables\":{{\"hashId\":\"{0}\",\"revisionId\":\"{1}\"}},\"query\":\"query getLayout($hashId: String!, $revisionId: String!) {{\\n Layout(hashId: $hashId, revisionId: $revisionId) {{\\n ...LayoutData\\n __typename\\n }}\\n}}\\n\\nfragment LayoutData on Layout {{\\n geometry\\n hashId\\n title\\n tags {{\\n id\\n hashId\\n name\\n }}\\n revision {{\\n hashId\\n title\\n hexUrl\\n model\\n zipUrl\\n qmkVersion\\n qmkUptodate\\n layers {{\\n position\\n title\\n }}\\n }}\\n __typename\\n}}\\n\"}}";
2424

2525
private const string GetLayoutRequestUri = "https://oryx.ergodox-ez.com/graphql";
2626

2727
#region ILayoutService implementation
2828

2929
/// <inheritdoc />
30-
public async Task<ErgodoxLayout> GetLayoutInfo(string layoutHashId)
30+
public async Task<ErgodoxLayout> GetLayoutInfo(string layoutHashId, string layoutRevisionId)
3131
{
3232
Logger.TraceMethod();
3333
Logger.DebugInputParam(nameof(layoutHashId), layoutHashId);
34+
Logger.DebugInputParam(nameof(layoutRevisionId), layoutRevisionId);
3435

3536
ValidateLayoutHashId(layoutHashId);
3637

37-
var info = await QueryData(layoutHashId, GetLayoutInfoRequestBody);
38+
var info = await QueryData(layoutHashId, layoutRevisionId, GetLayoutInfoRequestBody);
3839

3940
return info;
4041
}
4142

4243
/// <inheritdoc />
43-
public async Task<ErgodoxLayout> GetErgodoxLayout(string layoutHashId)
44+
public async Task<ErgodoxLayout> GetErgodoxLayout(string layoutHashId, string layoutRevisionId)
4445
{
4546
Logger.TraceMethod();
4647
Logger.DebugInputParam(nameof(layoutHashId), layoutHashId);
48+
Logger.DebugInputParam(nameof(layoutRevisionId), layoutRevisionId);
4749

4850
ValidateLayoutHashId(layoutHashId);
4951

50-
var layout = await QueryData(layoutHashId, GetLayoutBody);
52+
var layout = await QueryData(layoutHashId, layoutRevisionId, GetLayoutBody);
5153

5254
return layout;
5355
}
5456

5557
/// <inheritdoc />
56-
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionId)
58+
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout)
5759
{
5860
Logger.TraceMethod();
5961

6062
var ezLayoutMaker = new EZLayoutMaker();
61-
EZLayout ezLayout = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, layoutRevisionId);
63+
EZLayout ezLayout = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
6264

6365
return ezLayout;
6466
}
@@ -77,9 +79,9 @@ public async Task<IEnumerable<KeyTemplate>> GetLayoutTemplate()
7779

7880
#region Private methods
7981

80-
private async Task<ErgodoxLayout> QueryData(string layoutHashId, string graphQlQuery)
82+
private async Task<ErgodoxLayout> QueryData(string layoutHashId, string layoutRevisionId, string graphQlQuery)
8183
{
82-
var requestBody = string.Format(graphQlQuery, layoutHashId);
84+
var requestBody = string.Format(graphQlQuery, layoutHashId, layoutRevisionId);
8385

8486
var layout = await HttpClientCall(requestBody);
8587

src/InvvardDev.EZLayoutDisplay.Desktop/Service/Interface/ILayoutService.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,24 @@ public interface ILayoutService
1010
/// Gets the <see cref="ErgodoxLayout"/> basic info.
1111
/// </summary>
1212
/// <param name="layoutHashId">The layout hash ID to get.</param>
13+
/// <param name="layoutRevisionId">The layout revision ID to get.</param>
1314
/// <returns>The <see cref="ErgodoxLayout"/>.</returns>
14-
Task<ErgodoxLayout> GetLayoutInfo(string layoutHashId);
15+
Task<ErgodoxLayout> GetLayoutInfo(string layoutHashId, string layoutRevisionId);
1516

1617
/// <summary>
1718
/// Gets the <see cref="ErgodoxLayout"/>.
1819
/// </summary>
1920
/// <param name="layoutHashId">The layout hash ID to get.</param>
21+
/// <param name="layoutRevisionId">The layout revision ID to get.</param>
2022
/// <returns>The <see cref="ErgodoxLayout"/>.</returns>
21-
Task<ErgodoxLayout> GetErgodoxLayout(string layoutHashId);
23+
Task<ErgodoxLayout> GetErgodoxLayout(string layoutHashId, string layoutRevisionId);
2224

2325
/// <summary>
2426
/// Transforms an <see cref="ErgodoxLayout"/> into a <see cref="EZLayout"/>.
2527
/// </summary>
2628
/// <param name="ergodoxLayout">The <see cref="ErgodoxLayout"/> to be transformed.</param>
27-
/// <param name="layoutRevisionId">The layout revision identifier.</param>
2829
/// <returns>The <see cref="EZLayout"/> transformed into.</returns>
29-
EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionId);
30+
EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout);
3031

3132
/// <summary>
3233
/// Gets the list of <see cref="KeyTemplate"/> from the local repository.

src/InvvardDev.EZLayoutDisplay.Desktop/ViewModel/SettingsViewModel.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ private async void UpdateErgoDoxInfo()
404404

405405
try
406406
{
407-
var layoutInfo = await _layoutService.GetLayoutInfo(CurrentLayoutHashId);
407+
var layoutInfo = await _layoutService.GetLayoutInfo(CurrentLayoutHashId, CurrentLayoutRevisionId);
408408
Logger.Debug("LayoutInfo = {@value0}", layoutInfo);
409409

410410
ClearLayoutInfo();
@@ -434,7 +434,7 @@ private void CheckLatestRevisionId(ErgodoxLayout layoutInfo)
434434
return;
435435
}
436436

437-
CurrentLayoutRevisionId = layoutInfo.Revisions.Last().HashId;
437+
CurrentLayoutRevisionId = layoutInfo.Revision.HashId;
438438
}
439439

440440
private void ClearLayoutInfo()
@@ -462,15 +462,13 @@ private void UpdateLayoutInfo(ErgodoxLayout layoutInfo)
462462
Tags = new ObservableCollection<string>(layoutInfo.Tags.Select(t => t.Name));
463463
}
464464

465-
if (layoutInfo.Revisions.Any(r => r.HashId == CurrentLayoutRevisionId))
465+
if (layoutInfo.Revision != null)
466466
{
467-
var revision = layoutInfo.Revisions.First(r => r.HashId == CurrentLayoutRevisionId);
468-
469-
KeyboardModel = GetKeyBoardDescription(_keyboardGeometry, revision.Model);
470-
UpdateLayoutButtons(revision);
467+
KeyboardModel = GetKeyBoardDescription(_keyboardGeometry, layoutInfo.Revision.Model);
468+
UpdateLayoutButtons(layoutInfo.Revision);
471469
LayoutStatus = !_layoutIsCompiled ? "Not compiled" : "Compiled";
472470

473-
Layers = new ObservableCollection<string>(revision.Layers.Select(l => l.ToString()));
471+
Layers = new ObservableCollection<string>(layoutInfo.Revision.Layers.Select(l => l.ToString()));
474472
}
475473
}
476474

@@ -518,10 +516,10 @@ private async Task UpdateLayout()
518516

519517
try
520518
{
521-
var ergodoxLayout = await _layoutService.GetErgodoxLayout(CurrentLayoutHashId);
519+
var ergodoxLayout = await _layoutService.GetErgodoxLayout(CurrentLayoutHashId, CurrentLayoutRevisionId);
522520
Logger.Debug("ergodoxLayout = {@value0}", ergodoxLayout);
523521

524-
var ezLayout = _layoutService.PrepareEZLayout(ergodoxLayout, CurrentLayoutRevisionId);
522+
var ezLayout = _layoutService.PrepareEZLayout(ergodoxLayout);
525523
Logger.Debug("ezLayout = {@value0}", ezLayout);
526524

527525
_settingsService.EZLayout = ezLayout;

0 commit comments

Comments
 (0)