✌️
This commit is contained in:
		
							parent
							
								
									35845bc090
								
							
						
					
					
						commit
						0f8f7de165
					
				
					 2 changed files with 19 additions and 17 deletions
				
			
		|  | @ -130,7 +130,7 @@ const selectedFiles = ref<Misskey.entities.DriveFile[]>([]); | ||||||
| const selectedFolders = ref<Misskey.entities.DriveFolder[]>([]); | const selectedFolders = ref<Misskey.entities.DriveFolder[]>([]); | ||||||
| const uploadings = uploads; | const uploadings = uploads; | ||||||
| const connection = stream.useChannel('drive'); | const connection = stream.useChannel('drive'); | ||||||
| let keepOriginal = $ref<boolean>(defaultStore.state.keepOriginalUploading); | const keepOriginal = ref<boolean>(defaultStore.state.keepOriginalUploading); | ||||||
| 
 | 
 | ||||||
| // ドロップされようとしているか | // ドロップされようとしているか | ||||||
| const draghover = ref(false); | const draghover = ref(false); | ||||||
|  | @ -357,7 +357,7 @@ function onChangeFileInput() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function upload(file: File, folderToUpload?: Misskey.entities.DriveFolder | null) { | function upload(file: File, folderToUpload?: Misskey.entities.DriveFolder | null) { | ||||||
| 	uploadFile(file, (folderToUpload && typeof folderToUpload == 'object') ? folderToUpload.id : null, undefined, keepOriginal).then(res => { | 	uploadFile(file, (folderToUpload && typeof folderToUpload == 'object') ? folderToUpload.id : null, undefined, keepOriginal.value).then(res => { | ||||||
| 		addFile(res, true); | 		addFile(res, true); | ||||||
| 	}); | 	}); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -14,13 +14,16 @@ type Uploading = { | ||||||
| }; | }; | ||||||
| export const uploads = ref<Uploading[]>([]); | export const uploads = ref<Uploading[]>([]); | ||||||
| 
 | 
 | ||||||
| const compressTypeMap = new Map([ | const compressTypeMap = { | ||||||
| 	// [圧縮前の形式, 圧縮後の形式],
 | 	'image/jpeg': { quality: 0.85, mimeType: 'image/webp'}, | ||||||
| 	['image/jpeg', 'image/webp'], | 	'image/webp': { quality: 0.85, mimeType: 'image/webp'}, | ||||||
| 	['image/webp', 'image/webp'], | 	'image/png': { quality: 1, mimeType: 'image/webp'}, | ||||||
| 	['image/png', 'image/webp'], | 	'image/svg+xml': { quality: 1, mimeType: 'image/webp'}, | ||||||
| 	['image/svg', 'image/webp'], | } as const; | ||||||
| ]); | 
 | ||||||
|  | const mimeTypeMap = { | ||||||
|  | 	'image/webp': 'webp', | ||||||
|  | } as const; | ||||||
| 
 | 
 | ||||||
| export function uploadFile(file: File, folder?: any, name?: string, keepOriginal: boolean = defaultStore.state.keepOriginalUploading): Promise<Misskey.entities.DriveFile> { | export function uploadFile(file: File, folder?: any, name?: string, keepOriginal: boolean = defaultStore.state.keepOriginalUploading): Promise<Misskey.entities.DriveFile> { | ||||||
| 	if (folder && typeof folder == 'object') folder = folder.id; | 	if (folder && typeof folder == 'object') folder = folder.id; | ||||||
|  | @ -38,28 +41,27 @@ export function uploadFile(file: File, folder?: any, name?: string, keepOriginal | ||||||
| 				img: window.URL.createObjectURL(file) | 				img: window.URL.createObjectURL(file) | ||||||
| 			}); | 			}); | ||||||
| 
 | 
 | ||||||
|  | 			uploads.value.push(ctx); | ||||||
|  | 
 | ||||||
| 			let resizedImage: any; | 			let resizedImage: any; | ||||||
| 			if (!keepOriginal && compressTypeMap.has(file.type)) { | 			if (!keepOriginal && file.type in compressTypeMap) { | ||||||
| 				const config = { | 				const config = { | ||||||
| 					quality: 0.85, |  | ||||||
| 					maxWidth: 2048, | 					maxWidth: 2048, | ||||||
| 					maxHeight: 2048, | 					maxHeight: 2048, | ||||||
| 					autoRotate: true, | 					autoRotate: true, | ||||||
| 					mimeType: compressTypeMap.get(file.type), |  | ||||||
| 					debug: true, | 					debug: true, | ||||||
|  | 					...compressTypeMap[file.type], | ||||||
| 				}; | 				}; | ||||||
| 				resizedImage = await readAndCompressImage(file, config); | 				resizedImage = await readAndCompressImage(file, config); | ||||||
|  | 				ctx.name = `${ctx.name}.${mimeTypeMap[compressTypeMap[file.type].mimeType]}`; | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			uploads.value.push(ctx); |  | ||||||
| 
 |  | ||||||
| 			const data = new FormData(); | 			const data = new FormData(); | ||||||
| 			data.append('i', $i.token); | 			data.append('i', $i.token); | ||||||
| 			data.append('force', 'true'); | 			data.append('force', 'true'); | ||||||
| 			data.append('file', resizedImage || file); | 			data.append('file', resizedImage || file); | ||||||
| 
 | 			data.append('name', ctx.name); | ||||||
| 			if (folder) data.append('folderId', folder); | 			if (folder) data.append('folderId', folder); | ||||||
| 			if (name) data.append('name', name); |  | ||||||
| 
 | 
 | ||||||
| 			const xhr = new XMLHttpRequest(); | 			const xhr = new XMLHttpRequest(); | ||||||
| 			xhr.open('POST', apiUrl + '/drive/files/create', true); | 			xhr.open('POST', apiUrl + '/drive/files/create', true); | ||||||
|  | @ -78,7 +80,7 @@ export function uploadFile(file: File, folder?: any, name?: string, keepOriginal | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				const driveFile = JSON.parse(ev.target.response); | 				const driveFile = JSON.parse(ev.target.response); | ||||||
| 				console.log(driveFile) | 
 | ||||||
| 				resolve(driveFile); | 				resolve(driveFile); | ||||||
| 
 | 
 | ||||||
| 				uploads.value = uploads.value.filter(x => x.id != id); | 				uploads.value = uploads.value.filter(x => x.id != id); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue