smarter canvas updates, only update when a change is detected

This commit is contained in:
2023-07-31 14:06:40 -06:00
parent e987df30d3
commit 70db40867c
13 changed files with 465 additions and 204 deletions

View File

@@ -84,6 +84,11 @@
>
Sync With Canvas
</button>
@if(planner.LoadingCanvasData)
{
<Spinner />
}
</div>
<CourseDetails />
}

View File

@@ -1,6 +1,7 @@
global using System.Text.Json.Serialization;
global using System.Text.Json;
global using System.ComponentModel.DataAnnotations;
global using Management.Services.Canvas;
global using CanvasModel.EnrollmentTerms;
global using CanvasModel.Courses;
global using CanvasModel;
@@ -19,8 +20,12 @@ var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped<IWebRequestor, WebRequestor>();
builder.Services.AddScoped<CanvasServiceUtils>();
builder.Services.AddScoped<CanvasAssignmentService>();
builder.Services.AddScoped<CanvasService, CanvasService>();
builder.Services.AddScoped<YamlManager>();
builder.Services.AddScoped<CoursePlanner>();
builder.Services.AddScoped<AssignmentDragContainer>();

View File

@@ -14,19 +14,24 @@
}
protected override async Task OnInitializedAsync()
{
if(
planner.CanvasAssignments == null
&& planner.LocalCourse != null
&& planner.LocalCourse.CanvasId != null
)
{
var canvasId = planner.LocalCourse.CanvasId ?? throw new Exception("no canvas id found for selected course");
planner.CanvasAssignments = await canvas.GetAssignments(canvasId);
planner.CanvasModules = await canvas.GetModules(canvasId);
System.Console.WriteLine(JsonSerializer.Serialize(planner.CanvasAssignments));
}
await base.OnInitializedAsync();
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(firstRender)
{
if(
planner.CanvasAssignments == null
&& planner.LocalCourse != null
&& planner.LocalCourse.CanvasId != null
)
{
await planner.LoadCanvasData();
}
}
}
private void reload()
{

View File

@@ -140,7 +140,19 @@
</h4>
@if(isSyncedWithCanvas)
{
<div>Synced With Canvas</div>
@if(planner.LocalCourse != null
&& planner.LocalCourse.CanvasId != null
&& planner.CanvasAssignments != null
&& planner.CanvasModules != null
&& planner.AssignmentNeedsUpdates(Assignment)
)
{
<div>need to update canvas</div>
}
else
{
<div>Canvas is up to date</div>
}
}
else
{