Remove dead code

This commit is contained in:
Sosthene 2025-06-13 21:04:45 +02:00 committed by NicolasCantu
parent e1494d5bf4
commit dfae77de58
3 changed files with 19 additions and 589 deletions

View File

@ -1,4 +1,3 @@
export { default as Services } from './services/service';
export { default as Database } from './services/database.service';
export { MessageType } from './models/process.model';
export type { ProfileData, ProfileMessage } from './models/process.model';

View File

@ -8,7 +8,7 @@ import { cleanSubscriptions } from './utils/subscription.utils';
import { LoginComponent } from './pages/home/home-component';
import { prepareAndSendPairingTx } from './utils/sp-address.utils';
import ModalService from './services/modal.service';
import { MessageType, ProfileData, FolderData, LinkAcceptedMessage } from './models/process.model';
import { MessageType } from './models/process.model';
const routes: { [key: string]: string } = {
home: '/src/pages/home/home.html',
@ -216,7 +216,7 @@ export async function registerAllListeners() {
try {
const tokens = await tokenService.generateSessionToken(event.origin);
const acceptedMsg: LinkAcceptedMessage = {
const acceptedMsg = {
type: MessageType.LINK_ACCEPTED,
accessToken: tokens.accessToken,
refreshToken: tokens.refreshToken
@ -231,46 +231,6 @@ export async function registerAllListeners() {
}
}
const handleAddProfile = async (event: MessageEvent) => {
if (event.data.type !== MessageType.CREATE_PROFILE) {
return;
}
if (!services.isPaired()) {
const errorMsg = 'Device not paired';
errorResponse(errorMsg, event.origin);
return;
}
try {
const { profileData, accessToken } = event.data;
if (!accessToken || await !tokenService.validateToken(accessToken, event.origin)) {
throw new Error('Invalid or expired session token');
}
// Create profile
const { processId, process } = await services.createAndSendProfileTx(profileData);
const res = {
processId,
process,
profileData,
};
window.parent.postMessage(
{
type: MessageType.PROFILE_CREATED,
profileCreated: res,
},
event.origin
);
} catch (e) {
const errorMsg = `Failed to create profile: ${e}`;
errorResponse(errorMsg, event.origin);
}
}
const handleGetMyProcesses = async (event: MessageEvent) => {
if (event.data.type !== MessageType.GET_MY_PROCESSES) {
return;
@ -309,8 +269,22 @@ export async function registerAllListeners() {
return;
}
// const tokenService = await TokenService.getInstance();
// if (!services.isPaired()) {
// const errorMsg = 'Device not paired';
// errorResponse(errorMsg, event.origin);
// return;
// }
try {
// const { profileData, accessToken } = event.data;
// // Validate the session token
// if (!accessToken || !tokenService.validateToken(accessToken, event.origin)) {
// throw new Error('Invalid or expired session token');
// }
const processes = await services.getProcesses();
window.parent.postMessage(
@ -326,45 +300,6 @@ export async function registerAllListeners() {
}
}
const handleAddFolder = async (event: MessageEvent) => {
if (event.data.type !== MessageType.CREATE_FOLDER) {
return;
}
if (!services.isPaired()) {
const errorMsg = 'Device not paired';
errorResponse(errorMsg, event.origin);
return;
}
try {
const { folderData, accessToken } = event.data;
if (!accessToken || await !tokenService.validateToken(accessToken, event.origin)) {
throw new Error('Invalid or expired session token');
}
const { processId, process } = await services.createAndSendFolderTx(folderData);
const res = {
processId,
process,
folderData,
};
window.parent.postMessage(
{
type: MessageType.FOLDER_CREATED,
folderCreated: res,
},
event.origin
);
} catch (e) {
const errorMsg = `Failed to create folder: ${e}`;
errorResponse(errorMsg, event.origin);
}
}
/// We got a state for some process and return as many clear attributes as we can
const handleDecryptState = async (event: MessageEvent) => {
if (event.data.type !== MessageType.RETRIEVE_DATA) {
@ -626,10 +561,8 @@ export async function registerAllListeners() {
// Remove before adding to be sure there's no duplicate
window.removeEventListener('message', handleRequestLink);
window.removeEventListener('message', handleAddProfile);
window.removeEventListener('message', handleGetProcesses);
window.removeEventListener('message', handleGetMyProcesses);
window.removeEventListener('message', handleAddFolder);
window.removeEventListener('message', handleDecryptState);
window.removeEventListener('message', handleValidateToken);
window.removeEventListener('message', handleRenewToken);
@ -639,10 +572,8 @@ export async function registerAllListeners() {
window.removeEventListener('message', handleNotifyUpdate);
window.addEventListener('message', handleRequestLink);
window.addEventListener('message', handleAddProfile);
window.addEventListener('message', handleGetProcesses);
window.addEventListener('message', handleGetMyProcesses);
window.addEventListener('message', handleAddFolder);
window.addEventListener('message', handleDecryptState);
window.addEventListener('message', handleValidateToken);
window.addEventListener('message', handleRenewToken);

View File

@ -1,7 +1,5 @@
// import { WebSocketClient } from '../websockets';
import { INotification } from '~/models/notification.model';
import { IProcess } from '~/models/process.model';
// import Database from './database';
import { initWebsocket, sendMessage } from '../websockets';
import { ApiReturn, Device, HandshakeMessage, Member, OutPointProcessMap, Process, ProcessState, RoleDefinition, SecretsStore, UserDiff } from '../../pkg/sdk_client';
import ModalService from './modal.service';
@ -372,376 +370,6 @@ export default class Services {
return(result);
}
public async createDmProcess(
otherMember: string[],
): Promise<ApiReturn> {
if (otherMember.length === 0) {
throw new Error('Can\'t open dm with empty user');
}
try {
console.log('🚀 Début createDmProcess');
console.log('👥 Other Member:', otherMember);
if (!this.isPaired()) {
throw new Error('Device not paired');
}
const myAddresses = await this.getMemberFromDevice();
console.log('🔑 Mes adresses:', myAddresses);
if (!myAddresses) {
throw new Error('No paired member found');
}
const roles = {
demiurge: {
members: [
{ sp_addresses: myAddresses },
],
validation_rules: [
{
quorum: 0.01,
fields: ['message', 'description', 'roles'],
min_sig_member: 0.01,
},
],
storages: [STORAGEURL]
},
dm: {
members: [
{ sp_addresses: myAddresses },
{ sp_addresses: otherMember }
],
validation_rules: [
{
quorum: 0.01,
fields: ['message', 'description'],
min_sig_member: 0.01,
},
],
storages: [STORAGEURL]
}
}
const dmTemplate = {
description: 'dm',
message: '',
};
console.log('📋 Template final:', JSON.stringify(dmTemplate, null, 2));
const relayAddress = this.getAllRelays()[0]['spAddress'];
const feeRate = 1;
const publicData = {};
await this.checkConnections ([{ sp_addresses: otherMember }]);
const result = this.sdkClient.create_new_process (
dmTemplate,
roles,
publicData,
relayAddress,
feeRate
);
return result;
} catch (e) {
console.error('❌ Erreur:', e);
throw e;
}
}
public async createNotaryProcess(notaryTokens: string[] | null): Promise<ApiReturn> {
const notaryProcess = await this.lookForNotaryProcess();
if (notaryProcess) {
console.log('NOTARY PROCESS:', notaryProcess);
throw new Error('There is already a notary process');
}
const myProcessId: string = this.getPairingProcessId();
const roles: Record<string, RoleDefinition> = {
notary: {
members: [myProcessId],
validation_rules: [
{
quorum: 0,
fields: ['roles', 'idNotTokens'],
min_sig_member: 0,
},
],
storages: [STORAGEURL]
},
};
const pairingTemplate = {
description: 'notary',
};
const publicData = {
idNotTokens: notaryTokens,
}
const relayAddress = this.getAllRelays()[0]['spAddress'];
const feeRate = 1;
await this.getTokensFromFaucet();
try {
return this.sdkClient.create_new_process(
pairingTemplate,
roles,
publicData,
relayAddress,
feeRate,
this.getAllMembers()
);
} catch (e) {
throw new Error(`Creating process failed:, ${e}`);
}
}
public async createProfileProcess(userData: any): Promise<ApiReturn> {
const myProcessId: string = this.getPairingProcessId();
if (!myProcessId) {
throw new Error('Missing pairing id');
}
const validator = userData['validator'];
delete userData.validator; // We don't want that in the final pcd
const privateData = {
description: 'profile',
...userData,
};
const publicData = {
identityCertified: false,
};
const ownerRoleFields: string[] = [...Object.keys(privateData), 'roles'];
const validatorRoleFields: string[] = [...Object.keys(publicData)];
const roles: Record<string, RoleDefinition> = {
demiurge: {
members: [myProcessId],
validation_rules: [],
storages: [STORAGEURL]
},
owner: {
members: [myProcessId],
validation_rules: [
{
quorum: 0.01,
fields: ownerRoleFields,
min_sig_member: 0.01,
},
],
storages: [STORAGEURL]
},
idCertificator: {
members: [validator],
validation_rules: [
{
quorum: 1.0,
fields: validatorRoleFields,
min_sig_member: 1.0
},
{
quorum: 0.0,
fields: ownerRoleFields,
min_sig_member: 0.0
}
],
storages: [STORAGEURL]
},
blm: {
members: [],
validation_rules: [
{
quorum: 0.0,
fields: [
'description',
'name',
'lastName',
],
min_sig_member: 0.0
}
],
storages: [STORAGEURL]
},
};
await this.getTokensFromFaucet();
try {
return this.createProcess(
privateData,
publicData,
roles,
)
} catch (e) {
throw new Error(`Creating process failed:, ${e}`);
}
}
// create a process for folder
public async createFolderProcess(folderData: any): Promise<ApiReturn> {
const myProcessId: string = this.getPairingProcessId();
if (!myProcessId) {
throw new Error('Missing pairing id');
}
const privateData = {
description: 'folder',
documents: [],
notes: [],
...folderData,
};
const ownerRoleFields = [...Object.keys(privateData), 'roles'];
const stakeholdersRoleFields = ['documents', 'notes'];
const roles: Record<string, RoleDefinition> = {
owner: {
members: [myProcessId],
validation_rules: [
{
quorum: 0.01,
fields: ownerRoleFields,
min_sig_member: 0.01,
},
],
storages: [STORAGEURL]
},
stakeholder: {
members: folderData.stakeholders,
validation_rules: [
{
quorum: 0.01,
fields: stakeholdersRoleFields,
min_sig_member: 0.01,
},
],
storages: [STORAGEURL]
},
customer: {
members: [],
validation_rules: [
{
quorum: 0.0,
fields: stakeholdersRoleFields,
min_sig_member: 0.0,
},
],
storages: [STORAGEURL]
}
};
await this.getTokensFromFaucet();
try {
return this.createProcess(
privateData,
{},
roles
)
} catch (e) {
throw new Error(`Creating folder process failed: ${e}`);
}
}
public MOCK_NOTARY = {
at_hash: "DQLI1_Wg0853tf0qf8BYxghzIXaMBaQu4UWz07iG7o",
sub: "IDN26889949I",
profile_id: "IDN26889949I_IDN009850",
arm: "1",
iss: "https://connexion.idnot.fr/idPOAuth2/idnot_idp_v1",
given_name: "Marie",
aud: "BB715912AFEEC6D1",
nbf: "1669713096",
auth_time: "1669713195",
entity_id: "IDN009850",
name: "DUPONT",
exp: "1669720396",
iat: "1669713196",
email: "marie.dupont@notaires.fr"
};
// This look for the process that holds all the notaries
// private async lookForNotaryProcess(): Promise<string | null> {
// const processes = await this.getProcesses();
// for (const processId of Object.keys(processes)) {
// try {
// const process = await this.getProcess(processId);
// const roles = this.getRoles(process);
// if (!roles) {
// console.error('Failed to getRoles');
// return null;
// }
// const roleKeys = Object.keys(roles);
// if (roleKeys.includes("notary")) {
// let publicData;
// const lastCommitedState = this.getLastCommitedState(process);
// // If we don't have a commited state, the notary process might be in initialization phase
// if (lastCommitedState) {
// publicData = lastCommitedState.public_data;
// } else {
// console.log(`Fallback to first, uncommited state`);
// publicData = process.states[0].public_data;
// }
// const publicDataKeys = Object.keys(publicData);
// if (publicDataKeys.includes("idNotTokens")){
// return processId;
// } else {
// continue;
// }
// } else {
// continue;
// }
// } catch (e) {
// console.error(e);
// }
// }
// return null;
// }
// private async checkIfNotary(): Promise<string | null> {
// const processes = await this.getMyProcesses();
// if (!processes) {
// return null;
// }
// for (const processId of processes) {
// try {
// const process = await this.getProcess(processId);
// const lastCommitedState = this.getLastCommitedState(process);
// if (lastCommitedState) {
// const fields = lastCommitedState.pcd_commitment;
// const fieldsKeys = Object.keys(fields);
// const publicData = lastCommitedState.public_data;
// if (fieldsKeys.includes("idNot") || publicData.identityCertified) {
// console.log(`Found idNot in profile ${processId}, member is notary`);
// return processId;
// } else {
// continue;
// }
// } else {
// continue;
// }
// } catch (e) {
// console.error(e);
// }
// }
// return null;
// }
public async updateProcess(process: Process, privateData: Record<string, any>, publicData: Record<string, any>, roles: Record<string, RoleDefinition> | null): Promise<ApiReturn> {
// If roles is null, we just take the last commited state roles
if (!roles) {
@ -936,8 +564,9 @@ export default class Services {
if (updatedProcess.encrypted_data && Object.keys(updatedProcess.encrypted_data).length != 0) {
for (const [hash, cipher] of Object.entries(updatedProcess.encrypted_data)) {
// console.log(hash);
// console.log(cipher);
// console.log('Saving encrypted data');
// console.log(`hash: ${hash}`);
// console.log(`cipher: ${cipher}`);
const blob = this.hexToBlob(cipher);
try {
await this.saveBlobToDb(hash, blob);
@ -1811,135 +1440,6 @@ export default class Services {
return await this.updateProcess(process, {}, publicData, null);
}
public async createAndSendNotaryTx(): Promise<void> {
try {
await this.checkConnections([]);
} catch (e) {
throw e;
}
try {
const createNotaryProcessReturn = await this.createNotaryProcess(
[],
);
if (!createNotaryProcessReturn.updated_process) {
throw new Error('createNotaryProcessReturn returned an empty new process');
}
await this.handleApiReturn(createNotaryProcessReturn);
this.setProcessId(createNotaryProcessReturn.updated_process.process_id);
console.log('PROCESS NOTARY:', createNotaryProcessReturn.updated_process.process_id);
this.setStateId(createNotaryProcessReturn.updated_process.current_process.states[0].state_id);
} catch (e) {
console.error(e);
}
try {
const createPrdUpdateReturn = await this.createPrdUpdate(this.processId!, this.stateId!);
await this.handleApiReturn(createPrdUpdateReturn);
} catch (e) {
throw new Error(`createPrdUpdate failed: ${e}`);
}
try {
const approveChangeReturn = await this.approveChange(this.processId!, this.stateId!);
await this.handleApiReturn(approveChangeReturn);
} catch (e) {
throw new Error(`approveChange failed: ${e}`);
}
this.processId = null;
this.stateId = null;
}
public async createAndSendProfileTx(userData: any): Promise<{ processId: string, process: Process }> {
try {
const createProfileProcessReturn = await this.createProfileProcess(
userData,
);
await this.handleApiReturn(createProfileProcessReturn);
this.setProcessId(createProfileProcessReturn.updated_process!.process_id);
this.setStateId(createProfileProcessReturn.updated_process!.current_process.states[0].state_id);
} catch (e) {
throw new Error(`createProfileProcess failed: ${e}`);
}
try {
const createPrdUpdateReturn = await this.createPrdUpdate(this.processId!, this.stateId!);
await this.handleApiReturn(createPrdUpdateReturn);
} catch (e) {
throw new Error(`createPrdUpdate failed: ${e}`);
}
try {
const approveChangeReturn = await this.approveChange(this.processId!, this.stateId!);
await this.handleApiReturn(approveChangeReturn);
} catch (e) {
throw new Error(`approveChange failed: ${e}`);
}
// Get the new process from db
const processId = this.processId!;
this.setProcessId(null);
this.setStateId(null);
const profileProcess = await this.getProcess(processId);
if (profileProcess) {
return {processId, process: profileProcess};
} else {
console.error('Failed to retrieve newly created profile process'); // This shouldn't happen
return { processId, process: { states: [] } };
}
}
public async createAndSendFolderTx(folderData: any): Promise<{ processId: string, process: Process }> {
try {
await this.checkConnections([]);
} catch (e) {
throw e;
}
try {
console.log("folderData", folderData);
const createFolderProcessReturn = await this.createFolderProcess(
folderData,
);
await this.handleApiReturn(createFolderProcessReturn);
this.setProcessId(createFolderProcessReturn.updated_process!.process_id);
this.setStateId(createFolderProcessReturn.updated_process!.current_process.states[0].state_id);
} catch (e) {
throw new Error(`createFolderProcess failed: ${e}`);
}
try {
const createPrdUpdateReturn = await this.createPrdUpdate(this.processId!, this.stateId!);
await this.handleApiReturn(createPrdUpdateReturn);
} catch (e) {
throw new Error(`createPrdUpdate failed: ${e}`);
}
try {
const approveChangeReturn = await this.approveChange(this.processId!, this.stateId!);
await this.handleApiReturn(approveChangeReturn);
} catch (e) {
throw new Error(`approveChange failed: ${e}`);
}
// Get the new process from db
const processId = this.processId!;
this.setProcessId(null);
this.setStateId(null);
console.log(`createAndSendFolderTx ~ processId: ${processId}`);
const folderProcess = await this.getProcess(processId);
if (folderProcess) {
return { processId, process: folderProcess };
} else {
console.error('Failed to retrieve newly created folder process'); // This shouldn't happen
return { processId, process: { states: [] } };
}
}
public async generateProcessPdf(processId: string, processState: ProcessState): Promise<void> {
const pdfDoc = await PDFDocument.create();
const page = pdfDoc.addPage([595.28, 841.89]);