fix upload picture

This commit is contained in:
Peter Maquiran
2024-09-20 11:45:11 +01:00
parent 9da65a1e7b
commit d8eb3ddbd6
16 changed files with 356 additions and 130 deletions
@@ -6,4 +6,4 @@ import { DexieRepository } from "src/app/infra/repository/dexie/dexie-repository
export abstract class IDistributionLocalRepository extends DexieRepository<DistributionTable, DistributionTable> implements IDistributionLocalRepository {
}
}
@@ -3,7 +3,7 @@ import { File, IWriteOptions } from '@awesome-cordova-plugins/file/ngx';
import { err, ok, Result } from 'neverthrow';
import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx';
import { Logger } from 'src/app/services/logger/main/service';
import { Filesystem, Directory, Encoding, FilesystemDirectory } from '@capacitor/filesystem';
@Injectable({
providedIn: 'root'
@@ -54,4 +54,18 @@ export class FileSystemMobileService {
}
}
async readFile({resultUrl}) {
try {
const result = await Filesystem.readFile({
path: resultUrl,
//directory: Directory.Data,
//encoding: Encoding.UTF8,
})
return ok(result)
} catch (e) {
return err(e)
}
}
}
@@ -1,4 +1,4 @@
import { DistributionTable, DistributionTableSchema } from "src/app/infra/database/dexie/instance/chat/schema/destribution";
import { DistributionTable, DistributionTableSchema,DistributionTableColumn } from "src/app/infra/database/dexie/instance/chat/schema/destribution";
import { chatDatabase } from "src/app/infra/database/dexie/service";
import { DexieRepository } from "src/app/infra/repository/dexie/dexie-repository.service";
@@ -11,4 +11,4 @@ export class DistributionLocalRepository extends DexieRepository<DistributionTa
obj.$messageIdMemberId = `${obj.messageId}${obj.memberId}`
});
}
}
}
@@ -113,7 +113,6 @@ export class RoomBoldSyncUseCaseService {
const haveSeen = message.haveSeen()
if(!haveSeen && !message.meSender()) {
console.log('to see', roomEntity.roomName , roomEntity.messages[0], )
await this.boldLocalRepository.open()
const result = await this.boldLocalRepository.findOne({roomId: roomEntity.id})
+17 -3
View File
@@ -75,14 +75,25 @@ export class EventsService {
private changeProfileService: ChangeProfileService,
private offlinemanager: OfflineManagerService) {
this.setHeader()
this.changeProfileService.registerCallback(() => {
try {
this.setHeader()
})
} catch (e) {
console.log(e)
}
this.changeProfileService.registerCallback(() => {
try {
this.setHeader()
} catch (e) {
console.log(e)
}
})
}
async setHeader () {
try {
this.headers = new HttpHeaders();;
this.headersMdOficial = new HttpHeaders();;
@@ -380,6 +391,9 @@ export class EventsService {
this.onLoadCalendars.forEach(e=> e());
this.loadCalendars = true
} catch (err) {
console.log(err)
}
}
+10 -2
View File
@@ -462,7 +462,10 @@ export class ChatPage implements OnInit {
modal.onDidDismiss().then((Data) => {
console.log('Data', Data.data)
this.openMessagesToStartDirectConversation(Data.data);
if(Data.data) {
this.openMessagesToStartDirectConversation(Data.data);
}
});
@@ -519,7 +522,12 @@ export class ChatPage implements OnInit {
},
});
await modal.present();
modal.onDidDismiss();
modal.onDidDismiss().then(e => {
this.roomId = null;
this.selectedRoomId = null;
console.log('RoomSelected', room)
this.RoomSelected = null
})
}
@@ -1081,6 +1081,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
this.messages1[this.room.$id].push(Ballon)
}
this.messages1[this.room.$id].push(message)
setTimeout(() => {
this.scrollToBottomClicked()
}, 100)
+63 -27
View File
@@ -33,7 +33,7 @@ import { CameraService } from 'src/app/infra/camera/camera.service'
import { FilePickerMobileService } from 'src/app/infra/file-picker/mobile/file-picker-mobile.service'
import { FilePickerWebService } from 'src/app/infra/file-picker/web/file-picker-web.service'
import { allowedDocExtension } from 'src/app/utils/allowedDocExtension';
import { JSFileToDataUrl } from 'src/app/utils/ToBase64';
import { createDataURL, JSFileToDataUrl } from 'src/app/utils/ToBase64';
import { RoomType } from "src/app/core/chat/entity/group";
import { MessageViewModal } from '../../store/model/message';
import { ChatPopoverPage } from '../chat-popover/chat-popover.page';
@@ -46,6 +46,7 @@ import { RoomViewModel } from '../../store/model/room';
import { RoomStore } from '../../store/roomStore'
import { GroupContactsPage, IGroupContactsPageOutPutSchema } from '../group-messages/group-contacts/group-contacts.page';
import { EditGroupPage } from '../edit-group/edit-group.page';
import { imageMimeTypes } from 'src/app/utils/allowedImageExtension';
const IMAGE_DIR = 'stored-images';
@@ -134,7 +135,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
private file: File,
private fileOpener: FileOpener,
private fileSystemMobileService: FileSystemMobileService,
public RoomStore: RoomStore
public RoomStore: RoomStore,
) {
this.room = this.navParams.get('room');
@@ -667,43 +668,78 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
async pickPicture() {
const file = await this.FilePickerService.getPicture({
cameraResultType: CameraResultType.Base64
const result = await this.FilePickerMobileService.getFile({
types: imageMimeTypes,
multiple: false,
readData: true,
})
if(file.isOk()) {
var base64 = 'data:image/jpeg;base64,' + file.value.base64String
if (file.value.format == "jpeg" || file.value.format == "png" || file.value.format == "gif") {
const compressedImage = await compressImageBase64(
base64,
800, // maxWidth
800, // maxHeight
0.9 // quality
)
if(compressedImage.isOk()) {
if(result.isOk()) {
const file = result.value.files[0]
if(file) {
let resultUrl = decodeURIComponent(file.path);
const base64 = await this.fileSystemMobileService.readFile({resultUrl})
if(base64.isOk()) {
// console.log('1', base64.value)
// console.log('base64.value.data', base64.value.data)
// console.log('file', file)
// console.log('3',createDataURL(base64.value.data, file.mimeType))
this.RoomStore.sendMessage('', [{
file: compressedImage.value,
file: base64.value.data,
fileName: "foto",
source: MessageAttachmentSource.Device,
fileType: MessageAttachmentFileType.Image,
mimeType: 'image/'+file.value.format
mimeType: file.mimeType
}])
} else {
console.log(base64.error)
}
} else {
console.log('no file')
}
} else {
console.log('error', result.error)
}
} else {
if(file.error.type == 'PERMISSION_DENIED') {
this.toastService._badRequest("Sem acesso a camera")
}
Logger.error('failed to pick picture from the device', {
error: file.error
})
}
// const file = await this.FilePickerService.getPicture({
// cameraResultType: CameraResultType.Base64
// })
// if(file.isOk()) {
// var base64 = 'data:image/jpeg;base64,' + file.value.base64String
// if (file.value.format == "jpeg" || file.value.format == "png" || file.value.format == "gif") {
// const compressedImage = await compressImageBase64(
// base64,
// 800, // maxWidth
// 800, // maxHeight
// 0.9 // quality
// )
// if(compressedImage.isOk()) {
// this.RoomStore.sendMessage('', [{
// file: compressedImage.value,
// fileName: "foto",
// source: MessageAttachmentSource.Device,
// fileType: MessageAttachmentFileType.Image,
// mimeType: 'image/'+file.value.format
// }])
// }
// }
// } else {
// if(file.error.type == 'PERMISSION_DENIED') {
// this.toastService._badRequest("Sem acesso a camera")
// }
// Logger.error('failed to pick picture from the device', {
// error: file.error
// })
// }
}
@@ -43,7 +43,6 @@ export class RoomInfoPage implements OnInit {
this.ChatServiceService.getUserPhoto({wxUserId: member.wxUserId, attachmentId: member.userPhoto}).then((result)=> {
if(result.isOk()) {
console.log('get photo', result.value)
this.ObjectURL[member.wxUserId] = 'data:image/jpeg;base64,'+result.value
}
})
+16
View File
@@ -0,0 +1,16 @@
export const imageMimeTypes = [
'image/jpeg', // JPEG/JPG
'image/png', // PNG
'image/gif', // GIF
'image/bmp', // BMP
'image/webp', // WebP
'image/tiff', // TIFF
'image/svg+xml', // SVG
'image/x-icon', // ICO
'image/heif', // HEIF
'image/heic', // HEIC
'image/avif', // AVIF
'image/x-xcf', // XCF (GIMP)
'image/vnd.adobe.photoshop', // PSD (Photoshop)
'image/x-pict' // PICT
];