Skip to content
Merged
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
28 changes: 21 additions & 7 deletions src/models/runner.vala
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,19 @@ namespace ProtonPlus.Models {
break;
}

var base_runner_directory = "%s/%s".printf (runner.group.launcher.directory, runner.group.directory);
var runner_directory = "%s/%s Latest".printf (base_runner_directory, runner.title);
var tag_path = "%s/.protonplus_tag".printf (runner_directory);

var code = yield Utils.Web.get_request ("%s?%s".printf (runner.endpoint, query_param), runner.get_type, out response);

if (code != ReturnCode.VALID_REQUEST)
if (code != ReturnCode.VALID_REQUEST) {
// If API is unavailable but we have a tag file, assume up to date
if (FileUtils.test (tag_path, FileTest.IS_REGULAR))
return ReturnCode.NOTHING_TO_UPDATE;
return code;

}

var root_node = Utils.Parser.get_node_from_json (response);
if (root_node == null)
return ReturnCode.UNKNOWN_ERROR;
Expand Down Expand Up @@ -123,9 +131,11 @@ namespace ProtonPlus.Models {
if (download_url == "" || !download_url.contains (".tar"))
return ReturnCode.UNKNOWN_ERROR;

var base_runner_directory = "%s/%s".printf (runner.group.launcher.directory, runner.group.directory);

var runner_directory = "%s/%s Latest".printf (base_runner_directory, runner.title);
if (FileUtils.test (tag_path, FileTest.IS_REGULAR)) {
var stored_tag = Utils.Filesystem.get_file_content (tag_path).strip ();
if (stored_tag != "" && title == stored_tag)
return ReturnCode.NOTHING_TO_UPDATE;
}

var version_content = Utils.Filesystem.get_file_content ("%s/version".printf (runner_directory));
if (version_content == "")
Expand All @@ -149,8 +159,10 @@ namespace ProtonPlus.Models {

var proton_title = proton_content.substring (proton_start_index, proton_end_index - proton_start_index);

if (title == version_title || title == proton_title)
if (title == version_title || title == proton_title) {
Utils.Filesystem.create_file (tag_path, title);
return ReturnCode.NOTHING_TO_UPDATE;
}

var settings_path = "%s/user_settings.py".printf (runner_directory);
var settings_exists = FileUtils.test (settings_path, FileTest.IS_REGULAR);
Expand Down Expand Up @@ -181,11 +193,13 @@ namespace ProtonPlus.Models {
Utils.Filesystem.create_file (settings_path, settings_content);
}

Utils.Filesystem.create_file (tag_path, title);

var deleted = yield Utils.Filesystem.delete_directory (backup_runner_directory);
if (!deleted)
return ReturnCode.UNKNOWN_ERROR;

return ReturnCode.RUNNER_UPDATED;
}
}
}
}