Skip to content

Commit ce6c2cb

Browse files
committed
Add return value for api functions
1 parent a8bc55d commit ce6c2cb

File tree

5 files changed

+50
-24
lines changed

5 files changed

+50
-24
lines changed

Flow.Launcher.Core/Plugin/PluginInstaller.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ await DownloadFileAsync(
7474
throw new FileNotFoundException($"Plugin {newPlugin.ID} zip file not found at {filePath}", filePath);
7575
}
7676

77-
API.InstallPlugin(newPlugin, filePath);
77+
if (!API.InstallPlugin(newPlugin, filePath))
78+
{
79+
return;
80+
}
7881

7982
if (!newPlugin.IsFromLocalInstallPath)
8083
{
@@ -167,7 +170,10 @@ public static async Task UninstallPluginAndCheckRestartAsync(PluginMetadata oldP
167170

168171
try
169172
{
170-
await API.UninstallPluginAsync(oldPlugin, removePluginSettings);
173+
if (!await API.UninstallPluginAsync(oldPlugin, removePluginSettings))
174+
{
175+
return;
176+
}
171177
}
172178
catch (Exception e)
173179
{
@@ -223,7 +229,10 @@ await DownloadFileAsync(
223229
return;
224230
}
225231

226-
await API.UpdatePluginAsync(oldPlugin, newPlugin, filePath);
232+
if (!await API.UpdatePluginAsync(oldPlugin, newPlugin, filePath))
233+
{
234+
return;
235+
}
227236
}
228237
catch (Exception e)
229238
{

Flow.Launcher.Core/Plugin/PluginManager.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -540,22 +540,24 @@ public static bool PluginModified(string id)
540540
return _modifiedPlugins.Contains(id);
541541
}
542542

543-
public static async Task UpdatePluginAsync(PluginMetadata existingVersion, UserPlugin newVersion, string zipFilePath)
543+
public static async Task<bool> UpdatePluginAsync(PluginMetadata existingVersion, UserPlugin newVersion, string zipFilePath)
544544
{
545545
var installSuccess = InstallPlugin(newVersion, zipFilePath, checkModified:false);
546-
if (!installSuccess) return;
547-
await UninstallPluginAsync(existingVersion, removePluginFromSettings:false, removePluginSettings:false, checkModified: false);
546+
if (!installSuccess) return false;
547+
var uninstallSuccess = await UninstallPluginAsync(existingVersion, removePluginFromSettings:false, removePluginSettings:false, checkModified: false);
548+
if (!uninstallSuccess) return false;
548549
_modifiedPlugins.Add(existingVersion.ID);
550+
return true;
549551
}
550552

551-
public static void InstallPlugin(UserPlugin plugin, string zipFilePath)
553+
public static bool InstallPlugin(UserPlugin plugin, string zipFilePath)
552554
{
553-
InstallPlugin(plugin, zipFilePath, checkModified: true);
555+
return InstallPlugin(plugin, zipFilePath, checkModified: true);
554556
}
555557

556-
public static async Task UninstallPluginAsync(PluginMetadata plugin, bool removePluginFromSettings = true, bool removePluginSettings = false)
558+
public static async Task<bool> UninstallPluginAsync(PluginMetadata plugin, bool removePluginFromSettings = true, bool removePluginSettings = false)
557559
{
558-
await UninstallPluginAsync(plugin, removePluginFromSettings, removePluginSettings, true);
560+
return await UninstallPluginAsync(plugin, removePluginFromSettings, removePluginSettings, true);
559561
}
560562

561563
#endregion

Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -547,8 +547,10 @@ public interface IPublicAPI
547547
/// <param name="zipFilePath">
548548
/// Path to the zip file containing the plugin. It will be unzipped to the temporary directory, removed and installed.
549549
/// </param>
550-
/// <returns></returns>
551-
public Task UpdatePluginAsync(PluginMetadata pluginMetadata, UserPlugin plugin, string zipFilePath);
550+
/// <returns>
551+
/// True if the plugin is updated successfully, false otherwise.
552+
/// </returns>
553+
public Task<bool> UpdatePluginAsync(PluginMetadata pluginMetadata, UserPlugin plugin, string zipFilePath);
552554

553555
/// <summary>
554556
/// Install a plugin. By default will remove the zip file if installation is from url,
@@ -558,7 +560,10 @@ public interface IPublicAPI
558560
/// <param name="zipFilePath">
559561
/// Path to the zip file containing the plugin. It will be unzipped to the temporary directory, removed and installed.
560562
/// </param>
561-
public void InstallPlugin(UserPlugin plugin, string zipFilePath);
563+
/// <returns>
564+
/// True if the plugin is installed successfully, false otherwise.
565+
/// </returns>
566+
public bool InstallPlugin(UserPlugin plugin, string zipFilePath);
562567

563568
/// <summary>
564569
/// Uninstall a plugin
@@ -567,8 +572,10 @@ public interface IPublicAPI
567572
/// <param name="removePluginSettings">
568573
/// Plugin has their own settings. If this is set to true, the plugin settings will be removed.
569574
/// </param>
570-
/// <returns></returns>
571-
public Task UninstallPluginAsync(PluginMetadata pluginMetadata, bool removePluginSettings = false);
575+
/// <returns>
576+
/// True if the plugin is updated successfully, false otherwise.
577+
/// </returns>
578+
public Task<bool> UninstallPluginAsync(PluginMetadata pluginMetadata, bool removePluginSettings = false);
572579

573580
/// <summary>
574581
/// Log debug message of the time taken to execute a method

Flow.Launcher/PublicAPIInstance.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -566,13 +566,13 @@ public Task<bool> UpdatePluginManifestAsync(bool usePrimaryUrlOnly = false, Canc
566566

567567
public bool PluginModified(string id) => PluginManager.PluginModified(id);
568568

569-
public Task UpdatePluginAsync(PluginMetadata pluginMetadata, UserPlugin plugin, string zipFilePath) =>
569+
public Task<bool> UpdatePluginAsync(PluginMetadata pluginMetadata, UserPlugin plugin, string zipFilePath) =>
570570
PluginManager.UpdatePluginAsync(pluginMetadata, plugin, zipFilePath);
571571

572-
public void InstallPlugin(UserPlugin plugin, string zipFilePath) =>
572+
public bool InstallPlugin(UserPlugin plugin, string zipFilePath) =>
573573
PluginManager.InstallPlugin(plugin, zipFilePath);
574574

575-
public Task UninstallPluginAsync(PluginMetadata pluginMetadata, bool removePluginSettings = false) =>
575+
public Task<bool> UninstallPluginAsync(PluginMetadata pluginMetadata, bool removePluginSettings = false) =>
576576
PluginManager.UninstallPluginAsync(pluginMetadata, removePluginSettings);
577577

578578
public long StopwatchLogDebug(string className, string message, Action action, [CallerMemberName] string methodName = "") =>

Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,11 @@ await DownloadFileAsync(
352352
}
353353
else
354354
{
355-
await Context.API.UpdatePluginAsync(x.PluginExistingMetadata, x.PluginNewUserPlugin,
356-
downloadToFilePath);
355+
if (!await Context.API.UpdatePluginAsync(x.PluginExistingMetadata, x.PluginNewUserPlugin,
356+
downloadToFilePath))
357+
{
358+
return;
359+
}
357360

358361
if (Settings.AutoRestartAfterChanging)
359362
{
@@ -456,8 +459,9 @@ await DownloadFileAsync(
456459
if (cts.IsCancellationRequested)
457460
return;
458461
else
459-
await Context.API.UpdatePluginAsync(plugin.PluginExistingMetadata, plugin.PluginNewUserPlugin,
460-
downloadToFilePath);
462+
if (!await Context.API.UpdatePluginAsync(plugin.PluginExistingMetadata, plugin.PluginNewUserPlugin,
463+
downloadToFilePath))
464+
return;
461465
}
462466
catch (Exception ex)
463467
{
@@ -686,7 +690,8 @@ private void Install(UserPlugin plugin, string downloadedFilePath)
686690

687691
try
688692
{
689-
Context.API.InstallPlugin(plugin, downloadedFilePath);
693+
if (!Context.API.InstallPlugin(plugin, downloadedFilePath))
694+
return;
690695

691696
if (!plugin.IsFromLocalInstallPath)
692697
File.Delete(downloadedFilePath);
@@ -779,7 +784,10 @@ private async Task UninstallAsync(PluginMetadata plugin)
779784
Context.API.GetTranslation("plugin_pluginsmanager_keep_plugin_settings_subtitle"),
780785
Context.API.GetTranslation("plugin_pluginsmanager_keep_plugin_settings_title"),
781786
button: MessageBoxButton.YesNo) == MessageBoxResult.No;
782-
await Context.API.UninstallPluginAsync(plugin, removePluginSettings);
787+
if (!await Context.API.UninstallPluginAsync(plugin, removePluginSettings))
788+
{
789+
return;
790+
}
783791
}
784792
catch (ArgumentException e)
785793
{

0 commit comments

Comments
 (0)