Skip to content

Commit

Permalink
feat: use internal endpoint to fetch data on server side
Browse files Browse the repository at this point in the history
  • Loading branch information
paring-chan committed Jul 2, 2024
1 parent 4f48ca2 commit fc2d11e
Show file tree
Hide file tree
Showing 9 changed files with 7,933 additions and 6,351 deletions.
14,229 changes: 7,908 additions & 6,321 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/components/organisms/levels/info/LevelLeaderboard.svelte
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
<script lang="ts">
import { browser } from '$app/environment';
import { api } from '@/api';
import LoadingSpinner from '@atoms/common/LoadingSpinner.svelte';
import SectionTitle from '@atoms/common/MainSectionTitle.svelte';
import type { ListResponse, PlayLog } from '@/types';
import LevelLeaderboardItem from '@organisms/levels/info/LevelLeaderboardItem.svelte';
import axios from 'axios';
export let levelId: number;
$: promise = browser
? api
? axios
.get<ListResponse<PlayLog>>('/api/v1/playLogs', {
params: {
levelId,
Expand Down
9 changes: 2 additions & 7 deletions src/components/organisms/user/UserOverlay.svelte
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
<script lang="ts">
import { browser } from '$app/environment';
import { api } from '@/api';
import type { Member, PartialMember } from '@/types';
import LoadingSpinner from '@atoms/common/LoadingSpinner.svelte';
// import Avatar from '../atoms/Avatar.svelte';
// import Button from '../atoms/Button.svelte';
// import Image from '../atoms/Image.svelte';
import UserOverlayDetail from '@molecules/user/UserOverlayDetail.svelte';
// import Translation from '../utils/Translation.svelte';
import { clientApi } from '$lib/api';
export let user: PartialMember;
$: fullUserPromise = browser
? api.get<Member>(`/api/v1/members/${user.id}`).then((x) => x.data)
? clientApi.get<Member>(`/api/v1/members/${user.id}`).then((x) => x.data)
: null;
</script>

Expand Down
4 changes: 2 additions & 2 deletions src/components/templates/LevelList.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
import type { Level, ListResponse } from '@/types';
import { browser } from '$app/environment';
import { writable, type Writable } from 'svelte/store';
import { api } from '@/api';
import LevelListItem from '@organisms/levels/list/LevelListItem.svelte';
import PageContainer from '@atoms/common/PageContainer.svelte';
import { onDestroy, onMount } from 'svelte';
import { createInfiniteQuery, getQueryClientContext } from '@tanstack/svelte-query';
import VirtualList from '../utils/VirtualList.svelte';
import LoadingSpinner from '../atoms/common/LoadingSpinner.svelte';
import LevelTableView from '../organisms/levels/list/LevelTableView.svelte';
import { clientApi } from '$lib/api';
let randomSeed: Writable<number | null> = writable(null);
Expand Down Expand Up @@ -47,7 +47,7 @@
// };
const fetchPage = async (page: number, signal: AbortSignal) => {
const { data } = await api.get<ListResponse<Level>>('/api/v1/levels', {
const { data } = await clientApi.get<ListResponse<Level>>('/api/v1/levels', {
params: params(page * pageSize),
signal
});
Expand Down
2 changes: 1 addition & 1 deletion src/api.ts → src/lib/api.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Axios from 'axios';
import { PUBLIC_API_ENDPOINT } from '$env/static/public';

export const api = Axios.create({
export const clientApi = Axios.create({
baseURL: PUBLIC_API_ENDPOINT
});
7 changes: 7 additions & 0 deletions src/lib/server/serverApi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import Axios from 'axios';
import { env } from '$env/dynamic/private';
import { PUBLIC_API_ENDPOINT } from '$env/static/public';

export const serverApi = Axios.create({
baseURL: env.PRIVATE_API_ENDPOINT || PUBLIC_API_ENDPOINT
});
21 changes: 7 additions & 14 deletions src/routes/+page.ts → src/routes/+page.server.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { api } from '@/api';
import type { Level, ListResponse, PlayLog, PlayLogWithLevel, SyncStatusResponse } from '@/types';
import { serverApi } from '$lib/server/serverApi';
import type { Level, ListResponse, PlayLog, PlayLogWithLevel } from '@/types';

import type { PageLoad } from './$types';

const loadPlayLogs = async () => {
const {
data: { results: topPlaysRaw }
} = await api.get<ListResponse<PlayLog>>('/api/v1/playLogs', {
} = await serverApi.get<ListResponse<PlayLog>>('/api/v1/playLogs', {
params: {
offset: 0,
amount: 3,
Expand All @@ -19,14 +19,14 @@ const loadPlayLogs = async () => {
...x,
level: {
...x.level,
...(await (await api.get<Level>(`/api/v1/levels/${x.level.id}`)).data)
...(await serverApi.get<Level>(`/api/v1/levels/${x.level.id}`)).data
}
}))
) as Promise<PlayLogWithLevel[]>;
};

const loadRecentLevels = () =>
api
serverApi
.get<ListResponse<Level>>('/api/v1/levels', {
params: {
offset: 0,
Expand All @@ -36,18 +36,11 @@ const loadRecentLevels = () =>
})
.then((x) => x.data.results);

const loadSyncStatus = () => api.get<SyncStatusResponse>('/api/v1/status/sync').then((x) => x.data);

export const load: PageLoad = async () => {
const [topPlays, recentLevels, syncStatus] = await Promise.all([
loadPlayLogs(),
loadRecentLevels(),
loadSyncStatus()
]);
const [topPlays, recentLevels] = await Promise.all([loadPlayLogs(), loadRecentLevels()]);

return {
topPlays,
recentLevels,
syncStatus
recentLevels
};
};
4 changes: 2 additions & 2 deletions src/routes/levels/[id]/+page.server.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { api } from '@/api';
import { serverApi } from '$lib/server/serverApi';
import type { Level } from '@/types';
import { levelOpenGraphUrl } from '@/utils/og';
import { error } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';

export const load: PageServerLoad = async ({ params }) => {
const { data, status } = await api.get<Level>(`/api/v1/levels/${params.id}`, {
const { data, status } = await serverApi.get<Level>(`/api/v1/levels/${params.id}`, {
validateStatus: (status) => [200, 404].includes(status)
});

Expand Down
4 changes: 2 additions & 2 deletions src/routes/rankings/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<script lang="ts">
import { browser } from '$app/environment';
import { api } from '@/api';
import LoadingSpinner from '@atoms/common/LoadingSpinner.svelte';
import MainSectionTitle from '@atoms/common/MainSectionTitle.svelte';
Expand All @@ -11,6 +10,7 @@
import type { RankingResult } from './+page';
import VirtualList from '@/components/utils/VirtualList.svelte';
import { createInfiniteQuery } from '@tanstack/svelte-query';
import { clientApi } from '$lib/api';
const pageSize = 30;
Expand All @@ -24,7 +24,7 @@
});
const fetchPage = async (page: number, signal: AbortSignal) => {
const { data } = await api.get<ListResponse<RankingResult>>('/api/v1/ranking', {
const { data } = await clientApi.get<ListResponse<RankingResult>>('/api/v1/ranking', {
params: { offset: page * pageSize, amount: pageSize },
signal
});
Expand Down

0 comments on commit fc2d11e

Please sign in to comment.