Revert modifications and returning actions

This commit is contained in:
01Dri 2025-10-15 00:34:16 -03:00
parent a8d3cdf62c
commit 9ca7c8431b
5 changed files with 45 additions and 70 deletions

View file

@ -716,9 +716,9 @@ namespace Flow.Launcher.Infrastructure.UserSettings
public enum HistoryStyle public enum HistoryStyle
{ {
[EnumLocalizeKey(nameof(Localize.queryHistory))] [EnumLocalizeKey(nameof(Localize.queryHistory))]
Query = 1, Query,
[EnumLocalizeKey(nameof(Localize.executedHistory))] [EnumLocalizeKey(nameof(Localize.executedHistory))]
LastOpened = 2 LastOpened
} }
} }

View file

@ -2,7 +2,6 @@
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Flow.Launcher.Core.Plugin; using Flow.Launcher.Core.Plugin;
using Flow.Launcher.Infrastructure.UserSettings;
using Flow.Launcher.Plugin; using Flow.Launcher.Plugin;
using Flow.Launcher.Storage; using Flow.Launcher.Storage;
@ -42,20 +41,4 @@ public static class ResultHelper
return null; return null;
} }
} }
public static bool IsEquals(this Result result, LastOpenedHistoryItem item, HistoryStyle style)
{
bool keyMatches = string.IsNullOrEmpty(result.RecordKey) && string.IsNullOrEmpty(item.RecordKey)
? item.Title == result.Title
: !string.IsNullOrEmpty(result.RecordKey) && !string.IsNullOrEmpty(item.RecordKey) && item.RecordKey == result.RecordKey;
bool queryMatches = style != HistoryStyle.Query || (result.OriginQuery != null && item.Query == result.OriginQuery.RawQuery);
return keyMatches
&& queryMatches
&& item.SubTitle == result.SubTitle
&& item.PluginID == result.PluginID
&& item.HistoryStyle == style;
}
} }

View file

@ -1,5 +1,4 @@
using System; using System;
using Flow.Launcher.Infrastructure.UserSettings;
using Flow.Launcher.Plugin; using Flow.Launcher.Plugin;
namespace Flow.Launcher.Storage; namespace Flow.Launcher.Storage;
@ -11,7 +10,22 @@ public class LastOpenedHistoryItem
public string PluginID { get; set; } = string.Empty; public string PluginID { get; set; } = string.Empty;
public string Query { get; set; } = string.Empty; public string Query { get; set; } = string.Empty;
public string RecordKey { get; set; } = string.Empty; public string RecordKey { get; set; } = string.Empty;
public HistoryStyle HistoryStyle { get; set; }
public DateTime ExecutedDateTime { get; set; } public DateTime ExecutedDateTime { get; set; }
public bool Equals(Result r)
{
if (string.IsNullOrEmpty(RecordKey) || string.IsNullOrEmpty(r.RecordKey))
{
return Title == r.Title
&& SubTitle == r.SubTitle
&& PluginID == r.PluginID
&& Query == r.OriginQuery.RawQuery;
}
else
{
return RecordKey == r.RecordKey
&& PluginID == r.PluginID
&& Query == r.OriginQuery.RawQuery;
}
}
} }

View file

