feat: only follow serverUrlPrefix at redirect to client (#5295) (#5354)

feat: only follow `serverUrlPrefix` at redirect to client (#5295)

fix: use secure websocket (#5297)
This commit is contained in:
Joooye_34
2023-12-20 07:52:57 +00:00
parent 800ea0abf1
commit 80eeb2ddc7
7 changed files with 27 additions and 21 deletions

View File

@@ -81,8 +81,7 @@ const snapshotFetcher = async (
return null; return null;
} }
const res = await fetchWithTraceReport( const res = await fetchWithTraceReport(
runtimeConfig.serverUrlPrefix + `/api/workspaces/${workspaceId}/docs/${pageDocId}/histories/${ts}`,
`/api/workspaces/${workspaceId}/docs/${pageDocId}/histories/${ts}`,
{ {
priority: 'high', priority: 'high',
} }

View File

@@ -140,7 +140,9 @@ export const AffineSharePage = (props: ShareMenuProps) => {
lineHeight: '20px', lineHeight: '20px',
}} }}
value={ value={
isSharedPage ? sharingUrl : `${runtimeConfig.serverUrlPrefix}/...` isSharedPage
? sharingUrl
: `${location.protocol}//${location.hostname}/...`
} }
readOnly readOnly
/> />

View File

@@ -19,8 +19,11 @@ export const generateUrl = ({
// to generate a public url like https://affine.app/share/123/456 // to generate a public url like https://affine.app/share/123/456
// or https://affine.app/share/123/456?mode=edgeless // or https://affine.app/share/123/456?mode=edgeless
const { protocol, hostname, port } = window.location;
const url = new URL( const url = new URL(
`${runtimeConfig.serverUrlPrefix}/${urlType}/${workspaceId}/${pageId}` `${protocol}//${hostname}${
port ? `:${port}` : ''
}/${urlType}/${workspaceId}/${pageId}`
); );
return url.toString(); return url.toString();
}; };

View File

@@ -38,8 +38,7 @@ export async function downloadBinaryFromCloud(
pageGuid: string pageGuid: string
): Promise<CloudDoc | null> { ): Promise<CloudDoc | null> {
const response = await fetchWithTraceReport( const response = await fetchWithTraceReport(
runtimeConfig.serverUrlPrefix + `/api/workspaces/${rootGuid}/docs/${pageGuid}`,
`/api/workspaces/${rootGuid}/docs/${pageGuid}`,
{ {
priority: 'high', priority: 'high',
} }

View File

@@ -22,9 +22,7 @@ import useSWRMutation from 'swr/mutation';
setupGlobal(); setupGlobal();
export const fetcher = gqlFetcherFactory( export const fetcher = gqlFetcherFactory('/graphql');
runtimeConfig.serverUrlPrefix + '/graphql'
);
/** /**
* A `useSWR` wrapper for sending graphql queries * A `useSWR` wrapper for sending graphql queries

View File

@@ -21,15 +21,13 @@ export const createAffineCloudBlobStorage = (
? key ? key
: `/api/workspaces/${workspaceId}/blobs/${key}`; : `/api/workspaces/${workspaceId}/blobs/${key}`;
return fetchWithTraceReport(runtimeConfig.serverUrlPrefix + suffix).then( return fetchWithTraceReport(suffix).then(async res => {
async res => { if (!res.ok) {
if (!res.ok) { // status not in the range 200-299
// status not in the range 200-299 return null;
return null;
}
return bufferToBlob(await res.arrayBuffer());
} }
); return bufferToBlob(await res.arrayBuffer());
});
}, },
set: async (key, value) => { set: async (key, value) => {
const { const {

View File

@@ -7,9 +7,16 @@ export function getIoManager(): Manager {
if (ioManager) { if (ioManager) {
return ioManager; return ioManager;
} }
ioManager = new Manager(runtimeConfig.serverUrlPrefix + '/', { const { protocol, hostname, port } = window.location;
autoConnect: false, ioManager = new Manager(
transports: ['websocket'], `${protocol === 'https:' ? 'wss' : 'ws'}://${hostname}${
}); port ? `:${port}` : ''
}/`,
{
autoConnect: false,
transports: ['websocket'],
secure: location.protocol === 'https:',
}
);
return ioManager; return ioManager;
} }