MCPcopy Create free account
hub / github.com/experdot/pointer / selectAndSaveAttachments

Function selectAndSaveAttachments

src/renderer/src/hooks/useAttachment.ts:230–278  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

228
229// 独立的文件选择并保存函数(用于消息编辑等场景)
230export async function selectAndSaveAttachments(): Promise<FileAttachment[]> {
231 const result = await window.api.selectFiles({
232 multiple: true,
233 filters: [{ name: 'Images', extensions: ['jpg', 'jpeg', 'png', 'gif', 'webp'] }]
234 })
235
236 if (!result.success || result.cancelled || !result.files) {
237 return []
238 }
239
240 const attachments: FileAttachment[] = []
241
242 for (const file of result.files) {
243 const mimeType = getMimeType(file.name)
244
245 if (!ALLOWED_TYPES.includes(mimeType)) {
246 console.warn(`不支持的文件类型: ${file.name}`)
247 continue
248 }
249
250 if (file.size > MAX_SIZE) {
251 console.warn(`文件过大: ${file.name} (${(file.size / 1024 / 1024).toFixed(2)}MB)`)
252 continue
253 }
254
255 const fileId = generateId()
256
257 const saveResult = await window.api.attachment.save({
258 fileId,
259 fileName: file.name,
260 base64Content: file.content
261 })
262
263 if (saveResult.success && saveResult.localPath) {
264 attachments.push({
265 id: fileId,
266 name: file.name,
267 type: mimeType,
268 size: file.size,
269 localPath: saveResult.localPath,
270 createdAt: Date.now()
271 })
272 } else {
273 console.error('保存附件失败:', saveResult.error)
274 }
275 }
276
277 return attachments
278}

Callers 1

Calls 2

getMimeTypeFunction · 0.85
generateIdFunction · 0.70

Tested by

no test coverage detected