diff options
| author | Kagami Sascha Rosylight <saschanaz@outlook.com> | 2023-07-05 06:54:40 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-05 13:54:40 +0900 |
| commit | ac4245dce1f2b957066ddc3cf10a1444fece7691 (patch) | |
| tree | 4376dd930493f3a4a594b1c38c2d8ea593bd323e /packages/frontend/src/components/MkCropperDialog.vue | |
| parent | feat(frontend): deck UIのカラムからアンテナ、リストの編集画... (diff) | |
| download | sharkey-ac4245dce1f2b957066ddc3cf10a1444fece7691.tar.gz sharkey-ac4245dce1f2b957066ddc3cf10a1444fece7691.tar.bz2 sharkey-ac4245dce1f2b957066ddc3cf10a1444fece7691.zip | |
feat(frontend): allow cropping images on drive (#11092)
* feat(frontend): allow cropping images on drive
* nanka iroiro
* folder
---------
Co-authored-by: tamaina <tamaina@hotmail.co.jp>
Diffstat (limited to 'packages/frontend/src/components/MkCropperDialog.vue')
| -rw-r--r-- | packages/frontend/src/components/MkCropperDialog.vue | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/packages/frontend/src/components/MkCropperDialog.vue b/packages/frontend/src/components/MkCropperDialog.vue index 82363499b7..b2d60d36c4 100644 --- a/packages/frontend/src/components/MkCropperDialog.vue +++ b/packages/frontend/src/components/MkCropperDialog.vue @@ -47,6 +47,7 @@ const emit = defineEmits<{ const props = defineProps<{ file: misskey.entities.DriveFile; aspectRatio: number; + uploadFolder?: string | null; }>(); const imgUrl = getProxiedImageUrl(props.file.url, undefined, true); @@ -58,11 +59,17 @@ let loading = $ref(true); const ok = async () => { const promise = new Promise<misskey.entities.DriveFile>(async (res) => { const croppedCanvas = await cropper?.getCropperSelection()?.$toCanvas(); - croppedCanvas.toBlob(blob => { + croppedCanvas?.toBlob(blob => { + if (!blob) return; const formData = new FormData(); formData.append('file', blob); - formData.append('i', $i.token); - if (defaultStore.state.uploadFolder) { + formData.append('name', `cropped_${props.file.name}`); + formData.append('isSensitive', props.file.isSensitive ? 'true' : 'false'); + formData.append('comment', props.file.comment ?? 'null'); + formData.append('i', $i!.token); + if (props.uploadFolder || props.uploadFolder === null) { + formData.append('folderId', props.uploadFolder ?? 'null'); + } else if (defaultStore.state.uploadFolder) { formData.append('folderId', defaultStore.state.uploadFolder); } @@ -82,12 +89,12 @@ const ok = async () => { const f = await promise; emit('ok', f); - dialogEl.close(); + dialogEl!.close(); }; const cancel = () => { emit('cancel'); - dialogEl.close(); + dialogEl!.close(); }; const onImageLoad = () => { @@ -100,7 +107,7 @@ const onImageLoad = () => { }; onMounted(() => { - cropper = new Cropper(imgEl, { + cropper = new Cropper(imgEl!, { }); const computedStyle = getComputedStyle(document.documentElement); @@ -112,13 +119,13 @@ onMounted(() => { selection.outlined = true; window.setTimeout(() => { - cropper.getCropperImage()!.$center('contain'); + cropper!.getCropperImage()!.$center('contain'); selection.$center(); }, 100); // モーダルオープンアニメーションが終わったあとで再度調整 window.setTimeout(() => { - cropper.getCropperImage()!.$center('contain'); + cropper!.getCropperImage()!.$center('contain'); selection.$center(); }, 500); }); |