@smarterplan/ngx-smarterplan-core 1.2.24 → 1.2.26

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.
@@ -4591,10 +4591,6 @@ const uploadFileToS3 = (path, file, objectId) => __awaiter(void 0, void 0, void
4591
4591
  .then((result) => {
4592
4592
  console.log("Success =>", result);
4593
4593
  return result.key;
4594
- })
4595
- .catch((error) => {
4596
- console.log("error =>", error);
4597
- return null;
4598
4594
  });
4599
4595
  });
4600
4596
  const getSignedImageUrlForEquipment = (equip) => __awaiter(void 0, void 0, void 0, function* () {
@@ -4638,6 +4634,23 @@ const uploadBase64Image = (uri, objectId, path, friendlyFileName) => __awaiter(v
4638
4634
  return uploadFileToS3(path, file, objectId);
4639
4635
  });
4640
4636
  });
4637
+ const uploadBase64ImageWithRetry = (uri, objectId, path, friendlyFileName, retry) => __awaiter(void 0, void 0, void 0, function* () {
4638
+ return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
4639
+ while (retry > 0) {
4640
+ try {
4641
+ const r = yield uploadBase64Image(uri, objectId, path, friendlyFileName);
4642
+ resolve(r);
4643
+ return;
4644
+ }
4645
+ catch (e) {
4646
+ retry--;
4647
+ console.error(`Upload error, retry n° ${retry} : `, e);
4648
+ }
4649
+ }
4650
+ ;
4651
+ reject("Max retry exceeded");
4652
+ }));
4653
+ });
4641
4654
  const removeAllFilesFromFolderS3 = (folderPath) => __awaiter(void 0, void 0, void 0, function* () {
4642
4655
  const arrayOfPromises = [];
4643
4656
  Storage.list(folderPath, { level: "public" })
@@ -12067,7 +12080,6 @@ class MatterportImportService {
12067
12080
  this.importingImages = new Subject();
12068
12081
  this.sweepProcessedCount = new Subject();
12069
12082
  this.totalSweepsCount = new Subject();
12070
- this.MAX_SCANS_RELOAD = 10;
12071
12083
  }
12072
12084
  get spaceID() {
12073
12085
  return this._spaceID;
@@ -12147,7 +12159,7 @@ class MatterportImportService {
12147
12159
  });
12148
12160
  });
12149
12161
  }
12150
- importData(spaceID, surface, reloading = false, node = null) {
12162
+ importData(spaceID, surface, reloading = false, node = null, overrideExisting = true) {
12151
12163
  return __awaiter(this, void 0, void 0, function* () {
12152
12164
  if (!this.sweeps) {
12153
12165
  return Promise.reject(new Error('no sweeps initialized'));
@@ -12164,10 +12176,9 @@ class MatterportImportService {
12164
12176
  yield waitUntil(() => appIsLoaded === true);
12165
12177
  if (reloading) {
12166
12178
  // perform only 360 import since we are reloading
12167
- yield this.import360images();
12179
+ yield this.import360images(overrideExisting);
12168
12180
  return Promise.resolve(true);
12169
12181
  }
12170
- this.cleanLocalStorage(); // we are importing new visit
12171
12182
  this.spaceID = spaceID;
12172
12183
  let floorZones = [];
12173
12184
  const zones = yield this.zoneService.getZonesBySpace(spaceID);
@@ -12204,7 +12215,7 @@ class MatterportImportService {
12204
12215
  console.log('could create navigation', navigationInput.id);
12205
12216
  }
12206
12217
  })));
12207
- yield this.import360images();
12218
+ yield this.import360images(overrideExisting);
12208
12219
  return Promise.resolve(true);
12209
12220
  });
12210
12221
  }
@@ -12231,71 +12242,55 @@ class MatterportImportService {
12231
12242
  return newLocal;
12232
12243
  });
12233
12244
  }
