···11<script lang="ts">
22+ import { isTyping } from '$lib/helper';
23 import type { ContentComponentProps } from '../../types';
34 import { onMount, onDestroy } from 'svelte';
45···196197 }
197198198199 function handleKeyDown(e: KeyboardEvent) {
200200+ if(isTyping()) return;
201201+199202 if (e.code === 'Space' || e.code === 'ArrowUp' || e.code === 'KeyW') {
200203 e.preventDefault();
201204 jump();
+1-1
src/lib/cards/GameCards/DinoGameCard/index.ts
···11-import type { CardDefinition } from '../types';
11+import type { CardDefinition } from '$lib/cards/types';
22import DinoGameCard from './DinoGameCard.svelte';
33import SidebarItemDinoGameCard from './SidebarItemDinoGameCard.svelte';
44
+1-1
src/lib/cards/ImageCard/ImageCard.svelte
···11<script lang="ts">
22 import { getDidContext } from '$lib/website/context';
33- import { getImageBlobUrl } from '$lib/website/utils';
33+ import { getImageBlobUrl } from '$lib/oauth/utils';
44 import type { ContentComponentProps } from '../types';
5566 let { item = $bindable(), ...rest }: ContentComponentProps = $props();
+1-1
src/lib/cards/ImageCard/index.ts
···11-import { uploadBlob } from '$lib/website/utils';
11+import { uploadBlob } from '$lib/oauth/utils';
22import type { CardDefinition } from '../types';
33import CreateImageCardModal from './CreateImageCardModal.svelte';
44import ImageCard from './ImageCard.svelte';
+1-1
src/lib/cards/LinkCard/EditingLinkCard.svelte
···11<script lang="ts">
22 import { browser } from '$app/environment';
33- import { getIsMobile } from '$lib/helper';
33+ import { getIsMobile } from '$lib/website/context';
44 import type { ContentComponentProps } from '../types';
55 import PlainTextEditor from '../utils/PlainTextEditor.svelte';
66
+1-1
src/lib/cards/LinkCard/LinkCard.svelte
···11<script lang="ts">
22 import { browser } from '$app/environment';
33- import { getIsMobile } from '$lib/helper';
33+ import { getIsMobile } from '$lib/website/context';
44 import type { ContentComponentProps } from '../types';
5566 let { item }: ContentComponentProps = $props();
···11import { client } from '$lib/oauth';
22import { listRecords } from '$lib/oauth/atproto';
33-import { getImageBlobUrl } from '$lib/website/utils';
33+import { getImageBlobUrl } from '$lib/oauth/utils';
44import EmbedCard from '../EmbedCard/EmbedCard.svelte';
55import type { CardDefinition } from '../types';
66import LivestreamCard from './LivestreamCard.svelte';
···11-export const image_collection = 'com.example.image' as const;
22-33-// collections and records we want to grab
44-export const data = {
55- 'app.bsky.actor.profile': ['self'],
66-77- 'app.blento.card': 'all',
88- 'app.blento.settings': ['self']
99-} as const;
···11-import type { data } from './data';
22-import type { Record as ListRecord } from '@atproto/api/dist/client/types/com/atproto/repo/listRecords';
33-44-export type Collection = keyof typeof data;
55-66-export type IndividualCollections = {
77- [K in Collection]: (typeof data)[K] extends readonly unknown[] ? K : never;
88-}[Collection];
99-1010-export type ListCollections = Exclude<Collection, IndividualCollections>;
1111-1212-export type ElementType<C extends Collection> = (typeof data)[C] extends readonly (infer U)[]
1313- ? U
1414- : unknown;
1515-1616-export type DownloadedData = { [C in Collection]: Record<string, ListRecord> };
src/lib/website/utils.ts
src/lib/oauth/utils.ts
+3-2
src/routes/+page.server.ts
···11import { loadData } from '$lib/website/load';
22import { env } from '$env/dynamic/public';
33+import type { UserCache } from '$lib/types';
3445export async function load({ platform, url }) {
56 const hostname = url.hostname;
···89 if (hostname === 'flo-bit.blento.app') {
910 handle = 'flo-bit.dev';
1011 }
1212+ const cache = platform?.env?.USER_DATA_CACHE as unknown;
11131212- const data = await loadData(handle, platform);
1313- return { ...data, handle };
1414+ return await loadData(handle, cache as UserCache);
1415}
+3-12
src/routes/+page.svelte
···11<script lang="ts">
22- import { refreshData, setAdditionalUserData } from '$lib/helper.js';
33- import { type Item } from '$lib/types.js';
44- import Website from '$lib/Website.svelte';
22+ import { refreshData } from '$lib/helper.js';
33+ import Website from '$lib/website/Website.svelte';
54 import { onMount } from 'svelte';
6576 let { data } = $props();
88-99- // svelte-ignore state_referenced_locally
1010- setAdditionalUserData(data.additionalData);
117128 onMount(() => {
139 refreshData(data);
1410 });
1511</script>
16121717-<Website
1818- {data}
1919- handle={data.handle}
2020- did={data.did}
2121- items={Object.values(data.data['app.blento.card']).map((i) => i.value) as Item[]}
2222-/>
1313+<Website {data} />
-9
src/routes/[handle]/+layout.server.ts
···11-import { loadData } from '$lib/website/load';
22-import { env } from '$env/dynamic/private';
33-import { error } from '@sveltejs/kit';
44-55-export async function load({ params, platform }) {
66- if (env.PUBLIC_IS_SELFHOSTED) error(404);
77- const data = await loadData(params.handle, platform);
88- return { ...data, handle: params.handle };
99-}
-24
src/routes/[handle]/+page.svelte
···11-<script lang="ts">
22- import { page } from '$app/state';
33- import { refreshData, setAdditionalUserData } from '$lib/helper.js';
44- import { type Item } from '$lib/types.js';
55- import Website from '$lib/Website.svelte';
66- import { onMount } from 'svelte';
77-88- let { data } = $props();
99-1010- // svelte-ignore state_referenced_locally
1111- setAdditionalUserData(data.additionalData);
1212-1313- onMount(() => {
1414- refreshData(data);
1515- })
1616-</script>
1717-1818-<Website
1919- {data}
2020- handle={page.params.handle}
2121- did={data.did}
2222- items={Object.values(data.data['app.blento.card']).map((i) => i.value) as Item[]}
2323- settings={data.data['app.blento.settings']?.['self']?.value}
2424-/>