@@ -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