implement_message_in_code_only
This commit is contained in:
parent
7e0eb4d450
commit
3ecbe0da24
@ -9,21 +9,21 @@ declare global {
|
||||
import { groupsMock } from '../../mocks/mock-signature/groupsMock';
|
||||
import { messagesMock as initialMessagesMock, messagesMock } from '../../mocks/mock-signature/messagesMock';
|
||||
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 { Member } from '../../interface/memberInterface';
|
||||
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';
|
||||
|
||||
const storageUrl = `/storage`;
|
||||
|
||||
|
||||
let currentUser: Member = membersMock[0];
|
||||
|
||||
interface LocalNotification {
|
||||
memberId: string;
|
||||
text: string;
|
||||
@ -44,6 +44,7 @@ class ChatElement extends HTMLElement {
|
||||
return ['process-id'];
|
||||
}
|
||||
|
||||
private sdkClient: any;
|
||||
private processId: string | null = null;
|
||||
private selectedMemberId: string | null = null;
|
||||
private messagesMock: any[] = [];
|
||||
@ -107,7 +108,6 @@ class ChatElement extends HTMLElement {
|
||||
`;
|
||||
|
||||
window.toggleUserList = this.toggleUserList.bind(this);
|
||||
window.switchUser = this.switchUser.bind(this);
|
||||
window.loadMemberChat = this.loadMemberChat.bind(this);
|
||||
|
||||
// Initialiser les événements de notification
|
||||
@ -217,6 +217,102 @@ class ChatElement extends HTMLElement {
|
||||
this.updateNotificationBadge();
|
||||
}
|
||||
|
||||
public isPaired(): boolean {
|
||||
try {
|
||||
return this.sdkClient.is_paired();
|
||||
} catch (e) {
|
||||
throw new Error(`isPaired ~ Error: ${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
public async createMessagingProcess(otherMembers: Member[],relayAddress: string, feeRate: number): Promise<ApiReturn> {
|
||||
if (!this.isPaired()) {
|
||||
throw new Error('Device not paired');
|
||||
}
|
||||
const me = await this.getMemberFromDevice();
|
||||
if (!me) {
|
||||
throw new Error('No paired member in device');
|
||||
}
|
||||
const allMembers: Member[] = otherMembers;
|
||||
allMembers.push({ sp_addresses: me });
|
||||
const meAndOne = [{ sp_addresses: me }, otherMembers.pop()!];
|
||||
const everyOneElse = otherMembers;
|
||||
const messagingTemplate = {
|
||||
description: 'messaging',
|
||||
roles: {
|
||||
public: {
|
||||
members: allMembers,
|
||||
validation_rules: [
|
||||
{
|
||||
quorum: 0.0,
|
||||
fields: ['description', 'roles'],
|
||||
min_sig_member: 0.0,
|
||||
},
|
||||
],
|
||||
storages: [storageUrl]
|
||||
},
|
||||
owner: {
|
||||
members: meAndOne,
|
||||
validation_rules: [
|
||||
{
|
||||
quorum: 1.0,
|
||||
fields: ['description', 'roles'],
|
||||
min_sig_member: 1.0,
|
||||
},
|
||||
],
|
||||
storages: [storageUrl]
|
||||
},
|
||||
users: {
|
||||
members: everyOneElse,
|
||||
validation_rules: [
|
||||
{
|
||||
quorum: 0.0,
|
||||
fields: ['description', 'roles'],
|
||||
min_sig_member: 0.0,
|
||||
},
|
||||
],
|
||||
storages: [storageUrl]
|
||||
},
|
||||
},
|
||||
};
|
||||
try {
|
||||
return this.sdkClient.create_new_process(JSON.stringify(messagingTemplate), null, relayAddress, feeRate);
|
||||
} catch (e) {
|
||||
throw new Error(`Creating process failed: ${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
async getMemberFromDevice(): Promise<string[] | null> {
|
||||
try {
|
||||
const device = await this.getDeviceFromDatabase();
|
||||
if (device) {
|
||||
const parsed: Device = JSON.parse(device);
|
||||
const pairedMember = parsed['paired_member'];
|
||||
return pairedMember.sp_addresses;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (e) {
|
||||
throw new Error(`Failed to retrieve paired_member from device: ${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
async getDeviceFromDatabase(): Promise<string | null> {
|
||||
const db = await Database.getInstance();
|
||||
const walletStore = 'wallet';
|
||||
try {
|
||||
const dbRes = await db.getObject(walletStore, '1');
|
||||
if (dbRes) {
|
||||
const wallet = dbRes['device'];
|
||||
return wallet;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (e) {
|
||||
throw new Error(`Failed to retrieve device from db: ${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Send a messsage
|
||||
private sendMessage() {
|
||||
const messageInput = this.shadowRoot?.querySelector('#message-input') as HTMLInputElement;
|
||||
@ -534,27 +630,6 @@ class ChatElement extends HTMLElement {
|
||||
(userList as HTMLElement).classList.toggle('show');
|
||||
}
|
||||
|
||||
private switchUser(userId: string | number) {
|
||||
const user = membersMock.find(member => member.id === userId);
|
||||
if (!user) return;
|
||||
currentUser = user;
|
||||
this.updateCurrentUserDisplay();
|
||||
const userList = getCorrectDOM('userList') as HTMLElement;
|
||||
userList?.classList.remove('show');
|
||||
}
|
||||
|
||||
// Function to update the display of the current user
|
||||
private updateCurrentUserDisplay() {
|
||||
const userDisplay = getCorrectDOM('current-user') as HTMLElement;
|
||||
if (userDisplay) {
|
||||
userDisplay.innerHTML = `
|
||||
<div class="current-user-info">
|
||||
<span class="user-avatar">${currentUser.avatar}</span>
|
||||
<span class="user-name">${currentUser.name}</span>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
}
|
||||
// Generate an automatic response
|
||||
private generateAutoReply(senderName: string): Message {
|
||||
return {
|
||||
@ -599,7 +674,6 @@ class ChatElement extends HTMLElement {
|
||||
}
|
||||
|
||||
connectedCallback() {
|
||||
this.updateCurrentUserDisplay();
|
||||
|
||||
if (this.processId) {
|
||||
console.log('🔍 Loading chat with process ID:', this.processId);
|
||||
|
Loading…
x
Reference in New Issue
Block a user