Commit e71f20bb by Ryo Committed by GitHub

fix: api dataset filename fallback (#6529)

parent 53fe3631
...@@ -95,7 +95,6 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } ...@@ -95,7 +95,6 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer }
const getPreviewUrlFilename = (previewUrl: string) => { const getPreviewUrlFilename = (previewUrl: string) => {
const parseFilename = (pathname: string) => { const parseFilename = (pathname: string) => {
const filename = pathname.split('/').pop() || ''; const filename = pathname.split('/').pop() || '';
if (!filename) return ''; if (!filename) return '';
try { try {
...@@ -112,6 +111,28 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } ...@@ -112,6 +111,28 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer }
} }
}; };
const getFallbackTitle = async ({
apiFileId,
previewUrl
}: {
apiFileId: string;
previewUrl: string;
}) => {
try {
const fileDetail = await getFileDetail({ apiFileId });
if (fileDetail.name) {
return fileDetail.name;
}
} catch (error) {
logger.warn('Get api dataset file detail for title fallback failed', {
apiFileId,
error
});
}
return getPreviewUrlFilename(previewUrl) || getNanoid();
};
const listFiles = async ({ const listFiles = async ({
searchKey, searchKey,
parentId parentId
...@@ -176,6 +197,8 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } ...@@ -176,6 +197,8 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer }
}; };
} }
if (previewUrl) { if (previewUrl) {
const fallbackTitle = title || (await getFallbackTitle({ apiFileId, previewUrl }));
// Get from buffer // Get from buffer
const rawTextBuffer = await getS3RawTextSource().getRawTextBuffer({ const rawTextBuffer = await getS3RawTextSource().getRawTextBuffer({
sourceId: previewUrl, sourceId: previewUrl,
...@@ -183,7 +206,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } ...@@ -183,7 +206,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer }
}); });
if (rawTextBuffer) { if (rawTextBuffer) {
return { return {
title: title || rawTextBuffer.filename || getPreviewUrlFilename(previewUrl), title: title || rawTextBuffer.filename || fallbackTitle,
rawText: rawTextBuffer.text rawText: rawTextBuffer.text
}; };
} }
...@@ -198,7 +221,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } ...@@ -198,7 +221,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer }
getFormatText: true getFormatText: true
}); });
const sourceName = title || getPreviewUrlFilename(previewUrl) || getNanoid(); const sourceName = fallbackTitle;
getS3RawTextSource().addRawTextBuffer({ getS3RawTextSource().addRawTextBuffer({
sourceId: previewUrl, sourceId: previewUrl,
...@@ -208,7 +231,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } ...@@ -208,7 +231,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer }
}); });
return { return {
title: title || sourceName, title: fallbackTitle,
rawText rawText
}; };
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment