Utilisation de create_user, suppression du bouchon processstore

This commit is contained in:
franck 2024-03-26 10:30:04 +01:00
parent 19eb1b66ab
commit 09709869b2
2 changed files with 39 additions and 58 deletions

View File

@ -1,7 +1,6 @@
import { generate_sp_wallet_return, User } from '../dist/pkg/sdk_client';
import IndexedDB from './database'
import Processstore from './store/processstore';
import Userstore from './store/userstore';
class Services {
private static instance: Services;
@ -52,7 +51,7 @@ class Services {
public async isNewUser(): Promise<boolean> {
let isNew = false;
try {
let listUserProcess = await Services.instance.getAllUserProces();
let listUserProcess = await Services.instance.getAllUserProcess();
if (listUserProcess.length == 0) {
isNew = true;
}
@ -66,7 +65,7 @@ class Services {
Services.instance.injectHtml(Services.instance.get_html_create_id());
Services.instance.attachSubmitListener("form4nk", Services.instance.createId);
Services.instance.attachClickListener("displayrecover", Services.instance.displayRecover);
Services.instance.displayProcess(await Services.instance.getAllProcesAvailable());
Services.instance.displayProcess(await Services.instance.getAllProcessAvailable());
}
public get_html_create_id(): string {
@ -90,36 +89,50 @@ class Services {
// To comment if test
if (!Services.instance.isPasswordValid(password)) return;
// TODO get secretpart1 from User object
// const user: User = new this.sdkClient.create_user(password);
const user: User = this.sdkClient.create_user(password);
// let secretpart1 = "LKHGKJJJ3H";
const image_to_recover = Services.instance.getImage("assets/4nk_image.jpeg");
const image_to_revoke = Services.instance.getImage("assets/revoke.jpeg");
let label = null;
let birthday = 50000;
const user: User = this.sdkClient.create_user(password, image_to_recover, image_to_revoke, label, birthday);
try {
let userstore = new Userstore;
userstore.process = process;
const indexedDb = await IndexedDB.getInstance();
const db = indexedDb.getDb();
await indexedDb.writeObject(db, indexedDb.getStoreList().AnkUser, userstore, process);
console.log("JS Userstore added");
await indexedDb.writeObject(db, indexedDb.getStoreList().AnkUser, user, process);
console.log("JS User added");
await indexedDb.writeObject(db, indexedDb.getStoreList().AnkSession, process, Services.CURRENT_PROCESS);
console.log("JS Sessionstore added currentprocess");
} catch (error) {
console.error("Failed to write userstore object :", error);
console.error("Failed to write user object :", error);
}
await Services.instance.displayRevokeImage();
}
private async getImage(imageUrl:string): Promise<Uint8Array|null> {
let imageBytes = null;
try {
const response = await fetch(imageUrl);
if (!response.ok) {
throw new Error(`Failed to fetch image: ${response.status} ${response.statusText}`);
}
const arrayBuffer = await response.arrayBuffer();
imageBytes = new Uint8Array(arrayBuffer);
console.log(imageBytes);
} catch (error) {
console.error("Failed to get image : "+imageUrl, error);
}
return imageBytes;
}
public async displayRecover(): Promise<void> {
Services.instance.injectHtml(Services.instance.get_html_recover());
Services.instance.attachSubmitListener("form4nk", Services.instance.recover);
Services.instance.attachClickListener("displaycreateid", Services.instance.displayCreateId);
Services.instance.attachClickListener("displayrevoke", Services.instance.displayRevoke);
Services.instance.attachClickListener("submitButtonRevoke", Services.instance.revoke);
Services.instance.displayProcess(await Services.instance.getAllUserProces());
Services.instance.displayProcess(await Services.instance.getAllUserProcess());
}
public get_html_recover(): string {
@ -205,7 +218,7 @@ class Services {
console.log("JS Processstore not exist ");
}
} catch (error) {
console.error("Failed to retrieve userstore object :", error);
console.error("Failed to retrieve user object :", error);
}
Services.instance.injectUpdateAnIdHtml(body, style, script, inputName);
@ -260,31 +273,33 @@ class Services {
}
}
public async getAllUserProces(): Promise<string[]> {
public async getAllUserProcess(): Promise<string[]> {
let userProcessList: string[] = [];
try {
const indexedDB = await IndexedDB.getInstance();
const db = indexedDB.getDb();
let userListObject = await indexedDB.getAll<Userstore>(db, indexedDB.getStoreList().AnkUser);
let userListObject = await indexedDB.getAll<User>(db, indexedDB.getStoreList().AnkUser);
userListObject.forEach(async (userObject) => {
const processName = userObject.process;
// TODO get processname
//const processName = userObject.process;
const processName = "process1";
userProcessList.push(processName);
console.log("JS Userstore found");
console.log("JS User found");
})
} catch (error) {
console.log("JS Userstore not found");
console.log("JS User not found");
}
return userProcessList;
}
public async getAllProcesAvailable(): Promise<string[]> {
let userProcessList = await Services.instance.getAllUserProces();
let processList = await Services.instance.getAllProces();
public async getAllProcessAvailable(): Promise<string[]> {
let userProcessList = await Services.instance.getAllUserProcess();
let processList = await Services.instance.getAllProcess();
let availableProcessList = processList.filter(x => !userProcessList.includes(x));
return availableProcessList;
}
public async getAllProces(): Promise<string[]> {
public async getAllProcess(): Promise<string[]> {
// if indexedDB is empty, get list from wasm
let processList: string[] = [];
try {
@ -319,25 +334,6 @@ class Services {
return processList;
}
private async getSecretPart1(process: string): Promise<string> {
let secretpart1 = "";
try {
const indexedDB = await IndexedDB.getInstance();
const db = indexedDB.getDb();
try {
let userObject = await indexedDB.getObject<Userstore>(db, indexedDB.getStoreList().AnkUser, process);
secretpart1 = userObject.secretpart1;
console.log("JS Userstore exist secretpart1 : "+secretpart1);
} catch (error) {
console.log("JS Userstore not exist ");
}
} catch (error) {
console.error("Failed to retrieve userstore object :", error);
}
console.log("JS secretpart1 : "+secretpart1);
return secretpart1;
}
public attachClickListener(elementId: string, callback: (event: Event) => void): void {
const element = document.getElementById(elementId);

View File

@ -1,15 +0,0 @@
class Userstore {
process: string;
secretpart1: string;
password: string;
createDate: Date;
constructor() {
this.process = "";
this.secretpart1 = "";
this.password = "";
this.createDate = new Date;
}
}
export default Userstore;