fix sharetoken permissions for pixels,links,boards, and failed routes

This commit is contained in:
Francis Cao committed 2026-06-08 19:16:01 -07:00
1 parent d2eafd68f7
commit 2df051e216
35 files changed
+308 -145

No files matched your search

@@ -1,18 +1,24 @@
import { setShareData } from '@/store/app';
import { useEffect } from 'react';
import { setShareData, useApp } from '@/store/app';
import { useApi } from '../useApi';
export function useShareTokenQuery(slug: string) {
const { get, useQuery } = useApi();
const shareId = useApp(state => state.share?.shareId);
const shareToken = useApp(state => state.shareToken?.token);
const query = useQuery({
queryKey: ['share', slug],
queryFn: async () => {
const data = await get(`/share/${slug}`);
setShareData(data, { token: data?.token });
return data;
},
queryFn: async () => get(`/share/${slug}`),
});
useEffect(() => {
if (
query.data?.token &&
(shareId !== query.data.shareId || shareToken !== query.data.token)
) {
setShareData(query.data, { token: query.data.token });
}
}, [query.data, shareId, shareToken]);
return { share: query.data, ...query };
}
+4 -8
View File
@@ -1,5 +1,4 @@
import { useMutation, useQuery } from '@tanstack/react-query';
import { usePathname } from 'next/navigation';
import { useCallback } from 'react';
import { getApiUrl } from '@/lib/api-url';
import { getClientAuthToken } from '@/lib/client';
@@ -7,8 +6,6 @@ import { SHARE_CONTEXT_HEADER, SHARE_TOKEN_HEADER } from '@/lib/constants';
import { type FetchResponse, httpDelete, httpGet, httpPost, httpPut } from '@/lib/fetch';
import { useApp } from '@/store/app';
const selector = (state: { shareToken: { token?: string } }) => state.shareToken;
async function handleResponse(res: FetchResponse): Promise<any> {
if (!res.ok) {
const { message, code, status } = res?.data?.error || {};
@@ -19,13 +16,12 @@ async function handleResponse(res: FetchResponse): Promise<any> {
}
export function useApi() {
const shareToken = useApp(selector);
const pathname = usePathname();
const isSharePath = pathname?.startsWith('/share');
const shareId = useApp(state => state.share?.shareId);
const shareToken = useApp(state => state.shareToken?.token);
const shareHeaders =
isSharePath && shareToken?.token
? { [SHARE_TOKEN_HEADER]: shareToken.token, [SHARE_CONTEXT_HEADER]: '1' }
shareId && shareToken
? { [SHARE_TOKEN_HEADER]: shareToken, [SHARE_CONTEXT_HEADER]: '1' }
: {};
const defaultHeaders = {