Skip to content

Commit 5ac68b8

Browse files
authored
fix: avoid unnecessary re-downloads of the same runner as an "update" (#812)
2 parents 655af86 + c76e598 commit 5ac68b8

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/models/runner.vala

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,19 @@ namespace ProtonPlus.Models {
7070
break;
7171
}
7272

73+
var base_runner_directory = "%s/%s".printf (runner.group.launcher.directory, runner.group.directory);
74+
var runner_directory = "%s/%s Latest".printf (base_runner_directory, runner.title);
75+
var tag_path = "%s/.protonplus_tag".printf (runner_directory);
76+
7377
var code = yield Utils.Web.get_request ("%s?%s".printf (runner.endpoint, query_param), runner.get_type, out response);
7478

75-
if (code != ReturnCode.VALID_REQUEST)
79+
if (code != ReturnCode.VALID_REQUEST) {
80+
// If API is unavailable but we have a tag file, assume up to date
81+
if (FileUtils.test (tag_path, FileTest.IS_REGULAR))
82+
return ReturnCode.NOTHING_TO_UPDATE;
7683
return code;
77-
84+
}
85+
7886
var root_node = Utils.Parser.get_node_from_json (response);
7987
if (root_node == null)
8088
return ReturnCode.UNKNOWN_ERROR;
@@ -123,9 +131,11 @@ namespace ProtonPlus.Models {
123131
if (download_url == "" || !download_url.contains (".tar"))
124132
return ReturnCode.UNKNOWN_ERROR;
125133

126-
var base_runner_directory = "%s/%s".printf (runner.group.launcher.directory, runner.group.directory);
127-
128-
var runner_directory = "%s/%s Latest".printf (base_runner_directory, runner.title);
134+
if (FileUtils.test (tag_path, FileTest.IS_REGULAR)) {
135+
var stored_tag = Utils.Filesystem.get_file_content (tag_path).strip ();
136+
if (stored_tag != "" && title == stored_tag)
137+
return ReturnCode.NOTHING_TO_UPDATE;
138+
}
129139

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

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

152-
if (title == version_title || title == proton_title)
162+
if (title == version_title || title == proton_title) {
163+
Utils.Filesystem.create_file (tag_path, title);
153164
return ReturnCode.NOTHING_TO_UPDATE;
165+
}
154166

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

196+
Utils.Filesystem.create_file (tag_path, title);
197+
184198
var deleted = yield Utils.Filesystem.delete_directory (backup_runner_directory);
185199
if (!deleted)
186200
return ReturnCode.UNKNOWN_ERROR;
187201

188202
return ReturnCode.RUNNER_UPDATED;
189203
}
190204
}
191-
}
205+
}

0 commit comments

Comments
 (0)