Skip to content

Commit 2d805e5

Browse files
committed
revise structure
1 parent 99ac5f0 commit 2d805e5

File tree

2 files changed

+40
-37
lines changed

2 files changed

+40
-37
lines changed

Flow.Launcher/ViewModel/MainViewModel.cs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ private void RegisterResultsUpdatedEvent()
177177
var token = e.Token == default ? _updateToken : e.Token;
178178

179179
PluginManager.UpdatePluginMetadata(e.Results, pair.Metadata, e.Query);
180-
if (!_resultsUpdateChannelWriter.TryWrite(new ResultsForUpdate(e.Results, pair.Metadata, e.Query, token)))
180+
if (!_resultsUpdateChannelWriter.TryWrite(new ResultsForUpdate(e.Results, pair.Metadata, e.Query,
181+
token)))
181182
{
182183
Log.Error("MainViewModel", "Unable to add item to Result Update Queue");
183184
}
@@ -191,7 +192,8 @@ private async Task ReloadPluginDataAsync()
191192
Hide();
192193

193194
await PluginManager.ReloadDataAsync().ConfigureAwait(false);
194-
Notification.Show(InternationalizationManager.Instance.GetTranslation("success"), InternationalizationManager.Instance.GetTranslation("completedSuccessfully"));
195+
Notification.Show(InternationalizationManager.Instance.GetTranslation("success"),
196+
InternationalizationManager.Instance.GetTranslation("completedSuccessfully"));
195197
}
196198

197199
[RelayCommand]
@@ -221,8 +223,7 @@ public void ReQuery(bool reselect)
221223
{
222224
if (SelectedIsFromQueryResults())
223225
{
224-
_reselect = reselect;
225-
QueryResults(isReQuery: true);
226+
QueryResults(isReQuery: true, reselect: reselect);
226227
}
227228
}
228229

@@ -275,6 +276,7 @@ private void AutocompleteQuery()
275276
{
276277
autoCompleteText = $"{result.ActionKeywordAssigned} {defaultSuggestion}";
277278
}
279+
278280
autoCompleteText = SelectedResults.SelectedItem.QuerySuggestionText;
279281
}
280282

@@ -296,11 +298,13 @@ private async Task OpenResultAsync(string index)
296298
{
297299
results.SelectedIndex = int.Parse(index);
298300
}
301+
299302
var result = results.SelectedItem?.Result;
300303
if (result == null)
301304
{
302305
return;
303306
}
307+
304308
var hideWindow = await result.ExecuteAsync(new ActionContext
305309
{
306310
// not null means pressing modifier key + number, should ignore the modifier key
@@ -413,6 +417,7 @@ private async Task RegisterClockAndDateUpdateAsync()
413417
public bool GameModeStatus { get; set; } = false;
414418

415419
private string _queryText;
420+
416421
public string QueryText
417422
{
418423
get => _queryText;
@@ -436,6 +441,7 @@ private void IncreaseWidth()
436441
Settings.WindowSize += 100;
437442
Settings.WindowLeft -= 50;
438443
}
444+
439445
OnPropertyChanged();
440446
}
441447

@@ -451,6 +457,7 @@ private void DecreaseWidth()
451457
Settings.WindowLeft += 50;
452458
Settings.WindowSize -= 100;
453459
}
460+
454461
OnPropertyChanged();
455462
}
456463

@@ -530,18 +537,17 @@ public void ChangeQueryText(string queryText, bool isReQuery = false)
530537
{
531538
if (QueryText != queryText)
532539
{
533-
534540
// re-query is done in QueryText's setter method
535541
QueryText = queryText;
536542
// set to false so the subsequent set true triggers
537543
// PropertyChanged and MoveQueryTextToEnd is called
538544
QueryTextCursorMovedToEnd = false;
539-
540545
}
541546
else if (isReQuery)
542547
{
543548
Query(isReQuery: true);
544549
}
550+
545551
QueryTextCursorMovedToEnd = true;
546552
});
547553
}
@@ -611,8 +617,8 @@ public double MainWindowWidth
611617

612618
public string OpenResultCommandModifiers => Settings.OpenResultModifiers;
613619

614-
public string PreviewHotkey
615-
{
620+
public string PreviewHotkey
621+
{
616622
get
617623
{
618624
// TODO try to patch issue #1755
@@ -626,6 +632,7 @@ public string PreviewHotkey
626632
{
627633
Settings.PreviewHotkey = "F1";
628634
}
635+
629636
return Settings.PreviewHotkey;
630637
}
631638
}
@@ -694,7 +701,6 @@ private void QueryContextMenu()
694701
results.Add(ContextMenuTopMost(selected));
695702
results.Add(ContextMenuPluginInfo(selected.PluginID));
696703
}
697-
698704

699705

700706
if (!string.IsNullOrEmpty(query))
@@ -713,7 +719,6 @@ private void QueryContextMenu()
713719

