···1<script lang="ts">
2 import { getDidContext } from '$lib/website/context';
3- import { getImageBlobUrl } from '$lib/oauth/utils';
4 import type { ContentComponentProps } from '../types';
5 import Video from './Video.svelte';
6···12 if (item.cardData.objectUrl) return item.cardData.objectUrl;
1314 if (item.cardData.image && typeof item.cardData.image === 'object') {
15- return getImageBlobUrl({ did, link: item.cardData.image?.ref?.$link });
16 }
17 return item.cardData.image;
18 }
···1<script lang="ts">
2 import { getDidContext } from '$lib/website/context';
3+ import { getImageBlobUrl } from '$lib/atproto';
4 import type { ContentComponentProps } from '../types';
5 import Video from './Video.svelte';
6···12 if (item.cardData.objectUrl) return item.cardData.objectUrl;
1314 if (item.cardData.image && typeof item.cardData.image === 'object') {
15+ return getImageBlobUrl({ did, blob: item.cardData.image });
16 }
17 return item.cardData.image;
18 }
+2-2
src/lib/cards/ImageCard/ImageCard.svelte
···1<script lang="ts">
2 import { getDidContext } from '$lib/website/context';
3- import { getImageBlobUrl } from '$lib/oauth/utils';
4 import type { ContentComponentProps } from '../types';
56 let { item = $bindable(), ...rest }: ContentComponentProps = $props();
···11 if (item.cardData.objectUrl) return item.cardData.objectUrl;
1213 if (item.cardData.image && typeof item.cardData.image === 'object') {
14- return getImageBlobUrl({ did, link: item.cardData.image?.ref?.$link });
15 }
16 return item.cardData.image;
17 }
···1<script lang="ts">
2 import { getDidContext } from '$lib/website/context';
3+ import { getImageBlobUrl } from '$lib/atproto';
4 import type { ContentComponentProps } from '../types';
56 let { item = $bindable(), ...rest }: ContentComponentProps = $props();
···11 if (item.cardData.objectUrl) return item.cardData.objectUrl;
1213 if (item.cardData.image && typeof item.cardData.image === 'object') {
14+ return getImageBlobUrl({ did, blob: item.cardData.image });
15 }
16 return item.cardData.image;
17 }
+1-1
src/lib/cards/ImageCard/index.ts
···1-import { uploadBlob } from '$lib/oauth/utils';
2import type { CardDefinition } from '../types';
3import ImageCard from './ImageCard.svelte';
4import ImageCardSettings from './ImageCardSettings.svelte';
···1+import { uploadBlob } from '$lib/atproto';
2import type { CardDefinition } from '../types';
3import ImageCard from './ImageCard.svelte';
4import ImageCardSettings from './ImageCardSettings.svelte';
···1import type { CardDefinition } from '../types';
2-import { getRecord, listRecords } from '$lib/oauth/atproto';
3import PhotoGalleryCard from './PhotoGalleryCard.svelte';
4-import { parseUri } from '$lib/oauth/utils';
5import type { Record as ListRecord } from '@atproto/api/dist/client/types/com/atproto/repo/listRecords';
67export const PhotoGalleryCardDefinition = {
···1import type { CardDefinition } from '../types';
2+import { getRecord, listRecords, parseUri } from '$lib/atproto';
3import PhotoGalleryCard from './PhotoGalleryCard.svelte';
04import type { Record as ListRecord } from '@atproto/api/dist/client/types/com/atproto/repo/listRecords';
56export const PhotoGalleryCardDefinition = {
+1-1
src/lib/cards/PopfeedReviews/index.ts
···1import type { CardDefinition } from '../types';
2-import { listRecords } from '$lib/oauth/atproto';
3import PopfeedReviewsCard from './PopfeedReviewsCard.svelte';
45export const PopfeedReviewsCardDefinition = {
···1import type { CardDefinition } from '../types';
2+import { listRecords } from '$lib/atproto';
3import PopfeedReviewsCard from './PopfeedReviewsCard.svelte';
45export const PopfeedReviewsCardDefinition = {
···1-import { getRecord, listRecords } from '$lib/oauth/atproto';
2-import { parseUri } from '$lib/oauth/utils';
3import type { CardDefinition } from '../types';
4import StandardSiteDocumentListCard from './StandardSiteDocumentListCard.svelte';
5
···1+import { getRecord, listRecords, parseUri } from '$lib/atproto';
02import type { CardDefinition } from '../types';
3import StandardSiteDocumentListCard from './StandardSiteDocumentListCard.svelte';
4
+1-1
src/lib/cards/StatusphereCard/index.ts
···2// https://googlefonts.github.io/noto-emoji-animation/
34import type { CardDefinition } from '../types';
5-import { listRecords, putRecord } from '$lib/oauth/atproto';
6import StatusphereCard from './StatusphereCard.svelte';
7import { TID } from '@atproto/common-web';
8import EditStatusphereCard from './EditStatusphereCard.svelte';
···2// https://googlefonts.github.io/noto-emoji-animation/
34import type { CardDefinition } from '../types';
5+import { listRecords, putRecord } from '$lib/atproto';
6import StatusphereCard from './StatusphereCard.svelte';
7import { TID } from '@atproto/common-web';
8import EditStatusphereCard from './EditStatusphereCard.svelte';
+1-1
src/lib/cards/TealFMPlaysCard/index.ts
···1import type { CardDefinition } from '../types';
2-import { listRecords } from '$lib/oauth/atproto';
3import TealFMPlaysCard from './TealFMPlaysCard.svelte';
45export const TealFMPlaysCardDefinition = {
···1import type { CardDefinition } from '../types';
2+import { listRecords } from '$lib/atproto';
3import TealFMPlaysCard from './TealFMPlaysCard.svelte';
45export const TealFMPlaysCardDefinition = {
+2-5
src/lib/cards/VideoCard/VideoCard.svelte
···1<script lang="ts">
2 import { getDidContext } from '$lib/website/context';
3- import { getBlob } from '$lib/oauth/atproto';
4 import { onMount } from 'svelte';
5 import type { ContentComponentProps } from '../types';
6···2728 // Fetch the video blob from the PDS
29 if (item.cardData.video?.video && typeof item.cardData.video.video === 'object') {
30- const cid = item.cardData.video.video?.ref?.$link;
31- if (!cid) return;
32-33 try {
34- const blobUrl = await getBlob({ did, cid });
35 const res = await fetch(blobUrl);
36 if (!res.ok) throw new Error(res.statusText);
37 const blob = await res.blob();
···1<script lang="ts">
2 import { getDidContext } from '$lib/website/context';
3+ import { getBlobURL } from '$lib/atproto';
4 import { onMount } from 'svelte';
5 import type { ContentComponentProps } from '../types';
6···2728 // Fetch the video blob from the PDS
29 if (item.cardData.video?.video && typeof item.cardData.video.video === 'object') {
00030 try {
31+ const blobUrl = await getBlobURL({ did, blob: item.cardData.video.video });
32 const res = await fetch(blobUrl);
33 if (!res.ok) throw new Error(res.statusText);
34 const blob = await res.blob();
+1-1
src/lib/cards/VideoCard/index.ts
···1-import { uploadBlob } from '$lib/oauth/utils';
2import type { CardDefinition } from '../types';
3import VideoCard from './VideoCard.svelte';
4import VideoCardSettings from './VideoCardSettings.svelte';
···1+import { uploadBlob } from '$lib/atproto';
2import type { CardDefinition } from '../types';
3import VideoCard from './VideoCard.svelte';
4import VideoCardSettings from './VideoCardSettings.svelte';
+1-1
src/lib/helper.ts
···1import type { Item, WebsiteData } from './types';
2import { COLUMNS, margin, mobileMargin } from '$lib';
3import { CardDefinitionsByType } from './cards';
4-import { deleteRecord, putRecord } from './oauth/atproto';
5import { toast } from '@foxui/core';
6import { TID } from '@atproto/common-web';
7
···1import type { Item, WebsiteData } from './types';
2import { COLUMNS, margin, mobileMargin } from '$lib';
3import { CardDefinitionsByType } from './cards';
4+import { deleteRecord, putRecord } from '$lib/atproto';
5import { toast } from '@foxui/core';
6import { TID } from '@atproto/common-web';
7