[bug] fix broken updateProcess
Some checks failed
4NK Template Sync / check-and-sync (push) Has been cancelled
Some checks failed
4NK Template Sync / check-and-sync (push) Has been cancelled
This commit is contained in:
parent
085b315883
commit
a27ffd6462
@ -625,31 +625,67 @@ export class Service {
|
|||||||
|
|
||||||
// Core protocol method: Update Process
|
// Core protocol method: Update Process
|
||||||
async updateProcess(
|
async updateProcess(
|
||||||
process: any,
|
process: Process,
|
||||||
privateData: Record<string, any>,
|
privateData: Record<string, any>,
|
||||||
publicData: Record<string, any>,
|
publicData: Record<string, any>,
|
||||||
roles: Record<string, any> | null
|
roles: Record<string, RoleDefinition> | null
|
||||||
): Promise<ApiReturn> {
|
): Promise<ApiReturn> {
|
||||||
console.log(`🔄 Updating process ${process.states[0]?.state_id || 'unknown'}`);
|
console.log(`🔄 Updating process ${process.states[0]?.commited_in || 'unknown'}`);
|
||||||
console.log('Private data:', privateData);
|
console.log('Private data:', privateData);
|
||||||
console.log('Public data:', publicData);
|
console.log('Public data:', publicData);
|
||||||
console.log('Roles:', roles);
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Convert data to WASM format
|
|
||||||
const newAttributes = wasm.encode_json(privateData);
|
|
||||||
const newPublicData = wasm.encode_json(publicData);
|
|
||||||
const newRoles = roles || process.states[0]?.roles || {};
|
|
||||||
|
|
||||||
// Use WASM function to update process
|
if (!process || !process.states || process.states.length < 2) {
|
||||||
const result = wasm.update_process(process, newAttributes, newRoles, newPublicData, this.membersList);
|
throw new Error('Process not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!roles || Object.keys(roles).length === 0) {
|
||||||
|
const state = this.getLastCommitedState(process);
|
||||||
|
if (state) {
|
||||||
|
roles = state.roles;
|
||||||
|
} else {
|
||||||
|
roles = process.states[0]?.roles;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('Roles provided:', roles);
|
||||||
|
}
|
||||||
|
|
||||||
|
let members: Set<Member> = new Set();
|
||||||
|
for (const role of Object.values(roles!)) {
|
||||||
|
for (const member of role.members) {
|
||||||
|
members.add(member)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (members.size === 0) {
|
||||||
|
// This must be a pairing process
|
||||||
|
// Check if we have a pairedAddresses in the public data
|
||||||
|
const publicData = process.states[0]?.public_data;
|
||||||
|
if (!publicData || !publicData['pairedAddresses']) {
|
||||||
|
throw new Error('Not a pairing process');
|
||||||
|
}
|
||||||
|
const decodedAddresses = this.decodeValue(publicData['pairedAddresses']);
|
||||||
|
if (decodedAddresses.length === 0) {
|
||||||
|
throw new Error('Not a pairing process');
|
||||||
|
}
|
||||||
|
members.add({ sp_addresses: decodedAddresses });
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.checkConnections([...members]);
|
||||||
|
const privateSplitData = this.splitData(privateData);
|
||||||
|
const publicSplitData = this.splitData(publicData);
|
||||||
|
const encodedPrivateData = {
|
||||||
|
...wasm.encode_json(privateSplitData.jsonCompatibleData),
|
||||||
|
...wasm.encode_binary(privateSplitData.binaryData)
|
||||||
|
};
|
||||||
|
const encodedPublicData = {
|
||||||
|
...wasm.encode_json(publicSplitData.jsonCompatibleData),
|
||||||
|
...wasm.encode_binary(publicSplitData.binaryData)
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const result = wasm.update_process(process, encodedPrivateData, roles, encodedPublicData, this.membersList);
|
||||||
|
|
||||||
if (result.updated_process) {
|
if (result.updated_process) {
|
||||||
// Update our cache
|
await this.handleApiReturn(result);
|
||||||
this.processes.set(result.updated_process.process_id, result.updated_process.current_process);
|
|
||||||
|
|
||||||
// Save to database
|
|
||||||
await this.saveProcessToDb(result.updated_process.process_id, result.updated_process.current_process);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user