714720
r.Score = match.Score;
715721
return true;
716-
717722
}).ToList();
718723
ContextMenu.AddResults(filtered, id);
719724
}
@@ -740,10 +745,7 @@ private void QueryHistory()
740745
Title = string.Format(title, h.Query),
741746
SubTitle = string.Format(time, h.ExecutedDateTime),
742747
IcoPath = "Images\\history.png",
743-
OriginQuery = new Query
744-
{
745-
RawQuery = h.Query
746-
},
748+
OriginQuery = new Query { RawQuery = h.Query },
747749
Action = _ =>
748750
{
749751
SelectedResults = Results;
@@ -771,7 +773,7 @@ private void QueryHistory()
771773

772774
private readonly IReadOnlyList<Result> _emptyResult = new List<Result>();
773775

774-
private async void QueryResults(bool isReQuery = false)
776+
private async void QueryResults(bool isReQuery = false, bool reselect = true)
775777
{
776778
_updateSource?.Cancel();
777779

@@ -880,20 +882,23 @@ async Task QueryTask(PluginPair plugin)
880882
// Task.Yield will force it to run in ThreadPool
881883
await Task.Yield();
882884

883-
IReadOnlyList<Result> results = await PluginManager.QueryForPluginAsync(plugin, query, currentCancellationToken);
885+
IReadOnlyList<Result> results =
886+
await PluginManager.QueryForPluginAsync(plugin, query, currentCancellationToken);
884887

885888
currentCancellationToken.ThrowIfCancellationRequested();
886889

887890
results ??= _emptyResult;
888891

889-
if (!_resultsUpdateChannelWriter.TryWrite(new ResultsForUpdate(results, plugin.Metadata, query, currentCancellationToken)))
892+
if (!_resultsUpdateChannelWriter.TryWrite(new ResultsForUpdate(results, plugin.Metadata, query,
893+
currentCancellationToken, reselect)))
890894
{
891895
Log.Error("MainViewModel", "Unable to add item to Result Update Queue");
892896
}
893897
}
894898
}
895899

896-
private Query ConstructQuery(string queryText, IEnumerable<CustomShortcutModel> customShortcuts, IEnumerable<BuiltinShortcutModel> builtInShortcuts)
900+
private Query ConstructQuery(string queryText, IEnumerable<CustomShortcutModel> customShortcuts,
901+
IEnumerable<BuiltinShortcutModel> builtInShortcuts)
897902
{
898903
if (string.IsNullOrWhiteSpace(queryText))
899904
{
@@ -930,7 +935,9 @@ private Query ConstructQuery(string queryText, IEnumerable<CustomShortcutModel>
930935
}
931936
catch (Exception e)
932937
{
933-
Log.Exception($"{nameof(MainViewModel)}.{nameof(ConstructQuery)}|Error when expanding shortcut {shortcut.Key}", e);
938+
Log.Exception(
939+
$"{nameof(MainViewModel)}.{nameof(ConstructQuery)}|Error when expanding shortcut {shortcut.Key}",
940+
e);
934941
}
935942
}
936943
});
@@ -1075,6 +1082,7 @@ public async void Hide()
10751082
{
10761083
SelectedResults = Results;
10771084
}
1085+
10781086
switch (Settings.LastQueryMode)
10791087
{
10801088
case LastQueryMode.Empty:
@@ -1122,7 +1130,7 @@ public void Save()
11221130
/// <summary>
11231131
/// To avoid deadlock, this method should not called from main thread
11241132
/// </summary>
1125-
public void UpdateResultView(IEnumerable<ResultsForUpdate> resultsForUpdates)
1133+
public void UpdateResultView(ICollection<ResultsForUpdate> resultsForUpdates)
11261134
{
11271135
if (!resultsForUpdates.Any())
11281136
return;
@@ -1161,7 +1169,10 @@ public void UpdateResultView(IEnumerable<ResultsForUpdate> resultsForUpdates)
11611169
}
11621170
}
11631171

1164-
Results.AddResults(resultsForUpdates, token, _reselect);
1172+
// it should be the same for all results
1173+
bool reSelect = resultsForUpdates.First().ReSelectFirstResult;
1174+
1175+
Results.AddResults(resultsForUpdates, token, reSelect);
11651176
_reselect = true;
11661177
}
11671178

Flow.Launcher/ViewModel/ResultsForUpdate.cs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,15 @@
44

55
namespace Flow.Launcher.ViewModel
66
{
7-
public struct ResultsForUpdate
7+
public record struct ResultsForUpdate(
8+
IReadOnlyList<Result> Results,
9+
PluginMetadata Metadata,
10+
Query Query,
11+
CancellationToken Token,
12+
bool ReSelectFirstResult = true)
813
{
9-
public IReadOnlyList<Result> Results { get; }
14+
public string ID { get; } = Metadata.ID;
1015

11-
public PluginMetadata Metadata { get; }
12-
public string ID { get; }
13-
14-
public Query Query { get; }
15-
public CancellationToken Token { get; }
16-
17-
public ResultsForUpdate(IReadOnlyList<Result> results, PluginMetadata metadata, Query query, CancellationToken token)
18-
{
19-
Results = results;
20-
Metadata = metadata;
21-
Query = query;
22-
Token = token;
23-
ID = metadata.ID;
24-
}
16+
public bool ReSelectFirstResult { get; set; }
2517
}
2618
}

0 commit comments

Comments
 (0)