fix(knowledge): use native file downloads in app
This commit is contained in:
@@ -442,7 +442,7 @@ import { resetPageScroll } from '@/services/navigation';
|
|||||||
import { ApiError, authenticatedFileUrl, releaseAuthenticatedFileUrl } from '@/services/api';
|
import { ApiError, authenticatedFileUrl, releaseAuthenticatedFileUrl } from '@/services/api';
|
||||||
import { ensureEmployeePosition, fetchMobileIdentity } from '@/services/position';
|
import { ensureEmployeePosition, fetchMobileIdentity } from '@/services/position';
|
||||||
import { chooseSpeechAudio, createSpeechPlaybackController, measureAudioDuration, MENTOR_VOICE_PROFILE, transcribeSpeechCapture, transcribeSpeechFile } from '@/services/speech';
|
import { chooseSpeechAudio, createSpeechPlaybackController, measureAudioDuration, MENTOR_VOICE_PROFILE, transcribeSpeechCapture, transcribeSpeechFile } from '@/services/speech';
|
||||||
import type { SpeechCapture } from '@/services/speech-capture';
|
import { isNativeAppRuntime, type SpeechCapture } from '@/services/speech-capture';
|
||||||
import { downloadSummaryCardImage } from '@/services/summary-card-image';
|
import { downloadSummaryCardImage } from '@/services/summary-card-image';
|
||||||
import { getMemoryCandidates } from '@/services/personal-assistant';
|
import { getMemoryCandidates } from '@/services/personal-assistant';
|
||||||
import { currentAccountKey } from '@/services/request-scope';
|
import { currentAccountKey } from '@/services/request-scope';
|
||||||
@@ -1209,10 +1209,10 @@ const openKnowledgeResource = async (resource: KnowledgeResource) => {
|
|||||||
try {
|
try {
|
||||||
if (resource.type === 'FILE') {
|
if (resource.type === 'FILE') {
|
||||||
const downloadUrl = await requestKnowledgeResourceDownloadLink(resource.attachmentId);
|
const downloadUrl = await requestKnowledgeResourceDownloadLink(resource.attachmentId);
|
||||||
if (typeof document !== 'undefined') {
|
if (!isNativeAppRuntime() && typeof document !== 'undefined') {
|
||||||
const link = document.createElement('a');
|
const link = document.createElement('a');
|
||||||
link.href = downloadUrl;
|
link.href = downloadUrl;
|
||||||
link.target = '_blank';
|
link.download = resource.title || '资料文件';
|
||||||
link.rel = 'noreferrer';
|
link.rel = 'noreferrer';
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link);
|
||||||
link.click();
|
link.click();
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ test('问师傅支持显式新对话、版本回写和受控原文件或视频
|
|||||||
assert.match(page, /releaseAuthenticatedFileUrl\(resource\.localUrl\)/);
|
assert.match(page, /releaseAuthenticatedFileUrl\(resource\.localUrl\)/);
|
||||||
assert.match(page, /resource\.type === 'VIDEO' && resource\.localUrl/);
|
assert.match(page, /resource\.type === 'VIDEO' && resource\.localUrl/);
|
||||||
assert.doesNotMatch(page, /link\.href = localUrl/);
|
assert.doesNotMatch(page, /link\.href = localUrl/);
|
||||||
|
assert.match(page, /!isNativeAppRuntime\(\) && typeof document !== 'undefined'/);
|
||||||
|
assert.match(page, /link\.download = resource\.title \|\| '资料文件'/);
|
||||||
|
assert.doesNotMatch(page, /link\.target = '_blank'/);
|
||||||
assert.match(page, /link\.rel = 'noreferrer'/);
|
assert.match(page, /link\.rel = 'noreferrer'/);
|
||||||
assert.match(page, /点击下载原文件/);
|
assert.match(page, /点击下载原文件/);
|
||||||
assert.match(page, /msg\.result\.rewrittenQuery !== msg\.result\.queryText/);
|
assert.match(page, /msg\.result\.rewrittenQuery !== msg\.result\.queryText/);
|
||||||
|
|||||||
Reference in New Issue
Block a user