Skip to content

Commit

Permalink
WIP Part 9: Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
Vysp3r committed Sep 22, 2024
1 parent 58dd1d5 commit 2641e70
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 31 deletions.
6 changes: 3 additions & 3 deletions src/models/launcher.vala
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ namespace ProtonPlus.Models {
SNAP
}

public delegate void callback (Release release);
public signal void install (Release release);
public signal void uninstall (Release release);
public delegate bool callback (Release release);
public signal bool install (Release release);
public signal bool uninstall (Release release);

public Launcher (string title, InstallationTypes installation_type, string icon_path, string[] directories) {
this.title = title;
Expand Down
48 changes: 29 additions & 19 deletions src/models/launchers/hgl.vala
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ namespace ProtonPlus.Models.Launchers {

if (installed) {
groups = get_groups ();
install.connect ((release) => install_script);
uninstall.connect ((release) => uninstall_script);
install.connect ((release) => install_script (release));
uninstall.connect ((release) => uninstall_script (release));
}
}

Expand Down Expand Up @@ -78,24 +78,25 @@ namespace ProtonPlus.Models.Launchers {
return runners;
}

void install_script (Release release) {
bool install_script (Release release) {
try {
string path = "/.config";
if (release.runner.group.launcher.title.contains ("Flatpak"))path = "/.var/app/com.heroicgameslauncher.hgl/config";
path = Environment.get_home_dir () + path + "/heroic/store/wine-downloader-info.json";

Json.Node rootNode = Json.from_string (Utils.Filesystem.get_file_content (path));
Json.Object rootObj = rootNode.get_object ();
Json.Node root_node = Json.from_string (Utils.Filesystem.get_file_content (path));
Json.Object root_object = root_node.get_object ();

var objArray = rootObj.get_array_member ("wine-releases");
if (objArray == null)return;
var wine_release_array = root_object.get_array_member ("wine-releases");
if (wine_release_array == null)
return false;

bool found = false;

var runner = release.runner as Runners.Basic;

for (var i = 0; i < objArray.get_length (); i++) {
var obj = objArray.get_object_element (i);
for (var i = 0; i < wine_release_array.get_length (); i++) {
var obj = wine_release_array.get_object_element (i);

if (obj.get_string_member ("version").contains (runner.get_directory_name (release.title))) {
obj.set_boolean_member ("isInstalled", true);
Expand Down Expand Up @@ -124,29 +125,34 @@ namespace ProtonPlus.Models.Launchers {

obj.set_int_member ("disksize", (int64) Utils.Filesystem.get_directory_size (obj.get_string_member ("installDir")));

objArray.add_object_element (obj);
wine_release_array.add_object_element (obj);
}

Utils.Filesystem.modify_file (path, Json.to_string (rootNode, true));
Utils.Filesystem.modify_file (path, Json.to_string (root_node, true));

return true;
} catch (Error e) {
message (e.message);

return false;
}
}

void uninstall_script (Release release) {
bool uninstall_script (Release release) {
try {
string path = "/.config";
if (release.runner.group.launcher.title.contains ("Flatpak"))path = "/.var/app/com.heroicgameslauncher.hgl/config";
path = Environment.get_home_dir () + path + "/heroic/store/wine-downloader-info.json";

Json.Node rootNode = Json.from_string (Utils.Filesystem.get_file_content (path));
Json.Object rootObj = rootNode.get_object ();
Json.Node root_node = Json.from_string (Utils.Filesystem.get_file_content (path));
Json.Object root_object = root_node.get_object ();

var objArray = rootObj.get_array_member ("wine-releases");
if (objArray == null)return;
var wine_release_array = root_object.get_array_member ("wine-releases");
if (wine_release_array == null)
return false;

for (var i = 0; i < objArray.get_length (); i++) {
var obj = objArray.get_object_element (i);
for (var i = 0; i < wine_release_array.get_length (); i++) {
var obj = wine_release_array.get_object_element (i);

var runner = release.runner as Runners.Basic;

Expand All @@ -158,9 +164,13 @@ namespace ProtonPlus.Models.Launchers {
}
}

Utils.Filesystem.modify_file (path, Json.to_string (rootNode, true));
Utils.Filesystem.modify_file (path, Json.to_string (root_node, true));

return true;
} catch (Error e) {
message (e.message);

return false;
}
}
}
Expand Down
16 changes: 12 additions & 4 deletions src/models/releases/basic.vala
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ namespace ProtonPlus.Models.Releases {
else
send_message (_("An unexpected error occurred while installing %s.").printf (title));

if (canceled || !install_success)
yield start_remove ();

refresh_state ();

return true;
Expand All @@ -66,9 +69,8 @@ namespace ProtonPlus.Models.Releases {

var download_valid = yield Utils.Web.Download (download_url, path, () => canceled, (is_percent, progress) => this.progress = is_percent? @"$progress%" : Utils.Filesystem.convert_bytes_to_string (progress));

if (!download_valid) {
if (!download_valid)
return false;
}

send_message (_("Extracting..."));

Expand All @@ -90,7 +92,10 @@ namespace ProtonPlus.Models.Releases {

send_message (_("Running installation script..."));

runner.group.launcher.install (this);
var install_script_success = runner.group.launcher.install (this);

if (!install_script_success)
return false;

return true;
}
Expand Down Expand Up @@ -122,7 +127,10 @@ namespace ProtonPlus.Models.Releases {

send_message (_("Running removal script..."));

runner.group.launcher.uninstall (this);
var uninstall_script_success = runner.group.launcher.uninstall (this);

if (!uninstall_script_success)
return false;

return true;
}
Expand Down
8 changes: 6 additions & 2 deletions src/models/releases/github-action.vala
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ namespace ProtonPlus.Models.Releases {

source_path = yield Utils.Filesystem.extract (directory, source_path.substring (0, source_path.length - 4).replace (directory, ""), ".tar", () => canceled);

// TODO Check if the second extraction was good
if (source_path == "")
return false;

send_message (_("Renaming..."));

Expand All @@ -44,7 +45,10 @@ namespace ProtonPlus.Models.Releases {

send_message (_("Running installation script..."));

runner.group.launcher.install (this);
var install_script_success = runner.group.launcher.install (this);

if (!install_script_success)
return false;

return true;
}
Expand Down
5 changes: 4 additions & 1 deletion src/models/releases/steamtinkerlaunch.vala
Original file line number Diff line number Diff line change
Expand Up @@ -338,9 +338,12 @@ namespace ProtonPlus.Models.Releases {

if (upgrade_success)
send_message (_("The upgrade of %s is complete.").printf (title));
else
else {
send_message (_("An unexpected error occurred while upgrading %s."));

yield start_remove (false);
}

refresh_state (); // Force UI state refresh.

return upgrade_success;
Expand Down
2 changes: 0 additions & 2 deletions src/widgets/runner-row.vala
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ namespace ProtonPlus.Widgets {
}
}

// TODO Add a way to add the load more row if needed

spinner.stop ();
spinner.set_visible (false);
});
Expand Down

0 comments on commit 2641e70

Please sign in to comment.