allow to send files to chat

This commit is contained in:
Peter Maquiran
2024-08-09 12:36:51 +01:00
parent 28bc141d38
commit c35f1e1f44
11 changed files with 264 additions and 138 deletions
@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { CameraService } from './camera.service';
describe('CameraService', () => {
let service: CameraService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(CameraService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
+34
View File
@@ -0,0 +1,34 @@
import { Injectable } from '@angular/core';
import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
import { err, ok } from 'neverthrow';
type takePictureParams = {
quality?: number
cameraResultType: CameraResultType
}
@Injectable({
providedIn: 'root'
})
export class CameraService {
constructor() { }
async takePicture({quality = 90, cameraResultType }: takePictureParams) {
try {
const file = await Camera.getPhoto({
quality: quality,
// allowEditing: true,
resultType: cameraResultType,
source: CameraSource.Camera
});
return ok(file)
} catch (e) {
return err(e)
}
}
}
@@ -1,6 +1,13 @@
import { Injectable } from '@angular/core';
import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
import { err, ok, Result } from 'neverthrow';
import { FileType } from 'src/app/models/fileType';
type PickPictureParams = {
quality?: number,
cameraResultType?: CameraResultType
}
@Injectable({
providedIn: 'root'
})
@@ -8,7 +15,7 @@ export class FilePickerWebService {
constructor() { }
getFileFromDevice(types: typeof FileType[]): Promise<File> {
getFileFromDevice(types: typeof FileType[]): Promise<Result<File, any>> {
let input = document.createElement('input');
input.type = 'file';
input.accept = types.join(', ')
@@ -18,9 +25,24 @@ export class FilePickerWebService {
return new Promise((resolve, reject)=>{
input.onchange = async () => {
const file = Array.from(input.files)
resolve(file[0] as File);
resolve(ok(file[0] as File));
};
})
}
async getPicture({quality = 90, cameraResultType =CameraResultType.DataUrl }: PickPictureParams) {
try {
const file = await Camera.getPhoto({
quality: quality,
// allowEditing: true,
resultType: cameraResultType,
source: CameraSource.Photos
});
return ok(file)
} catch (e) {
return err(e)
}
}
}