fix onboarding cache and remove the stupid renovate stuff

This commit is contained in:
KingKDot
2026-07-15 10:14:42 -05:00
parent 0277c2dbcf
commit c577d8b2b6
5 changed files with 34 additions and 63 deletions
-60
View File
@@ -1,60 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"schedule": ["before 6am on Monday"],
"timezone": "UTC",
"pinDigests": true,
"labels": ["dependencies"],
"packageRules": [
{
"description": "Group Overlord-Server minor and patch npm updates",
"matchManagers": ["npm"],
"matchPaths": ["Overlord-Server/package.json"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "Overlord-Server dependencies (minor + patch)",
"automerge": false
},
{
"description": "Group Overlord-Desktop minor and patch npm updates",
"matchManagers": ["npm"],
"matchPaths": ["Overlord-Desktop/package.json"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "Overlord-Desktop dependencies (minor + patch)",
"automerge": false
},
{
"description": "Group Go module minor and patch updates",
"matchManagers": ["gomod"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "Go modules (minor + patch)",
"automerge": false
},
{
"description": "Group GitHub Actions minor and patch updates",
"matchManagers": ["github-actions"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "GitHub Actions (minor + patch)",
"automerge": false
},
{
"description": "Group Docker base image minor and patch updates",
"matchManagers": ["dockerfile", "docker-compose"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "Docker base images (minor + patch)",
"automerge": false
},
{
"description": "Individual PRs for all major updates",
"matchUpdateTypes": ["major"],
"groupName": null,
"automerge": false
}
],
"ignoreDeps": [],
"vulnerabilityAlerts": {
"enabled": true,
"labels": ["dependencies", "security"]
}
}
+4 -1
View File
@@ -159,7 +159,10 @@ if (host) {
async function loadCurrentUser() { async function loadCurrentUser() {
try { try {
const res = await fetch("/api/auth/me", { credentials: "include" }); const res = await fetch("/api/auth/me", {
credentials: "include",
cache: "no-store",
});
if (!res.ok) { if (!res.ok) {
return; return;
} }
@@ -119,6 +119,7 @@ export function showOnboardingIfNeeded(user) {
const response = await fetch("/api/auth/onboarding/complete", { const response = await fetch("/api/auth/onboarding/complete", {
method: "POST", method: "POST",
credentials: "include", credentials: "include",
cache: "no-store",
}); });
if (!response.ok) throw new Error("Could not save your onboarding status."); if (!response.ok) throw new Error("Could not save your onboarding status.");
overlay.remove(); overlay.remove();
+10
View File
@@ -61,6 +61,7 @@ describe("account onboarding", () => {
const meUrl = new URL("https://localhost/api/auth/me"); const meUrl = new URL("https://localhost/api/auth/me");
const before = await handleAuthRoutes(new Request(meUrl, { headers }), meUrl, mockServer); const before = await handleAuthRoutes(new Request(meUrl, { headers }), meUrl, mockServer);
expect(before?.status).toBe(200); expect(before?.status).toBe(200);
expect(before?.headers.get("cache-control")).toContain("no-store");
expect((await before!.json()).needsOnboarding).toBe(true); expect((await before!.json()).needsOnboarding).toBe(true);
const completeUrl = new URL("https://localhost/api/auth/onboarding/complete"); const completeUrl = new URL("https://localhost/api/auth/onboarding/complete");
@@ -70,10 +71,19 @@ describe("account onboarding", () => {
mockServer, mockServer,
); );
expect(completed?.status).toBe(200); expect(completed?.status).toBe(200);
expect(completed?.headers.get("cache-control")).toContain("no-store");
const after = await handleAuthRoutes(new Request(meUrl, { headers }), meUrl, mockServer); const after = await handleAuthRoutes(new Request(meUrl, { headers }), meUrl, mockServer);
expect(after?.status).toBe(200); expect(after?.status).toBe(200);
expect((await after!.json()).needsOnboarding).toBe(false); expect((await after!.json()).needsOnboarding).toBe(false);
const repeated = await handleAuthRoutes(
new Request(completeUrl, { method: "POST", headers }),
completeUrl,
mockServer,
);
expect(repeated?.status).toBe(200);
expect((await repeated!.json()).needsOnboarding).toBe(false);
} finally { } finally {
deleteUser(created.userId!); deleteUser(created.userId!);
} }
@@ -514,7 +514,10 @@ export async function handleAuthRoutes(
permissions, permissions,
}), }),
{ {
headers: { "Content-Type": "application/json" }, headers: {
"Content-Type": "application/json",
"Cache-Control": "no-store, private",
},
}, },
); );
} }
@@ -526,7 +529,21 @@ export async function handleAuthRoutes(
} }
completeUserOnboarding(user.userId); completeUserOnboarding(user.userId);
return Response.json({ ok: true, needsOnboarding: false }); const dbUser = getUserById(user.userId);
if (!dbUser || dbUser.onboarding_completed_at === null) {
return Response.json(
{ error: "Could not save onboarding status" },
{
status: 500,
headers: { "Cache-Control": "no-store, private" },
},
);
}
return Response.json(
{ ok: true, needsOnboarding: false },
{ headers: { "Cache-Control": "no-store, private" } },
);
} }
return null; return null;