12234
- import360images() {
12245
+ import360images(overrideExisting = true) {
12235
12246
  return __awaiter(this, void 0, void 0, function* () {
12236
12247
  console.log('Importing 360 images');
12237
12248
  this.importingImages.next(true);
12238
12249
  return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
12239
12250
  const scans = Object.values(this.sweeps);
12240
- let maxScan;
12241
- let indexScan;
12242
12251
  const nmbScans = Object.keys(scans).length;
12243
- console.log('Total number of scan points :', nmbScans);
12244
12252
  this.totalSweepsCount.next(nmbScans);
12245
- // check if we started to load images already
12246
- if (localStorage.getItem('indexScanLoad')) {
12247
- console.log('retaking import from scan', localStorage.getItem('indexScanLoad'));
12248
- indexScan = +localStorage.getItem('indexScanLoad');
12249
- nmbScans < indexScan + this.MAX_SCANS_RELOAD
12250
- ? (maxScan = nmbScans)
12251
- : (maxScan = indexScan + this.MAX_SCANS_RELOAD);
12252
- }
12253
- else {
12254
- indexScan = 0;
12255
- nmbScans < this.MAX_SCANS_RELOAD
12256
- ? (maxScan = nmbScans)
12257
- : (maxScan = this.MAX_SCANS_RELOAD);
12258
- }
12259
- for (let index = indexScan; index < maxScan; index += 1) {
12253
+ const start = overrideExisting ? 0 : yield this.getUploadedImageCount(this.modelID);
12254
+ for (let index = start; index < nmbScans; index += 1) {
12260
12255
  if (!this.stop) {
12261
- yield new Promise((res) => {
12262
- setTimeout(() => {
12263
- res(null);
12264
- }, 1000);
12265
- });
12266
- yield this.sdk.Sweep.moveTo(scans[index].uuid);
12267
- yield this.sdk.Camera.setRotation({
12268
- x: 0,
12269
- y: 0,
12270
- });
12256
+ yield this.sdk.Sweep.moveTo(scans[index].uuid, { rotation: { x: 0, y: 0 }, transition: this.sdk.Sweep.Transition.INSTANT, transitionTime: 0 });
12271
12257
  const img = yield this.sdk.Renderer.takeEquirectangular({ width: 2048, height: 1024 }, { mattertags: false, sweeps: true });
12272
- yield uploadBase64Image(img, scans[index].uuid, `visits/${this.modelID}/sweeps/`, 'sweep');
12273
- this.sweepProcessedCount.next(index);
12274
- localStorage.setItem('indexScanLoad', index.toString());
12258
+ /**Upload on S3 are asynchronous, in order to no slow down the process*/
12259
+ uploadBase64ImageWithRetry(img, scans[index].uuid, `visits/${this.modelID}/sweeps/`, 'sweep', 5).then((r) => {
12260
+ this.sweepProcessedCount.next(index);
12261
+ if (index === nmbScans - 1) {
12262
+ console.log('Import 360 done');
12263
+ resolve(true);
12264
+ this.removeFrame();
12265
+ this.stop = true;
12266
+ }
12267
+ }).catch((e) => {
12268
+ console.log("Error uploading scan : ", e);
12269
+ });
12275
12270
  }
12276
12271
  else {
12277
12272
  console.log('Abandoning import because it was cancelled');
12278
12273
  resolve(false);
12274
+ this.removeFrame();
12279
12275
  break;
12280
12276
  }
12281
12277
  }
12282
- if (maxScan === nmbScans) {
12283
- console.log('Import 360 done');
12284
- this.cleanLocalStorage();
12285
- this.removeFrame();
12286
- this.stop = true;
12287
- resolve(true);
12288
- }
12289
- else if (!this.stop) {
12290
- // to restart the procedure from where we left of
12291
- localStorage.setItem('indexScanLoad', maxScan.toString());
12292
- localStorage.setItem('visitInImport', this.modelID);
12293
- this.removeFrame();
12294
- window.location.reload();
12295
- }
12278
+ resolve(true);
12279
+ this.removeFrame();
12296
12280
  }));
12297
12281
  });
12298
12282
  }
