Skip to content

Commit

Permalink
Formattage et réparer suivi dispositifs si idCompte n'est pas spéci…
Browse files Browse the repository at this point in the history
…fié.
  • Loading branch information
julienmalard committed Feb 28, 2025
1 parent 820b270 commit ad0fda5
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 14 deletions.
51 changes: 39 additions & 12 deletions src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ import { initSFIP } from "@/sfip/index.js";
import { Protocoles } from "./protocoles.js";
import type { PrivateKey } from "@libp2p/interface";
import type { ServicesLibp2p } from "@/sfip/index.js";
import type { ContenuMessageRejoindreCompte, statutDispositif } from "@/reseau.js";
import type {
ContenuMessageRejoindreCompte,
statutDispositif,
} from "@/reseau.js";
import type { infoUtilisateur, objRôles } from "@/accès/types.js";
import type { SetDatabaseType } from "@orbitdb/set-db";
import type { OrderedKeyValueDatabaseType } from "@orbitdb/ordered-keyvalue-db";
Expand Down Expand Up @@ -983,13 +986,20 @@ export class Constellation<T extends ServicesLibp2p = ServicesLibp2p> {
f: schémaFonctionSuivi<string[]>;
idCompte?: string;
}): Promise<schémaFonctionOublier> {
const info: {
autorisés: string[];
infos: statutDispositif[];
idCompte?: string;
} = { autorisés: [], infos: [] };

const fSuivi = async ({
id,
fSuivreBd,
}: {
id: string;
fSuivreBd: schémaFonctionSuivi<string[] | undefined>;
}): Promise<schémaFonctionOublier> => {
info.idCompte = id;
const { orbite } = await this.attendreSfipEtOrbite();
const { bd, fOublier } = await orbite.ouvrirBdTypée({
id,
Expand All @@ -1005,14 +1015,14 @@ export class Constellation<T extends ServicesLibp2p = ServicesLibp2p> {
return faisRien;
} else if (typeAccès === "contrôleur-constellation") {
const contrôleurConstellation = accès as ContrôleurConstellation;
const fFinale = async () => {
const fFinaleSuiviCompte = async () => {
const mods = contrôleurConstellation.gestRôles._rôles[MODÉRATEUR];
await fSuivreBd(mods);
};
contrôleurConstellation.gestRôles.on("misÀJour", fFinale);
fFinale();
contrôleurConstellation.gestRôles.on("misÀJour", fFinaleSuiviCompte);
fFinaleSuiviCompte();
return async () => {
contrôleurConstellation.gestRôles.off("misÀJour", fFinale);
contrôleurConstellation.gestRôles.off("misÀJour", fFinaleSuiviCompte);
await fOublier();
};
} else {
Expand All @@ -1021,10 +1031,13 @@ export class Constellation<T extends ServicesLibp2p = ServicesLibp2p> {
}
};

const info: {autorisés: string[]; infos: statutDispositif[]; idCompte?: string} = { autorisés: [], infos: []};
const fFinale = async () => {
if (!idCompte) return;
const autorisésEtAcceptés = info.autorisés.filter(id => info.infos.find(i=>i.infoDispositif.idDispositif === id)?.infoDispositif.idCompte === idCompte)
if (!info.idCompte) return;
const autorisésEtAcceptés = info.autorisés.filter(
(idDispositif) =>
info.infos.find((i) => i.infoDispositif.idDispositif === idDispositif)
?.infoDispositif?.idCompte === info.idCompte,
);
return await f(autorisésEtAcceptés);
};

Expand All @@ -1041,11 +1054,25 @@ export class Constellation<T extends ServicesLibp2p = ServicesLibp2p> {
return await this.suivreIdCompte({ f: fSuivreRacine });
}
},
f: ignorerNonDéfinis(async (x: string[]) => { info.autorisés = x; return await fFinale()}),
fSuivre: async ({id, fSuivreBd}: {id: string; fSuivreBd: schémaFonctionSuivi<string[] | undefined>}) => {info.idCompte = id; return await fSuivi({id, fSuivreBd})},
f: ignorerNonDéfinis(async (x: string[]) => {
info.autorisés = x;
return await fFinale();
}),
fSuivre: fSuivi,
});
const fOublierInfosDispositifs = await this.réseau.suivreConnexionsDispositifs({f: async x => {info.infos = x; return await fFinale()}})
return async () => {await Promise.all([fOublierDispositifsAutorisés(), fOublierInfosDispositifs()])};
const fOublierInfosDispositifs =
await this.réseau.suivreConnexionsDispositifs({
f: async (x) => {
info.infos = x;
return await fFinale();
},
});
return async () => {
await Promise.all([
fOublierDispositifsAutorisés(),
fOublierInfosDispositifs(),
]);
};
}

async nommerDispositif({
Expand Down
4 changes: 2 additions & 2 deletions test/client.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ describe("Fermeture sécuritaire", function () {
});

if (isNode || isElectronMain) {
describe("Contrôle dispositifs", function () {
describe.only("Contrôle dispositifs", function () {
let fOublierClients: () => Promise<void>;
let orbites: OrbitDbTest[];
let orbite2: OrbitDbTest, orbite3: OrbitDbTest;
Expand Down Expand Up @@ -137,7 +137,7 @@ if (isNode || isElectronMain) {

describe("Initiale", function () {
it("Mon dispositif est présent", async () => {
const val = await mesDispositifs.attendreExiste();
const val = await mesDispositifs.attendreQue(ids => ids?.length > 0);
expect(val).to.have.members([idDispositif1]);
});
});
Expand Down

0 comments on commit ad0fda5

Please sign in to comment.