new member name service ok
This commit is contained in:
parent
d54ce71f02
commit
05dddd9567
@ -141,7 +141,7 @@ class AccountElement extends HTMLElement {
|
|||||||
<!-- User Info Section -->
|
<!-- User Info Section -->
|
||||||
<div class="popup-info">
|
<div class="popup-info">
|
||||||
<p><strong>Name:</strong> <span class="editable" id="popup-name"></span></p>
|
<p><strong>Name:</strong> <span class="editable" id="popup-name"></span></p>
|
||||||
<p><strong>Last Name:</strong> <span class="editable" id="popup-lastname"></span></p>
|
<!--<p><strong>Last Name:</strong> <span class="editable" id="popup-lastname"></span></p>-->
|
||||||
<p><strong>Address:</strong> 🏠 🌍 🗽🎊😩-🎊😑🎄😩</p>
|
<p><strong>Address:</strong> 🏠 🌍 🗽🎊😩-🎊😑🎄😩</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -805,14 +805,10 @@ private handleAvatarUpload(event: Event): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private showProcess(): void {
|
private async showProcess(): Promise<void> {
|
||||||
//console.log("showProcess called");
|
|
||||||
currentMode = 'process';
|
currentMode = 'process';
|
||||||
this.hideAllContent();
|
this.hideAllContent();
|
||||||
|
|
||||||
const headerTitle = this.shadowRoot?.getElementById('header-title');
|
|
||||||
if (headerTitle) headerTitle.textContent = 'Process';
|
|
||||||
|
|
||||||
const processContent = this.shadowRoot?.getElementById('process-content');
|
const processContent = this.shadowRoot?.getElementById('process-content');
|
||||||
if (processContent) {
|
if (processContent) {
|
||||||
processContent.style.display = 'block';
|
processContent.style.display = 'block';
|
||||||
@ -827,32 +823,59 @@ private showProcess(): void {
|
|||||||
<th>Notifications</th>
|
<th>Notifications</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody></tbody>
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3">Loading processes...</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
try {
|
||||||
this.updateProcessTableContent(mockProcessRows);
|
const service = await Services.getInstance();
|
||||||
|
const myProcesses = await service.getMyProcesses();
|
||||||
|
this.updateProcessTableContent(myProcesses);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error loading processes:', error);
|
||||||
|
const tbody = processContent.querySelector('tbody');
|
||||||
|
if (tbody) {
|
||||||
|
tbody.innerHTML = `
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" class="error-message">
|
||||||
|
Error loading processes. Please try again later.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fonction utilitaire pour mettre à jour le contenu du tableau Process
|
private updateProcessTableContent(processes: any[]): void {
|
||||||
private updateProcessTableContent(rows: any[]): void {
|
|
||||||
const tbody = this.shadowRoot?.querySelector('#process-table tbody');
|
const tbody = this.shadowRoot?.querySelector('#process-table tbody');
|
||||||
if (!tbody) return;
|
if (!tbody) return;
|
||||||
|
|
||||||
tbody.innerHTML = rows.map(row => `
|
if (processes.length === 0) {
|
||||||
|
tbody.innerHTML = `
|
||||||
<tr>
|
<tr>
|
||||||
<td>${row.process}</td>
|
<td colspan="3">No processes found</td>
|
||||||
<td>${row.role}</td>
|
</tr>
|
||||||
|
`;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody.innerHTML = processes.map(process => `
|
||||||
|
<tr>
|
||||||
|
<td>${process.name || 'N/A'}</td>
|
||||||
|
<td>${process.role || 'N/A'}</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="notification-container" onclick="window.showProcessNotifications('${row.process}')">
|
<div class="notification-container" onclick="window.showProcessNotifications('${process.id}')">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="16" height="16">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="16" height="16">
|
||||||
<path d="M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z"/>
|
<path d="M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z"/>
|
||||||
</svg>
|
</svg>
|
||||||
<span class="notification-count" data-process="${row.process}">
|
<span class="notification-count" data-process="${process.id}">
|
||||||
${row.notification?.messages?.filter((m: any) => !m.read).length || 0}/${row.notification?.messages?.length || 0}
|
${process.notifications?.unread || 0}/${process.notifications?.total || 0}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -1014,7 +1037,7 @@ private async showPairing(): Promise<void> {
|
|||||||
<tbody></tbody>
|
<tbody></tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="button-container">
|
<div class="button-container">
|
||||||
<button class="add-row-button button-style" onclick="window.addRowPairing()">Add a line</button>
|
<button class="add-row-button button-style" onclick="window.addRowPairing()">Add a device</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
@ -1283,10 +1306,10 @@ private openAvatarPopup(): void {
|
|||||||
<strong>Name:</strong>
|
<strong>Name:</strong>
|
||||||
<input type="text" id="userName" value="${savedName}" class="editable">
|
<input type="text" id="userName" value="${savedName}" class="editable">
|
||||||
</div>
|
</div>
|
||||||
<div class="info-row">
|
<!--<div class="info-row">
|
||||||
<strong>Last Name:</strong>
|
<strong>Last Name:</strong>
|
||||||
<input type="text" id="userLastName" value="${savedLastName}" class="editable">
|
<input type="text" id="userLastName" value="${savedLastName}" class="editable">
|
||||||
</div>
|
</div>-->
|
||||||
<div class="info-row">
|
<div class="info-row">
|
||||||
<strong>Address:</strong>
|
<strong>Address:</strong>
|
||||||
<span>${savedAddress}</span>
|
<span>${savedAddress}</span>
|
||||||
|
@ -399,6 +399,51 @@ export default class Services {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async createProfileProcess(): Promise<ApiReturn> {
|
||||||
|
const myProcessId: string = this.getPairingProcessId();
|
||||||
|
const roles: Record<string, RoleDefinition> = {
|
||||||
|
owner: {
|
||||||
|
members: [{ process_id: myProcessId }],
|
||||||
|
validation_rules: [
|
||||||
|
{
|
||||||
|
quorum: 0.01,
|
||||||
|
fields: ['description', 'relayDomaine', 'serviceDomaine'],
|
||||||
|
min_sig_member: 0.01,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
storages: [STORAGEURL]
|
||||||
|
},
|
||||||
|
blm: {
|
||||||
|
members: [{}],
|
||||||
|
validation_rules: [
|
||||||
|
{
|
||||||
|
quorum: 0.0,
|
||||||
|
fields: ['description', 'ourDomaine', 'serviceDomaine'],
|
||||||
|
min_sig_member: 0.0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
storages: [STORAGEURL]
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const profileTemplate = {
|
||||||
|
description: 'profile',
|
||||||
|
};
|
||||||
|
const publicData = {}
|
||||||
|
const relayAddress = this.getAllRelays()[0]['spAddress'];
|
||||||
|
const feeRate = 1;
|
||||||
|
try {
|
||||||
|
return this.sdkClient.create_new_process(
|
||||||
|
profileTemplate,
|
||||||
|
roles,
|
||||||
|
publicData,
|
||||||
|
relayAddress,
|
||||||
|
feeRate
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(`Creating process failed:, ${e}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async lookForNotaryProcess(): Promise<string | null> {
|
private async lookForNotaryProcess(): Promise<string | null> {
|
||||||
const processes = await this.getMyProcesses();
|
const processes = await this.getMyProcesses();
|
||||||
for (const processId of processes) {
|
for (const processId of processes) {
|
||||||
@ -1370,4 +1415,24 @@ export default class Services {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async updateMemberPublicName(process: Process, newName: string): Promise<ApiReturn> {
|
||||||
|
const lastState = this.getLastCommitedState(process);
|
||||||
|
if (!lastState) {
|
||||||
|
throw new Error('No committed state found');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create new state with updated memberPublicName
|
||||||
|
const newState = {
|
||||||
|
...lastState,
|
||||||
|
public_data: {
|
||||||
|
...lastState.public_data,
|
||||||
|
memberPublicName: newName,
|
||||||
|
pairedAddresses: lastState.public_data.pairedAddresses // Préserver les adresses existantes
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Update the process with new state
|
||||||
|
return await this.updateProcess(process, newState, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user