mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
fix upload picture
This commit is contained in:
@@ -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})
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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
|
||||
];
|
||||
Reference in New Issue
Block a user