@ -2,9 +2,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using CommunityToolkit.Mvvm.DependencyInjection;
using Flow.Launcher.Helper;
using Flow.Launcher.Infrastructure.UserSettings;
using Flow.Launcher.Plugin; using Flow.Launcher.Plugin;
namespace Flow.Launcher.Storage namespace Flow.Launcher.Storage
@ -19,11 +16,8 @@ namespace Flow.Launcher.Storage
[JsonInclude] [JsonInclude]
public List<LastOpenedHistoryItem> LastOpenedHistoryItems { get; private set; } = []; public List<LastOpenedHistoryItem> LastOpenedHistoryItems { get; private set; } = [];
private readonly Settings _settings = Ioc.Default.GetRequiredService<Settings>();
private readonly int _maxHistory = 300; private readonly int _maxHistory = 300;
public void PopulateHistoryFromLegacyHistory() public void PopulateHistoryFromLegacyHistory()
{ {
if (Items.Count == 0) return; if (Items.Count == 0) return;
@ -31,58 +25,42 @@ namespace Flow.Launcher.Storage
foreach (var item in Items) foreach (var item in Items)
{ {
LastOpenedHistoryItems.Add(new LastOpenedHistoryItem LastOpenedHistoryItems.Add(new LastOpenedHistoryItem
{ {
Query = item.Query, Query = item.Query,
ExecutedDateTime = item.ExecutedDateTime, ExecutedDateTime = item.ExecutedDateTime
HistoryStyle = HistoryStyle.Query
}); });
} }
Items.Clear(); Items.Clear();
} }
public void Add(Result result) public void Add(Result result)
{ {
if (string.IsNullOrEmpty(result.OriginQuery.RawQuery)) return; if (string.IsNullOrEmpty(result.OriginQuery.RawQuery)) return;
if (string.IsNullOrEmpty(result.PluginID)) return;
var style = _settings.HistoryStyle;
// Maintain the max history limit // Maintain the max history limit
if (LastOpenedHistoryItems.Count > _maxHistory) if (LastOpenedHistoryItems.Count > _maxHistory)
{ {
LastOpenedHistoryItems.RemoveAt(0); LastOpenedHistoryItems.RemoveAt(0);
} }
// If the last item is the same as the current result, just update the timestamp // If the last item is the same as the current result, just update the timestamp
if (LastOpenedHistoryItems.Count > 0) if (LastOpenedHistoryItems.Count > 0 &&
LastOpenedHistoryItems.Last().Equals(result))
{ {
var last = LastOpenedHistoryItems.Last(); LastOpenedHistoryItems.Last().ExecutedDateTime = DateTime.Now;
if (result.IsEquals(last, style))
{
last.ExecutedDateTime = DateTime.Now;
return;
}
var existItem = LastOpenedHistoryItems.FirstOrDefault(x => result.IsEquals(x, style));
if (existItem != null)
{
existItem.ExecutedDateTime = DateTime.Now;
return;
}
} }
else
LastOpenedHistoryItems.Add(new LastOpenedHistoryItem
{ {
Title = result.Title, LastOpenedHistoryItems.Add(new LastOpenedHistoryItem
SubTitle = result.SubTitle, {
PluginID = result.PluginID, Title = result.Title,
Query = result.OriginQuery.RawQuery, SubTitle = result.SubTitle,
RecordKey = result.RecordKey, PluginID = result.PluginID,
ExecutedDateTime = DateTime.Now, Query = result.OriginQuery.RawQuery,
HistoryStyle = style RecordKey = result.RecordKey,
}); ExecutedDateTime = DateTime.Now
});
}
} }
} }
} }

View file

@ -1318,10 +1318,9 @@ namespace Flow.Launcher.ViewModel
private List<Result> GetHistoryItems(IEnumerable<LastOpenedHistoryItem> historyItems) private List<Result> GetHistoryItems(IEnumerable<LastOpenedHistoryItem> historyItems)
{ {
var results = new List<Result>(); var results = new List<Result>();
var historyItemsFiltered = historyItems.Where(x => x.HistoryStyle == Settings.HistoryStyle).ToList();
if (Settings.HistoryStyle == HistoryStyle.Query) if (Settings.HistoryStyle == HistoryStyle.Query)
{ {
foreach (var h in historyItemsFiltered) foreach (var h in historyItems)
{ {
var result = new Result var result = new Result
{ {
@ -1342,7 +1341,7 @@ namespace Flow.Launcher.ViewModel
} }
else else
{ {
foreach (var h in historyItemsFiltered) foreach (var h in historyItems)
{ {
var result = new Result var result = new Result
{ {
@ -1365,14 +1364,15 @@ namespace Flow.Launcher.ViewModel
{ {
await reflectResult.AsyncAction(c); await reflectResult.AsyncAction(c);
} }
return false; return false;
} }
else
App.API.BackToQueryResults(); {
App.API.ChangeQuery(h.Query); App.API.BackToQueryResults();
return false; App.API.ChangeQuery(h.Query);
}, return false;
}
},
Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\uE81C") Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\uE81C")
}; };
results.Add(result); results.Add(result);