Skip to content

Commit d4291d9

Browse files
committed
cache the front page
1 parent 5520b94 commit d4291d9

2 files changed

Lines changed: 62 additions & 29 deletions

File tree

src/resources/projectapi.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ class ProjectApi {
253253

254254
async getFrontPage() {
255255
return new Promise((resolve, reject) => {
256-
const url = `${OriginApiUrl}/api/v1/projects/frontpage?username=${this.username}&token=${this.token}`; // so mods can see ALL!!!!!!!!!!!!!
256+
const url = `${OriginApiUrl}/api/v1/projects/frontpage?token=${this.token}`;
257257
fetch(url)
258258
.then((res) => {
259259
if (res.status === 429) return reject(429);

src/routes/+page.svelte

Lines changed: 61 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script>
22
import { onMount } from "svelte";
33
import { page } from "$app/stores";
4-
import { browser } from '$app/environment';
4+
import { browser } from "$app/environment";
55
66
import { PUBLIC_API_URL, PUBLIC_STUDIO_URL } from "$env/static/public";
77
@@ -35,7 +35,7 @@
3535
3636
const isAprilFools = () => {
3737
if (!browser) return false;
38-
38+
3939
const date = new Date(Date.now());
4040
const urlParams = $page.url.searchParams;
4141
const isAprilFools = date.getMonth() === 3 && date.getDate() === 1; // month is 0 indexed for literally no reason
@@ -152,7 +152,6 @@
152152
}
153153
154154
const getAndUpdateMyFeed = async () => {
155-
console.log("update feed");
156155
const feed = await ProjectClient.getMyFeed(0);
157156
if (feed.length <= 0) {
158157
feedIsEmpty = true;
@@ -204,9 +203,50 @@
204203
Language.forceUpdate();
205204
let username = localStorage.getItem("username");
206205
const token = localStorage.getItem("token");
206+
207+
const setFrontPage = () =>
208+
ProjectClient.getFrontPage()
209+
.then((results) => {
210+
projects.today = results.latest;
211+
projects.featured = results.featured;
212+
projects.voted = results.voted;
213+
projects.viewed = results.viewed;
214+
projects.tagged = results.tagged;
215+
if (results.suggested)
216+
projects.suggested = results.suggested;
217+
tagForProjects = results.selectedTag;
218+
projectsLoaded = true;
219+
220+
if (results.blocked) {
221+
const blocked = results.blocked;
222+
223+
const remove_blocked = (projects) =>
224+
projects.filter((p) =>
225+
blocked.every((b) => p.author.id != b),
226+
);
227+
228+
projects.today = remove_blocked(projects.today);
229+
projects.featured = remove_blocked(results.featured);
230+
projects.voted = remove_blocked(results.voted);
231+
projects.viewed = remove_blocked(results.viewed);
232+
projects.tagged = remove_blocked(results.tagged);
233+
if (results.suggested)
234+
projects.suggested = remove_blocked(
235+
results.suggested,
236+
);
237+
}
238+
})
239+
.catch((err) => {
240+
projectsFailed = true;
241+
if (err === 429) {
242+
projectsRateLimited = true;
243+
}
244+
});
245+
207246
if (!token || !username) {
208247
loggedIn = false;
209248
loggedInAdminOrMod = false;
249+
setFrontPage();
210250
} else {
211251
Authentication.usernameFromCode(username, token)
212252
.then(({ username: usernameActual, isAdmin, isApprover }) => {
@@ -220,10 +260,14 @@
220260
loggedIn = true;
221261
loggedInAdminOrMod = isAdmin || isApprover;
222262
getAndUpdateMyFeed();
263+
264+
setFrontPage();
223265
})
224266
.catch((err) => {
225267
loggedIn = false;
226268
loggedInAdminOrMod = false;
269+
270+
setFrontPage();
227271
});
228272
}
229273
@@ -253,24 +297,6 @@
253297
updates = [updatess];
254298
});
255299
});
256-
257-
ProjectClient.getFrontPage()
258-
.then((results) => {
259-
projects.today = results.latest;
260-
projects.featured = results.featured;
261-
projects.voted = results.voted;
262-
projects.viewed = results.viewed;
263-
projects.tagged = results.tagged;
264-
if (results.suggested) projects.suggested = results.suggested;
265-
tagForProjects = results.selectedTag;
266-
projectsLoaded = true;
267-
})
268-
.catch((err) => {
269-
projectsFailed = true;
270-
if (err === 429) {
271-
projectsRateLimited = true;
272-
}
273-
});
274300
});
275301
276302
// login code below
@@ -279,13 +305,16 @@
279305
Authentication.onLogout(() => {
280306
loggedIn = false;
281307
myFeed = [];
308+
309+
getFrontPage();
282310
});
283311
Authentication.onAuthentication((username, token) => {
284312
loggedInUsername = username;
285313
ProjectClient.setUsername(username);
286314
ProjectClient.setToken(token);
287315
loggedIn = true;
288316
getAndUpdateMyFeed();
317+
getFrontPage();
289318
return;
290319
});
291320
@@ -715,15 +744,18 @@
715744
<!-- NOTE: This section is entirely hard-coded for time-relevant stuff, but avoid making new classes for a topic. -->
716745
<div class="category-news">
717746
<div class="category-news-content">
718-
<h2 style="margin-block:4px;">Spring PenguinJam has ended!</h2>
747+
<h2 style="margin-block:4px;">
748+
Spring PenguinJam has ended!
749+
</h2>
719750
<div style="width:100%">
720751
<p>
721-
Time's up everyone, the 2026 Spring PenguinJam has ended!
752+
Time's up everyone, the 2026 Spring PenguinJam
753+
has ended!
722754
<br />
723755
Thanks for submitting your projects this year!
724756
<br />
725-
We're going to start ranking your projects now.
726-
Please wait until we are done with ranking!
757+
We're going to start ranking your projects now. Please
758+
wait until we are done with ranking!
727759
</p>
728760
<img
729761
src="/events/news/penguinjamspring2026.webp"
@@ -1105,7 +1137,8 @@
11051137
lang={currentLang}
11061138
html={true}
11071139
replace={{
1108-
"{{LINK}}": "<a href='https://scratch.org/'>https://scratch.org/</a>"
1140+
"{{LINK}}":
1141+
"<a href='https://scratch.org/'>https://scratch.org/</a>",
11091142
}}
11101143
/>
11111144
</p>
@@ -1287,12 +1320,12 @@
12871320
:global(body.dark-mode) .main {
12881321
color: white;
12891322
}
1290-
1323+
12911324
.main[data-aprilfools="true"] {
12921325
filter: brightness(0.7) contrast(1.8) sepia(1);
12931326
}
12941327
.main[data-aprilfools="true"] :global(*) {
1295-
font-family: 'Times New Roman', Times, serif !important;
1328+
font-family: "Times New Roman", Times, serif !important;
12961329
}
12971330
.main[data-aprilfools="true"] p,
12981331
.main[data-aprilfools="true"] span,

0 commit comments

Comments
 (0)