diff --git a/platforms/pictique/src/lib/fragments/BottomNav/BottomNav.svelte b/platforms/pictique/src/lib/fragments/BottomNav/BottomNav.svelte index 3a4ff9eb..28021d65 100644 --- a/platforms/pictique/src/lib/fragments/BottomNav/BottomNav.svelte +++ b/platforms/pictique/src/lib/fragments/BottomNav/BottomNav.svelte @@ -2,8 +2,8 @@ import { goto } from '$app/navigation'; import { page } from '$app/state'; import { Camera, CommentsTwo, Home, Search } from '$lib/icons'; - import { isNavigatingThroughNav } from '$lib/store/store.svelte'; - import { uploadedImages } from '$lib/store/store.svelte'; + import { isNavigatingThroughNav, ownerId } from '$lib/store/store.svelte'; + import { uploadedImages } from '$lib/store/store.svelte'; import { getAuthId, revokeImageUrls } from '$lib/utils'; import type { HTMLAttributes } from 'svelte/elements'; @@ -25,7 +25,7 @@ let fullPath = $derived(page.url.pathname); let imageInput: HTMLInputElement; - let images: FileList | null = $state(null); + let images: FileList | null = $state(null); const handleNavClick = (newTab: string) => { // activeTab = newTab; @@ -37,9 +37,9 @@ previousTab = newTab; if (newTab === 'profile') { goto(`/profile/${ownerId}`); - } else if (newTab === "post") { - uploadedImages.value = null; - imageInput.value = ""; + } else if (newTab === 'post') { + uploadedImages.value = null; + imageInput.value = ''; imageInput.click(); } else { goto(`/${newTab}`); @@ -49,22 +49,34 @@ $effect(() => { ownerId = getAuthId() activeTab = _activeTab.split('/').pop() ?? ''; - if (images && images.length > 0 && activeTab !== 'post' && previousTab === 'post' && !_activeTab.includes('post/audience')) { - if (uploadedImages.value) - revokeImageUrls(uploadedImages.value); - uploadedImages.value = Array.from(images).map(file => ({ - url: URL.createObjectURL(file), - alt: file.name - })); + if ( + images && + images.length > 0 && + activeTab !== 'post' && + previousTab === 'post' && + !_activeTab.includes('post/audience') + ) { + if (uploadedImages.value) revokeImageUrls(uploadedImages.value); + uploadedImages.value = Array.from(images).map((file) => ({ + url: URL.createObjectURL(file), + alt: file.name + })); images = null; // To prevent re-triggering the effect and thus making an infinite loop with /post route's effect when the length of uploadedImages goes to 0 - if (uploadedImages.value.length > 0) { - goto("/post"); - } + if (uploadedImages.value.length > 0) { + goto('/post'); + } } }); - + ✕ + {#each images as image, index} + removeImage(index)} + onclick={() => removeImage(index)} > ✕ @@ -87,14 +89,17 @@ {/if} - - - + + + Add Photo {#if files} diff --git a/platforms/pictique/src/lib/fragments/MessageInput/MessageInput.svelte b/platforms/pictique/src/lib/fragments/MessageInput/MessageInput.svelte index 200bd0b7..62bf1000 100644 --- a/platforms/pictique/src/lib/fragments/MessageInput/MessageInput.svelte +++ b/platforms/pictique/src/lib/fragments/MessageInput/MessageInput.svelte @@ -52,7 +52,7 @@ diff --git a/platforms/pictique/src/lib/fragments/Post/Post.svelte b/platforms/pictique/src/lib/fragments/Post/Post.svelte index 0e9ebf00..36544ce6 100644 --- a/platforms/pictique/src/lib/fragments/Post/Post.svelte +++ b/platforms/pictique/src/lib/fragments/Post/Post.svelte @@ -16,10 +16,10 @@ interface IPostProps extends HTMLAttributes { avatar: string; username: string; - userId: string; + userId?: string; imgUris: string[]; - caption: string; - count: { + text: string; + count?: { likes: number; comments: number; }; @@ -58,6 +58,7 @@ const { avatar, + userId, username, imgUris: uris, text, @@ -67,9 +68,8 @@ ...restProps }: IPostProps = $props(); - let imgUris = $derived.by(() => pairAndJoinChunks(uris)); - - let galleryRef: HTMLDivElement; + let imgUris = $derived(uris); + let galleryRef: HTMLDivElement | undefined = $state(); let currentIndex = $state(0); function scrollLeft() { diff --git a/platforms/pictique/src/lib/fragments/Profile/Profile.svelte b/platforms/pictique/src/lib/fragments/Profile/Profile.svelte index a1eacb36..5ea63c1c 100644 --- a/platforms/pictique/src/lib/fragments/Profile/Profile.svelte +++ b/platforms/pictique/src/lib/fragments/Profile/Profile.svelte @@ -3,11 +3,19 @@ import type { userProfile, PostData } from '$lib/types'; import Post from '../Post/Post.svelte'; - export let variant: 'user' | 'other' = 'user'; - export let profileData: userProfile; - export let handleSinglePost: (post: PostData) => void; - export let handleFollow: () => Promise; - export let handleMessage: () => Promise; + let { + variant = 'user', + profileData, + handleSinglePost, + handleFollow, + handleMessage + }: { + variant: 'user' | 'other'; + profileData: userProfile; + handleSinglePost: (post: PostData) => void; + handleFollow: () => Promise; + handleMessage: () => Promise; + } = $props(); @@ -23,8 +31,8 @@ {#if variant === 'other'} - Follow - Message + Follow + Message {/if} @@ -46,13 +54,13 @@ {#each profileData.posts.filter((e) => e.imgUris && e.imgUris.length > 0) as post} - + { try { diff --git a/platforms/pictique/src/lib/fragments/UploadedPostView/UploadedPostView.svelte b/platforms/pictique/src/lib/fragments/UploadedPostView/UploadedPostView.svelte index e3f22655..79f7a265 100644 --- a/platforms/pictique/src/lib/fragments/UploadedPostView/UploadedPostView.svelte +++ b/platforms/pictique/src/lib/fragments/UploadedPostView/UploadedPostView.svelte @@ -1,10 +1,9 @@