12283
+ getUploadedImageCount(modelID) {
12284
+ return __awaiter(this, void 0, void 0, function* () {
12285
+ try {
12286
+ const images = yield listFilesInFolder(`visits/${modelID}/sweeps/`);
12287
+ return images.length;
12288
+ }
12289
+ catch (e) {
12290
+ return 0;
12291
+ }
12292
+ });
12293
+ }
12299
12294
  moveToFloor(floorName, matterportFloorSequence = null) {
12300
12295
  return __awaiter(this, void 0, void 0, function* () {
12301
12296
  if (!this.floors) {
@@ -12388,7 +12383,6 @@ class MatterportImportService {
12388
12383
  abandon() {
12389
12384
  setTimeout(() => {
12390
12385
  console.log('abandonning import');
12391
- localStorage.removeItem('visitInImport');
12392
12386
  this.stop = true;
12393
12387
  this.removeFrame();
12394
12388
  }, 500);
@@ -12398,10 +12392,6 @@ class MatterportImportService {
12398
12392
  this.currentFrame.remove();
12399
12393
  }
12400
12394
  }
12401
- cleanLocalStorage() {
12402
- localStorage.removeItem('indexScanLoad');
12403
- localStorage.removeItem('visitInImport');
12404
- }
12405
12395
  getLayerByName(name) {
12406
12396
  return __awaiter(this, void 0, void 0, function* () {
12407
12397
  const mission = this.userService.currentMission(this.spaceID);
@@ -13061,5 +13051,5 @@ function floatValidator() {
13061
13051
  * Generated bundle index. Do not edit.
13062
13052
  */
13063
13053
 
13064
- export { AffectationService, AvatarComponent, BaseLateralTabService, BaseTagService, BaseUserService, BaseVisibilityService, CameraMode, CaptureService, CaptureViewer, CommentService, CommentType, Config, ContentService, CsvExportComponent, DomainService, DomainType, DurationToStringPipe, EmailStatus, EquipmentService, EventService, EventStatus, EventType, FeatureService, FeatureType, FilterService, HashtagFromIdPipe, HashtagService, InterventionService, InventoryStatus, LayerService, LevelStatus, LoaderComponent, Locale, LocaleService, MatterportImportService, MatterportService, MattertagActionMode, MattertagData, MeasurementService, MenuBarComponent, MissionService, NavigationService, NavigatorService, NgxSmarterplanCoreModule, NgxSmarterplanCoreService, NodeService, Object3DService, OperationService, OrganisationService, PaymentStatus, PlanService, PoiService, PoiType, ProfileEntity, ProfileService, ProfileStatus, PropertyService, PropertyType, RoleStatus, SafeUrlPipe, SearchBarComponent, SearchObjectType, SearchService, SpModule, SpaceService, SpaceStatus, StatusEquipment, SupportModalComponent, SupportService, TagAction, TemplateService, TicketPriority, TicketStatus, TicketType, TicketsService, TimeDateToLocalStringPipe, TypeNote, UsernameFromIdPipe, ValidatorsService, ViewerInteractions, ViewerService, VisitService, ZoneChangeService, ZoneService, arraysContainSameElements, checkElementById, convertTimestampToLocalZone, dateHasExpired, dateTimeToLocalString, deleteFromS3, downloadBlob, downloadEquipmentDocument, downloadFile, downloadFileAsObject, durationToString, emailValidator, enumToArray, filterUniqueArrayByID, floatValidator, getBufferForFileFromS3, getCoefficientsForImage, getDistanceBetweenTwoPoints, getHighestLevelForMissions, getHighestRoleForMissions, getLevelsBelow, getLocaleLong, getLocaleShort, getMetaForImage, getRolesBelowForManager, getSignedFile, getSignedImageUrlForEquipment, getSignedImageUrlForProfile, getSignedImageUrlForSpace, getSpaceIDFromUrl, getVisitUrl, isEmptyObject, listFilesInFolder, mean, noEmptyValidator, numberToDateString, openDocument, openModalForVisitSwitch, poiTypeToString, removeAllFilesFromFolderS3, removeNullKeysFromObject, showScanPointsOnPlanInDiv, shuffleArray, sortAlphabeticallyOnName, stringLocaleToEnum, stringToLowercaseNoSpaces, styleButton, textValidator, translateDatePeriod, uploadBase64Image, uploadFileToS3, uploadJsonToS3, validEmail, wait, waitUntil };
13054
+ export { AffectationService, AvatarComponent, BaseLateralTabService, BaseTagService, BaseUserService, BaseVisibilityService, CameraMode, CaptureService, CaptureViewer, CommentService, CommentType, Config, ContentService, CsvExportComponent, DomainService, DomainType, DurationToStringPipe, EmailStatus, EquipmentService, EventService, EventStatus, EventType, FeatureService, FeatureType, FilterService, HashtagFromIdPipe, HashtagService, InterventionService, InventoryStatus, LayerService, LevelStatus, LoaderComponent, Locale, LocaleService, MatterportImportService, MatterportService, MattertagActionMode, MattertagData, MeasurementService, MenuBarComponent, MissionService, NavigationService, NavigatorService, NgxSmarterplanCoreModule, NgxSmarterplanCoreService, NodeService, Object3DService, OperationService, OrganisationService, PaymentStatus, PlanService, PoiService, PoiType, ProfileEntity, ProfileService, ProfileStatus, PropertyService, PropertyType, RoleStatus, SafeUrlPipe, SearchBarComponent, SearchObjectType, SearchService, SpModule, SpaceService, SpaceStatus, StatusEquipment, SupportModalComponent, SupportService, TagAction, TemplateService, TicketPriority, TicketStatus, TicketType, TicketsService, TimeDateToLocalStringPipe, TypeNote, UsernameFromIdPipe, ValidatorsService, ViewerInteractions, ViewerService, VisitService, ZoneChangeService, ZoneService, arraysContainSameElements, checkElementById, convertTimestampToLocalZone, dateHasExpired, dateTimeToLocalString, deleteFromS3, downloadBlob, downloadEquipmentDocument, downloadFile, downloadFileAsObject, durationToString, emailValidator, enumToArray, filterUniqueArrayByID, floatValidator, getBufferForFileFromS3, getCoefficientsForImage, getDistanceBetweenTwoPoints, getHighestLevelForMissions, getHighestRoleForMissions, getLevelsBelow, getLocaleLong, getLocaleShort, getMetaForImage, getRolesBelowForManager, getSignedFile, getSignedImageUrlForEquipment, getSignedImageUrlForProfile, getSignedImageUrlForSpace, getSpaceIDFromUrl, getVisitUrl, isEmptyObject, listFilesInFolder, mean, noEmptyValidator, numberToDateString, openDocument, openModalForVisitSwitch, poiTypeToString, removeAllFilesFromFolderS3, removeNullKeysFromObject, showScanPointsOnPlanInDiv, shuffleArray, sortAlphabeticallyOnName, stringLocaleToEnum, stringToLowercaseNoSpaces, styleButton, textValidator, translateDatePeriod, uploadBase64Image, uploadBase64ImageWithRetry, uploadFileToS3, uploadJsonToS3, validEmail, wait, waitUntil };
13065
13055
  //# sourceMappingURL=smarterplan-ngx-smarterplan-core.mjs.map