@communecter/cocolight-api-client 1.0.143 → 1.0.145

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@communecter/cocolight-api-client",
3
- "version": "1.0.143",
3
+ "version": "1.0.145",
4
4
  "description": "Client Axios simplifié pour l'API cocolight",
5
5
  "repository": {
6
6
  "type": "git",
@@ -722,7 +722,14 @@ export class BaseEntity<TServerData = any> {
722
722
  deps: object
723
723
  ): BaseEntity<any> {
724
724
  const instance = new this(parent, {}, deps);
725
- instance._setData(data as any);
725
+ // Revival d'une entité fraîche : l'instance est construite avec un draft vide
726
+ // (`new this(parent, {}, deps)`), donc son `_initialDraftData` ne contient que les
727
+ // `defaultFields`. Sans `forceInitialDraftReset`, le draft reçoit tous les champs serveur
728
+ // via `_setData` mais le baseline de diff reste minimal → chaque champ peuplé est vu comme
729
+ // « modifié » et le premier `save()` (même sans édition) repousse toute l'entité
730
+ // (ex. ~35 `UPDATE_PATH_VALUE` pour un POI équipement). On réconcilie donc le baseline avec
731
+ // l'état serveur chargé. Sûr ici : aucune édition utilisateur à préserver sur une instance neuve.
732
+ instance._setData(data as any, { forceInitialDraftReset: true });
726
733
  return instance;
727
734
  }
728
735
 
@@ -3470,7 +3477,7 @@ export class BaseEntity<TServerData = any> {
3470
3477
  throw new ApiError(`${this.constructor.name} non enregistrée.`, 404);
3471
3478
  }
3472
3479
 
3473
- this._assertNotEntityType("updateSlug", ["badges", "news", "poi", "comments", "actions"]);
3480
+ this._assertNotEntityType("updateSlug", ["badges", "news", "comments", "actions"]);
3474
3481
 
3475
3482
  const type = this.getEntityType() as CheckData["type"];
3476
3483
 
@@ -3517,6 +3517,15 @@ export interface AddPoiData {
3517
3517
  * Utilisateur de l'équipement
3518
3518
  */
3519
3519
  equip_utilisateur?: string[];
3520
+ /**
3521
+ * Source d'insertion (costum)
3522
+ */
3523
+ source?: {
3524
+ insertOrign?: string;
3525
+ keys?: string[];
3526
+ key?: string;
3527
+ [k: string]: unknown;
3528
+ };
3520
3529
  [k: string]: unknown;
3521
3530
  }
3522
3531
 
package/src/api/User.ts CHANGED
@@ -266,7 +266,9 @@ export class User extends BaseEntity<UserItemNormalized> {
266
266
  const Ctor = this as any;
267
267
  const instance = new Ctor(parent, data, deps);
268
268
  if (data && typeof data === "object" && Object.keys(data).length > 0 && typeof instance._setData === "function") {
269
- instance._setData(data as UserItemNormalized);
269
+ // Voir BaseEntity.fromServerData : on réconcilie le baseline de diff avec l'état serveur
270
+ // pour qu'une entité fraîchement revifiée ne se croie pas « entièrement modifiée ».
271
+ instance._setData(data as UserItemNormalized, { forceInitialDraftReset: true });
270
272
  }
271
273
  return instance;
272
274
  }