template_process_message_ok

This commit is contained in:
Pascal 2025-01-13 17:58:50 +01:00
parent 37e69790d9
commit ff911edf49

View File

@ -265,92 +265,63 @@ class ChatElement extends HTMLElement {
}
}
public async createMessagingProcess(otherMembers: Member[], relayAddress: string, feeRate: number): Promise<ApiReturn> {
public async createMessagingProcess(
otherMembers: Member[],
relayAddress: string,
feeRate: number,
parentProcessId: string,
roleName: string
): Promise<ApiReturn> {
console.log('🚀 Début createMessagingProcess');
console.log('📝 Parent Process ID:', parentProcessId);
console.log('👥 Other Member:', otherMembers[0]);
console.log('👑 Role Name:', roleName);
if (!this.isPaired()) {
throw new Error('Device not paired');
throw new Error('Device not paired');
}
const me = await this.getMemberFromDevice();
console.log('My SP addresses:', me);
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 myAddresses = await this.getMemberFromDevice();
console.log('🔑 Mes adresses:', myAddresses);
if (!myAddresses) {
throw new Error('No paired member found');
}
const messageContent = {
text: '',
timestamp: Date.now()
};
const messagingTemplate = {
process_id: crypto.randomUUID(),
parent_id: null,
parent_id: parentProcessId,
description: 'messaging',
messages: {
state: 'initial',
object: {
type: 'message_list',
content: [
{
text: messageContent.text,
timestamp: Date.now(),
sender: myAddresses[0]
}
],
content_type: {
allowed: ['text', 'file'],
default: 'text'
},
metadata: {
created_at: Date.now(),
last_updated: Date.now()
}
}
},
roles: {
public: {
members: allMembers,
validation_rules: [
{
quorum: 0.0,
fields: ['description', 'roles', 'messages'],
min_sig_member: 0.0,
},
[roleName]: {
members: [
{ sp_addresses: myAddresses },
{ sp_addresses: otherMembers[0].sp_addresses }
],
storages: [storageUrl]
},
owner: {
members: meAndOne,
validation_rules: [
{
quorum: 1.0,
fields: ['description', 'roles', 'messages'],
fields: ['messages'],
min_sig_member: 1.0,
},
],
storages: [storageUrl]
},
users: {
members: everyOneElse,
validation_rules: [
{
quorum: 0.0,
fields: ['description', 'roles', 'messages'],
min_sig_member: 0.0,
},
],
storages: [storageUrl]
},
},
}
}
};
console.log('📋 Template final:', JSON.stringify(messagingTemplate, null, 2));
try {
return this.sdkClient.create_new_process(JSON.stringify(messagingTemplate), null, relayAddress, feeRate);
const result = await this.sdkClient.create_new_process(
JSON.stringify(messagingTemplate),
parentProcessId,
relayAddress,
feeRate
);
console.log('✅ Résultat création process:', result);
return result;
} catch (e) {
console.error('❌ Erreur création process:', e);
throw new Error(`Creating process failed: ${e}`);
}
}
@ -468,10 +439,16 @@ class ChatElement extends HTMLElement {
}
};
const groupItem = this.shadowRoot?.querySelector('[data-process-id]');
const parentProcessId = groupItem?.getAttribute('data-process-id') || '';
const roleName = 'default';
const result = await this.createMessagingProcess(
[{ sp_addresses: [this.selectedMemberId] }],
[{ sp_addresses: [this.selectedMemberId!] }],
'relay_address',
1
1,
this.processId || '',
'default'
);
await this.saveConversationProcessRef(this.selectedMemberId, messagingTemplate.process_id);
@ -586,10 +563,15 @@ class ChatElement extends HTMLElement {
sdkClientInitialized: !!this.sdkClient
});
const roleName = roleElement.querySelector('.role-name')?.textContent || 'default';
console.log('🎭 Role cliqué:', roleName);
const result = await this.createMessagingProcess(
[member],
'relay_address',
1
1,
processId,
roleName
);
console.log('Messaging process created:', {
@ -1088,9 +1070,8 @@ class ChatElement extends HTMLElement {
return new Promise((resolve) => {
// Logique d'initialisation du SDK
resolve({
is_paired: () => true, // Valeur par défaut pour le test
is_paired: () => true,
create_new_process: async (template: string, parentId: string | null, relayAddress: string, feeRate: number) => {
// Implémentation de create_new_process
return { success: true };
}
});