Skip to content

Commit f6f1254

Browse files
committed
archive status spam fix
package page will no longer spam status endpoint
1 parent 075c5d2 commit f6f1254

File tree

6 files changed

+15
-11
lines changed

6 files changed

+15
-11
lines changed

src/Tetrifact.Core/ArchiveService.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ public async Task CreateNextQueuedArchive()
280280

281281
await this.CreateArchive(archiveQueueInfo.PackageId);
282282

283-
progress.State = PackageArchiveCreationStates.Processed_CleanupRequired;
283+
progress.State = PackageArchiveCreationStates.Processed_ArchiveAvailable;
284284
_cache.Set(progressCacheKey, progress);
285285

286286
// finally, cleanup queue file

src/Tetrifact.Core/PackageArchiveCreationStates.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ public enum PackageArchiveCreationStates
66
ArchiveGenerating,
77
Processed_PackageNotFound,
88
Processed_ArchiveAvailable,
9-
Processed_ArchiveNotGenerated,
10-
Processed_CleanupRequired
9+
Processed_ArchiveNotGenerated
1110
}
1211
}

src/Tetrifact.Web/Controllers/HomeController.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,13 @@ public IActionResult ArchiveStatus(string packageId)
213213
try
214214
{
215215
string progressCacheKey = _archiveService.GetArchiveProgressKey(packageId);
216+
// try from cache first, if under active creation, this will be faster
216217
ArchiveProgressInfo archiveGenerationStatus = _cache.Get<ArchiveProgressInfo>(progressCacheKey);
218+
if (archiveGenerationStatus == null)
219+
// the longer way
220+
archiveGenerationStatus = _archiveService.GetPackageArchiveStatus(packageId);
217221

218-
ViewData["packageId"] = packageId;
222+
ViewData["packageId"] = packageId;
219223
ViewData["layoutViewModel"] = new LayoutViewModel {
220224
PageTitle = "Archive status",
221225
ServerName = _settings.ServerName,

src/Tetrifact.Web/Startup.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public void ConfigureServices(IServiceCollection services)
106106
});
107107

108108
services.AddMemoryCache();
109-
services.AddResponseCompression();
109+
services.AddResponseCompression(); // http compression
110110
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
111111
}
112112

@@ -156,7 +156,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerF
156156
app.UseStaticFiles();
157157
app.UseCookiePolicy();
158158
app.UseRouting();
159-
app.UseResponseCompression();
159+
app.UseResponseCompression(); // http compression
160160

161161
IServiceProvider serviceProvider = app.ApplicationServices;
162162
app.UseEndpoints(endpoints =>

src/Tetrifact.Web/Views/Shared/ArchiveProgress.cshtml

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
string packageId = ViewData["packageId"] as string;
55
}
66

7-
<div data-complete="@(Model != null && Model.State == PackageArchiveCreationStates.Processed_ArchiveAvailable)">
7+
<div data-complete="@(Model.State)">
88
@{
99
// TODO :simply this if statement
1010
}
11-
@if (Model == null || Model.State == PackageArchiveCreationStates.Processed_ArchiveNotGenerated || Model.State == PackageArchiveCreationStates.Processed_ArchiveAvailable || Model.State == PackageArchiveCreationStates.Processed_CleanupRequired)
11+
@if (Model.State == PackageArchiveCreationStates.Processed_ArchiveNotGenerated || Model.State == PackageArchiveCreationStates.Processed_ArchiveAvailable)
1212
{
1313
<a class="button button-header" href="/v1/archives/@packageId">&#10515; Download</a>
1414
}
@@ -21,7 +21,7 @@
2121
else if (Model.State == PackageArchiveCreationStates.ArchiveGenerating)
2222
{
2323
<text>
24-
Preparing package for dowload.
24+
Preparing package for download.
2525
</text>
2626

2727
@if (Model.StartedUtc.HasValue)

src/Tetrifact.Web/wwwroot/scripts/package.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,10 @@ document.addEventListener('click', onClick, false);
7878
if (timer !== null) {
7979
const node = document.createElement('div')
8080
node.innerHTML = html
81-
const isComplete = node.getAttribute('data-complete')
81+
let status = node.children[0].getAttribute('data-complete'),
82+
isInProgress = status == 'ArchiveGenerating' || status == 'Queued'
8283

83-
if (isComplete == 'true') {
84+
if (!isInProgress) {
8485
window.clearInterval(timer)
8586
timer = null
8687
}

0 commit comments

Comments
 (0)