diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts index 9629ad4..b833bbb 100755 --- a/src/pages/chat/chat.ts +++ b/src/pages/chat/chat.ts @@ -8,17 +8,10 @@ declare global { import { membersMock } from '../../mocks/mock-signature/membersMocks'; import { ApiReturn, Device, Member } from '../../../pkg/sdk_client'; -import { - Message, - DocumentSignature, - } from '../../models/signature.models'; -import { messageStore } from '../../utils/messageMock'; -import { Group } from '../../interface/groupInterface'; import { getCorrectDOM } from '../../utils/document.utils'; import chatStyle from '../../../public/style/chat.css?inline'; import { addressToEmoji } from '../../utils/sp-address.utils'; import Database from '../../services/database.service'; -import Services from '../../services/service'; const storageUrl = `/storage`; @@ -49,13 +42,10 @@ class ChatElement extends HTMLElement { private sdkClient: any; private processId: string | null = null; private selectedMemberId: string | null = null; - private messagesMock: any[] = []; - private dom: Node; private notifications: LocalNotification[] = []; private notificationBadge = document.querySelector('.notification-badge'); private notificationBoard = document.getElementById('notification-board'); private notificationBell = document.getElementById('notification-bell'); - private selectedSignatories: DocumentSignature[] = []; private allMembers = membersMock.map(member => ({ id: member.id, name: member.name, @@ -68,14 +58,10 @@ class ChatElement extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); - this.messagesMock = messageStore.getMessages(); - this.dom = getCorrectDOM('signature-element'); this.processId = this.getAttribute('process-id'); - // Initialiser sdkClient this.initSDKClient(); - // Récupérer le processId depuis l'attribut du composant console.log('🔍 Constructor - Process ID from element:', this.processId); this.shadowRoot!.innerHTML = ` @@ -570,18 +556,15 @@ class ChatElement extends HTMLElement { const senderEmoji = await addressToEmoji(message.metadata.sender); - // Vérifier si c'est un fichier if (message.metadata.type === 'file') { let fileContent = ''; if (message.metadata.fileType.startsWith('image/')) { - // Afficher l'image fileContent = `
${message.metadata.fileName}
`; } else { - // Afficher un lien pour télécharger le fichier const blob = this.base64ToBlob(message.metadata.fileData, message.metadata.fileType); const url = URL.createObjectURL(blob); fileContent = ` @@ -704,71 +687,6 @@ class ChatElement extends HTMLElement { } - // Toggle the list of Roles - private toggleRoles(group: Group, groupElement: HTMLElement) { - console.log('=== toggleRoles START ==='); - console.log('Group:', group.name); - console.log('Group roles:', group.roles); // Afficher tous les rôles disponibles - - let roleList = groupElement.querySelector('.role-list'); - console.log('Existing roleList:', roleList); - - if (roleList) { - const roleItems = roleList.querySelectorAll('.role-item'); - roleItems.forEach(roleItem => { - console.log('Processing roleItem:', roleItem.innerHTML); // Voir le contenu HTML complet - - let container = roleItem.querySelector('.role-item-container'); - if (!container) { - container = document.createElement('div'); - container.className = 'role-item-container'; - - // Créer un span pour le nom du rôle - const nameSpan = document.createElement('span'); - nameSpan.className = 'role-name'; - nameSpan.textContent = roleItem.textContent?.trim() || ''; - - container.appendChild(nameSpan); - roleItem.textContent = ''; - roleItem.appendChild(container); - } - - // Récupérer le nom du rôle - const roleName = roleItem.textContent?.trim(); - console.log('Role name from textContent:', roleName); - - // Alternative pour obtenir le nom du rôle - const roleNameAlt = container.querySelector('.role-name')?.textContent; - console.log('Role name from span:', roleNameAlt); - - if (!container.querySelector('.folder-icon')) { - const folderButton = document.createElement('span'); - folderButton.className = 'folder-icon'; - - folderButton.addEventListener('click', (event) => { - event.stopPropagation(); - console.log('Clicked role name:', roleName); - console.log('Available roles:', group.roles.map(r => r.name)); - - const role = group.roles.find(r => r.name === roleName); - if (role) { - console.log('Found role:', role); - } else { - console.error('Role not found. Name:', roleName); - console.error('Available roles:', group.roles); - } - }); - - container.appendChild(folderButton); - } - }); - - (roleList as HTMLElement).style.display = - (roleList as HTMLElement).style.display === 'none' ? 'block' : 'none'; - } - } - - private async loadGroupList(processId: string): Promise { console.log('Loading group list with processId:', processId); const groupList = this.shadowRoot?.querySelector('#group-list'); @@ -888,26 +806,6 @@ class ChatElement extends HTMLElement { (userList as HTMLElement).classList.toggle('show'); } - // Generate an automatic response - private generateAutoReply(senderName: string): Message { - const now = new Date(); - const formattedTime = now.toLocaleString('fr-FR', { - day: '2-digit', - month: '2-digit', - year: 'numeric', - hour: '2-digit', - minute: '2-digit' - }); - - return { - id: Date.now(), - sender: senderName, - text: "OK...", - time: formattedTime, - type: 'text' as const - }; - } - // Send a file private async sendFile(file: File) { const MAX_FILE_SIZE = 1 * 1024 * 1024; @@ -1042,7 +940,6 @@ class ChatElement extends HTMLElement { const ctx = canvas.getContext('2d'); img.onload = () => { - // Calculer les nouvelles dimensions let width = img.width; let height = img.height; const MAX_WIDTH = 800; @@ -1064,7 +961,6 @@ class ChatElement extends HTMLElement { canvas.height = height; ctx?.drawImage(img, 0, 0, width, height); - // Compression avec qualité réduite resolve(canvas.toDataURL('image/jpeg', 0.7)); }; @@ -1149,7 +1045,6 @@ class ChatElement extends HTMLElement { private async initSDKClient() { try { - // Récupérer l'instance du SDK depuis window ou l'initialiser this.sdkClient = (window as any).sdk || await this.createSDKClient(); if (!this.sdkClient) { throw new Error('Failed to initialize SDK client'); @@ -1160,10 +1055,7 @@ class ChatElement extends HTMLElement { } private async createSDKClient() { - // Implémentez ici la logique de création du SDK client - // Ceci est un exemple, ajustez selon votre implémentation réelle return new Promise((resolve) => { - // Logique d'initialisation du SDK resolve({ is_paired: () => true, create_new_process: async (template: string, parentId: string | null, relayAddress: string, feeRate: number) => { @@ -1173,46 +1065,9 @@ class ChatElement extends HTMLElement { }); } - private async getExistingConversationProcess(memberId: string) { - const db = await Database.getInstance(); - try { - const processStore = 'processes'; - const conversations = []; - let i = 0; - let process; - + - do { - process = await db.getObject(processStore, i.toString()); - if (process) { - conversations.push(process); - } - i++; - } while (process); - - return conversations.find(process => - process.description === 'messaging' && - process.roles.owner.members.some((m: any) => - m.sp_addresses.includes(memberId) - ) - ); - } catch (error) { - console.error('Error getting conversation process:', error); - return null; - } - } - - async getProcessFromDB(processId: string) { - const db = await Database.getInstance(); - const processStore = 'processes'; - const process = await db.getObject(processStore, processId); - console.log('📦 Process trouvé dans IndexedDB:', { - store: processStore, - processId: processId, - data: process - }); - return process; - } + private async getExistingMessageProcess(parentId: string, spAddresses: string[]): Promise { try {