Refactor process creation for pairing/profile/folder use cases

This commit is contained in:
NicolasCantu 2025-06-04 09:12:42 +02:00
parent e15da5c22a
commit 8eb6f36b64

View File

@ -262,26 +262,13 @@ export default class Services {
throw new Error('Amount is still 0 after 3 attempts');
}
public async createPairingProcess(userName: string, pairWith: string[], relayAddress: string, feeRate: number): Promise<ApiReturn> {
public async createPairingProcess(userName: string, pairWith: string[]): Promise<ApiReturn> {
if (this.sdkClient.is_paired()) {
throw new Error('Device already paired');
}
const myAddress: string = this.sdkClient.get_address();
pairWith.push(myAddress);
const roles: Record<string, RoleDefinition> = {
pairing: {
members: [],
validation_rules: [
{
quorum: 1.0,
fields: ['description', 'counter', 'roles', 'memberPublicName', 'pairedAddresses'],
min_sig_member: 1.0,
},
],
storages: [STORAGEURL]
},
};
const pairingTemplate = {
const privateData = {
description: 'pairing',
counter: 0,
};
@ -289,15 +276,26 @@ export default class Services {
memberPublicName: userName,
pairedAddresses: pairWith,
};
const validation_fields: string[] = [...Object.keys(privateData), ...Object.keys(publicData), 'roles'];
const roles: Record<string, RoleDefinition> = {
pairing: {
members: [],
validation_rules: [
{
quorum: 1.0,
fields: validation_fields,
min_sig_member: 1.0,
},
],
storages: [STORAGEURL]
},
};
try {
return this.sdkClient.create_new_process(
pairingTemplate,
roles,
publicData,
relayAddress,
feeRate,
this.getAllMembers()
);
return this.createProcess(
privateData,
publicData,
roles
);
} catch (e) {
throw new Error(`Creating process failed:, ${e}`);
}
@ -474,8 +472,15 @@ export default class Services {
delete userData.validator; // We don't want that in the final pcd
const userDataKeys = Object.keys(userData);
const privateData = {
description: 'profile',
...userData,
};
const publicData = {
identityCertified: false,
};
const ownerRoleFields: string[] = [...privateData, 'roles'];
const validatorRoleFields: string[] = [...publicData];
const roles: Record<string, RoleDefinition> = {
demiurge: {
members: [myProcessId],
@ -487,11 +492,7 @@ export default class Services {
validation_rules: [
{
quorum: 0.01,
fields: [
'description',
'roles',
...userDataKeys
],
fields: ownerRoleFields,
min_sig_member: 0.01,
},
],
@ -502,15 +503,12 @@ export default class Services {
validation_rules: [
{
quorum: 1.0,
fields: ['identityCertified'],
fields: validatorRoleFields,
min_sig_member: 1.0
},
{
quorum: 0.0,
fields: [
'description',
...userDataKeys
],
fields: ownerRoleFields,
min_sig_member: 0.0
}
],
@ -532,37 +530,15 @@ export default class Services {
storages: [STORAGEURL]
},
};
const profileTemplate = {
description: 'profile',
...userData,
};
const publicData = {
identityCertified: false,
};
// Add name and lastName if profile_idn (notary profile)
// if (userDataKeys.includes('profile_idn')) {
// publicData.identityCertified = true;
// publicData.name = userData.name;
// publicData.lastName = userData.lastName;
// } else {
// publicData.identityCertified = false;
// }
const relayAddress = this.getAllRelays()[0]['spAddress'];
const feeRate = 1;
await this.getTokensFromFaucet();
try {
return this.sdkClient.create_new_process(
profileTemplate,
roles,
publicData,
relayAddress,
feeRate,
this.getAllMembers()
);
return this.createProcess(
privateData,
publicData,
roles,
)
} catch (e) {
throw new Error(`Creating process failed:, ${e}`);
}
@ -575,7 +551,14 @@ export default class Services {
throw new Error('Missing pairing id');
}
const folderDataKeys = Object.keys(folderData);
const privateData = {
description: 'folder',
documents: [],
notes: [],
...folderData,
};
const ownerRoleFields = [Object.keys(privateData), 'roles'];
const stakeholdersRoleFields = ['documents', 'notes'];
const roles: Record<string, RoleDefinition> = {
owner: {
@ -583,11 +566,7 @@ export default class Services {
validation_rules: [
{
quorum: 0.01,
fields: [
'description',
'roles',
...folderDataKeys
],
fields: ownerRoleFields,
min_sig_member: 0.01,
},
],
@ -598,7 +577,7 @@ export default class Services {
validation_rules: [
{
quorum: 0.01,
fields: ['documents', 'notes'],
fields: stakeholdersRoleFields,
min_sig_member: 0.01,
},
],
@ -609,7 +588,7 @@ export default class Services {
validation_rules: [
{
quorum: 0.0,
fields: ['documents', 'notes'],
fields: stakeholdersRoleFields,
min_sig_member: 0.0,
},
],
@ -617,31 +596,14 @@ export default class Services {
}
};
const folderTemplate = {
description: 'folder',
...folderData,
};
console.log('🚀 ~ Services ~ createFolderProcess ~ folderTemplate:', folderTemplate);
const publicData = {
};
const relayAddress = this.getAllRelays()[0]['spAddress'];
const feeRate = 1;
await this.getTokensFromFaucet();
try {
return this.sdkClient.create_new_process(
folderTemplate,
roles,
publicData,
relayAddress,
feeRate,
this.getAllMembers()
);
return this.getProcess(
privateData,
{},
roles
)
} catch (e) {
throw new Error(`Creating folder process failed: ${e}`);
}