Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test init initasync #11

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 29 additions & 31 deletions src/Flow.Launcher.Plugin.ClipboardPlus/Main.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class ClipboardPlus : IAsyncPlugin, IAsyncReloadable, IContextMenu, IPlug

// Clipboard monitor instance
// Warning: Do not init the instance in InitAsync function! This will cause issues.
private IClipboardMonitor? ClipboardMonitor;
private IClipboardMonitor? ClipboardMonitor = null;

// Observable data formats
private readonly ObservableDataFormats ObservableDataFormats = new()
Expand All @@ -54,7 +54,7 @@ public class ClipboardPlus : IAsyncPlugin, IAsyncReloadable, IContextMenu, IPlug
};

// Windows clipboard helper
private WindowsClipboardHelper WindowsClipboardHelper = new();
private WindowsClipboardHelper WindowsClipboardHelper = null!;

// Records list & Score
// Latest records are at the beginning of the list.
Expand Down Expand Up @@ -103,30 +103,6 @@ public class ClipboardPlus : IAsyncPlugin, IAsyncReloadable, IContextMenu, IPlug

#endregion

#region Constructor

public ClipboardPlus()
{
if (OperatingSystem.IsWindowsVersionAtLeast(10, 0, 10240))
{
ClipboardMonitor = new ClipboardMonitorWin()
{
ObserveLastEntry = false,
ObservableFormats = ObservableDataFormats
};
}
else
{
ClipboardMonitor = new ClipboardMonitorW()
{
ObserveLastEntry = false,
ObservableFormats = ObservableDataFormats
};
}
}

#endregion

#region IAsyncPlugin Interface

public Task<List<Result>> QueryAsync(Query query, CancellationToken token)
Expand Down Expand Up @@ -425,8 +401,6 @@ public async Task<List<Result>> Query(Query query)
public async Task InitAsync(PluginInitContext context)
{
Context = context;
ClipboardMonitor!.SetContext(context);
WindowsClipboardHelper.SetClipboardPlus(this);

// init path helper
PathHelper.Init(context, GetType().Assembly.GetName().Name ?? "Flow.Launcher.Plugin.ClipboardPlus");
Expand All @@ -441,6 +415,10 @@ public async Task InitAsync(PluginInitContext context)
// init score helper
ScoreHelper = new ScoreHelper(ScoreInterval);

// init windows clipboard helper
WindowsClipboardHelper = new();
WindowsClipboardHelper.SetClipboardPlus(this);

// setup use Windows clipboard history only
UseWindowsClipboardHistoryOnly = Settings.UseWindowsClipboardHistoryOnly && CheckUseWindowsClipboardHistoryOnly();
Context.LogInfo(ClassName, $"Use Windows clipboard history only: {UseWindowsClipboardHistoryOnly}");
Expand All @@ -453,9 +431,12 @@ public async Task InitAsync(PluginInitContext context)
Context.LogDebug(ClassName, "Init database successfully");

// dispose clipboard monitor
ClipboardMonitor.ClipboardChanged -= ClipboardMonitor_OnClipboardChanged;
ClipboardMonitor.Dispose();
ClipboardMonitor = null;
if (ClipboardMonitor != null)
{
ClipboardMonitor.ClipboardChanged -= ClipboardMonitor_OnClipboardChanged;
ClipboardMonitor.Dispose();
ClipboardMonitor = null;
}

// init Windows clipboard helper & records from Windows clipboard history
EnableWindowsClipboardHelper(true);
Expand All @@ -473,6 +454,23 @@ public async Task InitAsync(PluginInitContext context)
Context.LogDebug(ClassName, $"Init {RecordsList.Count} records successfully");

// init & start clipboard monitor
if (OperatingSystem.IsWindowsVersionAtLeast(10, 0, 10240))
{
ClipboardMonitor = new ClipboardMonitorWin()
{
ObserveLastEntry = false,
ObservableFormats = ObservableDataFormats
};
}
else
{
ClipboardMonitor = new ClipboardMonitorW()
{
ObserveLastEntry = false,
ObservableFormats = ObservableDataFormats
};
}
ClipboardMonitor.SetContext(context);
ClipboardMonitor.ClipboardChanged += ClipboardMonitor_OnClipboardChanged;
ClipboardMonitor.StartMonitoring();
if (ClipboardMonitor.GetType() == typeof(ClipboardMonitorWin))
Expand Down
Loading