Skip to content

Commit e099e86

Browse files
authored
Merge pull request #4535 from crazyserver/MOBILE-4820
MOBILE-4820 image-edit: Fix image format
2 parents 49ecb4d + 2469a1c commit e099e86

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

src/core/features/user/pages/about/about.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import {
4040
} from '@features/user/constants';
4141
import { CoreModals } from '@services/overlays/modals';
4242
import { CoreFile } from '@services/file';
43+
import { CoreFileUtils } from '@singletons/file-utils';
4344

4445
/**
4546
* Page that displays info about a user.
@@ -187,14 +188,15 @@ export default class CoreUserAboutPage implements OnInit, OnDestroy {
187188
try {
188189
let fileEntry = await CoreFileUploaderHelper.selectFile(maxSize, false, title, mimetypes);
189190
const fileObject = await CoreFile.getFileObjectFromFileEntry(fileEntry);
191+
const image = await CoreFileUtils.filetoBlob(fileObject);
190192

191193
const { CoreViewerImageEditComponent } = await import('@features/viewer/components/image-edit/image-edit');
192194

193195
const editedImageBlob = await CoreModals.openModal<Blob>({
194196
component: CoreViewerImageEditComponent,
195197
cssClass: 'core-modal-fullscreen',
196198
componentProps: {
197-
image: fileObject,
199+
image,
198200
},
199201
});
200202

src/core/features/viewer/components/image-edit/image-edit.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { Component, input, signal, viewChild } from '@angular/core';
1616
import { ModalController } from '@singletons';
1717
import { CoreSharedModule } from '@/core/shared.module';
1818
import { ImageCropperComponent, ImageTransform } from 'ngx-image-cropper';
19-
import { IFile } from '@awesome-cordova-plugins/file/ngx';
2019
import { CoreAlerts } from '@services/overlays/alerts';
2120

2221
/**
@@ -35,7 +34,7 @@ import { CoreAlerts } from '@services/overlays/alerts';
3534
export class CoreViewerImageEditComponent {
3635

3736
readonly editTool = viewChild.required(ImageCropperComponent);
38-
readonly image = input.required<IFile>();
37+
readonly image = input.required<Blob>();
3938
readonly transform = signal<ImageTransform>({
4039
scale: 1,
4140
rotate: 0,

src/core/singletons/file-utils.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// limitations under the License.
1414

1515
import { CoreFileEntry } from '@services/file-helper';
16-
import { FileEntry } from '@awesome-cordova-plugins/file/ngx';
16+
import { FileEntry, IFile } from '@awesome-cordova-plugins/file/ngx';
1717
import { Translate } from '@singletons';
1818

1919
/**
@@ -100,4 +100,27 @@ export class CoreFileUtils {
100100
return file;
101101
}
102102

103+
/**
104+
* Transform a file object to Blob.
105+
*
106+
* @param fileEntry File to transform.
107+
* @returns Promise resolved with the Blob.
108+
*/
109+
static filetoBlob(fileEntry: IFile): Promise<Blob> {
110+
return new Promise((resolve, reject): void => {
111+
const reader = new FileReader();
112+
reader.onload = () => {
113+
if (!reader.result) {
114+
reject(new Error('FileReader returned no result.'));
115+
116+
return;
117+
}
118+
resolve(new Blob([new Uint8Array(reader.result as ArrayBuffer)], { type: fileEntry.type }));
119+
};
120+
reader.onerror = reject;
121+
122+
return reader.readAsArrayBuffer(fileEntry);
123+
});
124+
}
125+
103126
}

0 commit comments

Comments
 (0)