{"version":3,"file":"main.js","mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;ACvOA;AACA,4CAA4C,mBAAO,CAAC,qEAA0D;AAC9G,kCAAkC,mBAAO,CAAC,8DAAmD;AAC7F;AACA;AACA,iDAAiD,kEAAkE;AACnH;AACA;;;;;;;;;;;ACPA;AACA,4CAA4C,mBAAO,CAAC,2EAAgE;AACpH,kCAAkC,mBAAO,CAAC,oEAAyD;AACnG;AACA;AACA,2DAA2D,kBAAkB,2BAA2B,4BAA4B,wBAAwB,8BAA8B,iBAAiB,GAAG,sBAAsB,oBAAoB,uBAAuB,mCAAmC,eAAe,gBAAgB,GAAG,qBAAqB,kBAAkB,4BAA4B,GAAG,8BAA8B,oEAAoE,mBAAmB,wBA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","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/components/workout-time-correcter/workout-time-correcter.component.ts","./src/app/interceptors/error-handler.interceptor.ts","./src/app/model/converter/workout-session-converter.ts","./src/app/model/converter/workout-to-dto-converter.ts","./src/app/model/enums/API-enums/content-type.ts","./src/app/model/enums/API-enums/left-right-option-functional-enum.ts","./src/app/model/enums/API-enums/set-container-specific-tracking-option-enum.ts","./src/app/model/enums/API-enums/specific-tracking-option-enum.ts","./src/app/model/enums/API-enums/tracking-options-functional-enum.ts","./src/app/model/enums/API-enums/workout-type-functional-enum.ts","./src/app/model/enums/cache-key.ts","./src/app/model/enums/kpi-metadata.ts","./src/app/model/enums/month-name.ts","./src/app/pages/add/providers/routine-creation-service/routine-creation.service.ts","./src/app/pages/add/providers/simple-post-creation-service/simple-post-creation.service.ts","./src/app/pages/add/providers/workout-creation-service/workout-creation-service-interface.ts","./src/app/pages/add/providers/workout-creation-service/workout-creation.service.ts","./src/app/pages/play-workout/play-workout.page.ts","./src/app/pages/play-workout/providers/break-timer-service/break-timer.service.ts","./src/app/pages/play-workout/providers/keyboard-service/keyboard-base.service.ts","./src/app/pages/play-workout/providers/play-workout-service/play-workout.service.ts","./src/app/pages/play-workout/providers/shaka-service/play-workout-shaka.service.ts","./src/app/pages/play-workout/providers/video-service/video.service.ts","./src/app/pages/play-workout/providers/workout-time-service/base-time-service.ts","./src/app/pages/play-workout/providers/workout-time-service/superset-time.service.ts","./src/app/pages/play-workout/providers/workout-time-service/workout-time.service.ts","./src/app/pages/statistics/providers/statistics-initializer-service/statistics-initializer.service.ts","./src/app/pipes/available-tracking-options.pipe.ts","./src/app/pipes/content-url-size-hanlers/sized-url-pixel-based-from-bucket.pipe.ts","./src/app/pipes/content-url-size-hanlers/sized-url-pixel-based.pipe.ts","./src/app/pipes/time-pretty-print.pipe.ts","./src/app/pipes/timestamp-to-day-month.pipe.ts","./src/app/providers/admob/admob.service.ts","./src/app/providers/auth-guards/auth-guard-common.service.ts","./src/app/providers/auth-guards/has-profile-guard/main-guard.service.ts","./src/app/providers/auth-guards/logged-in-guard/login-guard.service.ts","./src/app/providers/auth-guards/questions-guard/questions-guard.service.ts","./src/app/providers/cache-service/cache.service.ts","./src/app/providers/firebase-login/firebase-global.service.ts","./src/app/providers/global-data-service/global-data.service.ts","./src/app/providers/http-real.service.ts","./src/app/providers/log-service/log.service.ts","./src/app/providers/storage-service/storage.service.ts","./src/app/providers/websocket-service/websocket.service.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/@ionic/core/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./src/app/app.component.scss","./src/app/components/workout-time-correcter/workout-time-correcter.component.scss","./src/app/pages/play-workout/play-workout.page.scss","./src/app/pages/play-workout/portrait-styles.scss"],"sourcesContent":["import {NgModule} from '@angular/core';\nimport {PreloadAllModules, RouterModule, Routes} from '@angular/router';\nimport {MainGuardService} from \"./providers/auth-guards/has-profile-guard/main-guard.service\";\nimport {QuestionsGuardService} from \"./providers/auth-guards/questions-guard/questions-guard.service\";\nimport {LoginGuardService} from \"./providers/auth-guards/logged-in-guard/login-guard.service\";\n\nconst routes: Routes = [\n {\n path: '',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/tabs/tabs.module').then(m => m.TabsPageModule)\n },\n {\n path: 'profile',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/profile/profile.module').then(m => m.ProfilePageModule)\n },\n {\n path: 'add-workout',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/add/add-workout/add-workout.module').then(m => m.AddWorkoutPageModule)\n },\n {\n path: 'add-simple-post',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/add/add-simple-post/add-simple-post.module').then(m => m.AddSimplePostPageModule)\n },\n {\n path: 'add-routine',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/add/add-routine/add-routine.module').then(m => m.AddRoutinePageModule)\n },\n {\n path: 'public-profile',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/public-profile/public-profile.module').then(m => m.PublicProfilePageModule)\n },\n {\n path: 'edit-profile',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/edit-profile/edit-profile.module').then(m => m.EditProfilePageModule)\n },\n {\n path: 'admin-exercise',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/admin/admin-exercise/admin-exercise.module').then(m => m.AdminExercisePageModule)\n },\n {\n path: 'admin-all-posts',\n loadChildren: () => import('./pages/admin/admin-all-posts/admin-all-posts.module').then(m => m.AdminAllPostsPageModule)\n },\n {\n path: 'admin-data-generation',\n loadChildren: () => import('./pages/admin/data-generation/data-generation.module').then(m => m.DataGenerationPageModule)\n },\n {\n path: 'time-period',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/statistics/time-period/time-period.module').then(m => m.TimePeriodPageModule)\n },\n {\n path: 'questionairy-hashtags',\n canActivate: [QuestionsGuardService],\n loadChildren: () => import('./pages/questionary/questionairy-hashtags/questionairy-hashtags.module').then(m => m.QuestionairyHashtagsPageModule)\n },\n {\n path: 'questionairy-friends',\n canActivate: [QuestionsGuardService],\n loadChildren: () => import('./pages/questionary/questionairy-friends/questionairy-friends.module').then(m => m.QuestionairyFriendsPageModule)\n },\n {\n path: 'question3',\n canActivate: [QuestionsGuardService],\n loadChildren: () => import('./pages/questionary/question3/question3.module').then(m => m.Question3PageModule)\n },\n {\n path: 'questionairy-profile',\n canActivate: [QuestionsGuardService],\n loadChildren: () => import('./pages/questionary/questionairy-profile/questionairy-profile.module').then(m => m.QuestionairyProfilePageModule)\n },\n {\n path: 'question5',\n canActivate: [QuestionsGuardService],\n loadChildren: () => import('./pages/questionary/question5/question5.module').then(m => m.Question5PageModule)\n },\n {\n path: 'comments',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/comments/comments.module').then(m => m.CommentsPageModule)\n },\n {\n path: 'friends',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/friends/friends.module').then(m => m.FriendsPageModule)\n },\n {\n path: 'workout-list-with-date',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/workout-list-with-date/workout-list-with-date.module').then(m => m.WorkoutListWithDatePageModule)\n },\n {\n path: 'chat',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/chat/chat.module').then(m => m.ChatPageModule)\n },\n {\n path: 'news',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/news/news.module').then(m => m.NewsPageModule)\n },\n {\n path: 'mixed-posts-list',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/mixed-posts-list/mixed-posts-list.module').then(m => m.MixedPostsListPageModule)\n },\n {\n path: 'play-workout',\n canActivate: [MainGuardService],\n loadChildren: () => import('./pages/play-workout/play-workout.module').then(m => m.PlayWorkoutPageModule)\n },\n {\n path: 'partner-sign-up',\n canActivate: [MainGuardService],\n loadChildren: () => import('./page-groups/partner-sign-up/partner-sign-up/partner-sign-up.module').then(m => m.PartnerSignUpPageModule)\n },\n {\n path: 'pay-pal-connected-successfully',\n canActivate: [MainGuardService],\n loadChildren: () => import('./page-groups/partner-sign-up/pay-pal-connected-successfully/pay-pal-connected-successfully.module').then(m => m.PayPalConnectedSuccessfullyPageModule)\n },\n {\n path: 'handle-pay-pal-response-web',\n canActivate: [MainGuardService],\n loadChildren: () => import('./page-groups/partner-sign-up/handle-pay-pal-response-web/handle-pay-pal-response-web.module').then(m => m.HandlePayPalResponseWebPageModule)\n },\n {\n path: 'handle-pay-pal-response-mobile',\n canActivate: [MainGuardService],\n loadChildren: () => import('./page-groups/partner-sign-up/handle-pay-pal-response-mobile/handle-pay-pal-response-mobile.module').then(m => m.HandlePayPalResponseMobilePageModule)\n },\n {\n path: 'partner-sign-up-overview',\n canActivate: [MainGuardService],\n loadChildren: () => import('./page-groups/partner-sign-up/partner-sign-up-overview/partner-sign-up-overview.module').then(m => m.PartnerSignUpOverviewPageModule)\n },\n {\n path: 'terms-and-conditions',\n canActivate: [MainGuardService],\n loadChildren: () => import('./page-groups/partner-sign-up/terms-and-conditions/terms-and-conditions.module').then(m => m.TermsAndConditionsPageModule)\n },\n {\n path: 'terms-of-use',\n canActivate: [],\n loadChildren: () => import('./pages/terms-of-use/terms-of-use.module').then(m => m.TermsOfUsePageModule)\n },\n {\n path: 'data-protection',\n canActivate: [],\n loadChildren: () => import('./pages/data-protection/data-protection.module').then(m => m.DataProtectionPageModule)\n },\n {\n path: 'privacy',\n canActivate: [],\n loadChildren: () => import('./pages/privacy-policy/privacy-policy.module').then(m => m.PrivacyPolicyPageModule)\n },\n {\n path: 'help-center',\n canActivate: [],\n loadChildren: () => import('./pages/help-center/help-center.module').then(m => m.HelpCenterPageModule)\n },\n {\n path: 'firebase-login',\n canActivate: [LoginGuardService],\n loadChildren: () => import('./pages/firebase-login/firebase-login.module').then(m => m.FirebaseLoginPageModule)\n },\n {\n path: 'admin-all-posts',\n loadChildren: () => import('./pages/admin/admin-all-posts/admin-all-posts.module').then(m => m.AdminAllPostsPageModule)\n },\n {\n path: 'help-center',\n loadChildren: () => import('./pages/help-center/help-center.module').then(m => m.HelpCenterPageModule)\n },\n {\n path: 'terms-of-use',\n loadChildren: () => import('./pages/terms-of-use/terms-of-use.module').then(m => m.TermsOfUsePageModule)\n },\n {\n path: 'data-protection',\n loadChildren: () => import('./pages/data-protection/data-protection.module').then(m => m.DataProtectionPageModule)\n },\n {\n path: 'privacy-policy',\n loadChildren: () => import('./pages/privacy-policy/privacy-policy.module').then(m => m.PrivacyPolicyPageModule)\n },\n];\n\n@NgModule({\n imports: [\n RouterModule.forRoot(routes, {preloadingStrategy: PreloadAllModules, useHash: false})\n ],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {\n}\n","import {Component, enableProdMode, HostListener, Inject, NgZone, Renderer2, RendererFactory2} from '@angular/core';\nimport {CacheServiceInterface} from './providers/cache-service/cache-service-interface';\nimport {StatusBar} from '@capacitor/status-bar';\nimport {Platform} from '@ionic/angular';\nimport {App} from '@capacitor/app';\nimport {environment} from '../environments/environment';\nimport {WebsocketServiceInterface} from './providers/websocket-service/websocket-service-interface';\nimport {LogService} from './providers/log-service/log.service';\nimport {GlobalDataServiceInterface} from \"./providers/global-data-service/global-data-service-interface\";\nimport {install} from 'resize-observer';\nimport {register} from 'swiper/element/bundle';\nimport {Capacitor} from \"@capacitor/core\";\nimport {ActivatedRoute, Router} from \"@angular/router\";\nimport {initializeApp} from \"firebase/app\";\nimport {FirebaseAuthentication} from \"@capacitor-firebase/authentication\";\n\nregister();\n\ndeclare let shaka: any;\n\n// todo: clean that shit up!\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n styleUrls: ['app.component.scss']\n})\nexport class AppComponent {\n constructor(@Inject('CacheServiceInterface') private cacheService: CacheServiceInterface,\n @Inject('WebsocketServiceInterface') private websocketService: WebsocketServiceInterface,\n private logService: LogService,\n private platform: Platform,\n private zone: NgZone,\n private router: Router,\n @Inject('GlobalDataServiceInterface') private globalDataService: GlobalDataServiceInterface,\n private rendererFactory: RendererFactory2) {\n\n this.logService.pushLine(this.constructor.name, 'app start');\n this.overwriteConsoleMethods();\n initializeApp(environment.firebaseConfig);\n FirebaseAuthentication.addListener('authStateChange', async event => {\n this.globalDataService.firebaseUser.next(event.user);\n });\n if (!window.ResizeObserver) {\n install();\n }\n shaka.polyfill.installAll();\n this.platform.ready().then(() => {\n this.globalDataService.screenDimensions.next({width: this.platform.width(), height: this.platform.height()});\n this.addGlobalScrollBarStyle();\n this.addResumeAndPauseListeners();\n this.cacheService.setApplicationStartTime(new Date().getTime());\n if (this.platform.is('cordova')) {\n StatusBar.setOverlaysWebView({overlay: false});\n }\n });\n if (environment.production) {\n enableProdMode();\n }\n this.addDeepLinkListener();\n }\n\n private overwriteConsoleMethods(): void {\n const defaultConsoleErrorRef = console.error;\n const printer = (...args) => {\n defaultConsoleErrorRef(...args);\n this.logService.pushLine('', '----------------- error start -------------------');\n if (args.length > 0 && args[0] instanceof Error) {\n const error = args[0];\n const consoleLog = `ERROR: ${error.message}\\nStack: ${error.stack}\\n`;\n this.logService.pushLine('', consoleLog);\n } else {\n // If it's not an instance of Error, treat it as a regular log\n const consoleLog = `ERROR: ${args.join(' ')}\\n`;\n this.logService.pushLine('', consoleLog);\n }\n this.logService.pushLine('', '----------------- error end -------------------');\n\n }\n console.error = printer;\n }\n\n private addResumeAndPauseListeners(): void {\n this.platform.resume.subscribe(async () => {\n this.globalDataService.resumeEvent.next();\n this.websocketService.reconnectIfNoMoreConnected();\n });\n // todo no effect yet. maybe remove it if we can handle the stop and play satisfyingly with the ion hooks\n this.platform.pause.subscribe(() => {\n console.error('platform pause event fired');\n });\n }\n\n private addDeepLinkListener(): void {\n App.addListener('appUrlOpen', (data: any) => {\n const url: string = data.url;\n if (url.includes('handle-pay-pal-response-mobile')) {\n const paramName1 = 'code=';\n const splitIndex1 = url.indexOf('?' + paramName1) > -1 ? url.indexOf('?' + paramName1) : url.indexOf('&' + paramName1);\n let secondParamStartIndex = url.indexOf('&', splitIndex1 + 1);\n secondParamStartIndex = secondParamStartIndex > -1 ? secondParamStartIndex : url.length;\n const extractedCode = url.substring(splitIndex1 + paramName1.length + 1, secondParamStartIndex);\n this.zone.run(() => {\n this.router.navigate(['/handle-pay-pal-response-mobile'], {state: {extractedCode: extractedCode}});\n });\n }\n });\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n const screenWidth = event.target.innerWidth;\n const screenHeight = event.target.innerHeight;\n if (screenHeight && screenWidth) {\n this.globalDataService.screenDimensions.next({width: screenWidth, height: screenHeight});\n }\n }\n\n @HostListener('window:beforeunload', ['$event'])\n beforeUnloadHandler(event) {\n this.websocketService.releaseWebsocket();\n }\n\n private addGlobalScrollBarStyle(): void {\n if (!Capacitor.isNativePlatform()) {\n const renderer2: Renderer2 = this.rendererFactory.createRenderer(null, null);\n const style = 'styled-scrollbars';\n renderer2.addClass(document.body, style);\n\n }\n }\n}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {RouteReuseStrategy} from '@angular/router';\n\nimport {IonicModule, IonicRouteStrategy} from '@ionic/angular';\n\nimport {AppRoutingModule} from './app-routing.module';\nimport {AppComponent} from './app.component';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport {environment} from '../environments/environment';\nimport {NgxEchartsModule} from 'ngx-echarts';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport * as CordovaSQLiteDriver from 'localforage-cordovasqlitedriver';\nimport {Drivers} from '@ionic/storage';\nimport {IonicStorageModule} from '@ionic/storage-angular';\n\nimport {TimestampToDayMonthPipe} from './pipes/timestamp-to-day-month.pipe';\nimport {TimePrettyPrintPipe} from \"./pipes/time-pretty-print.pipe\";\nimport {SizedUrlPixelBasedPipe} from './pipes/content-url-size-hanlers/sized-url-pixel-based.pipe';\nimport {\n SizedUrlPixelBasedFromBucketPipe\n} from './pipes/content-url-size-hanlers/sized-url-pixel-based-from-bucket.pipe';\nimport {AvailableTrackingOptionsPipe} from \"./pipes/available-tracking-options.pipe\";\nimport {ErrorHandlerInterceptor} from \"./interceptors/error-handler.interceptor\";\n\n@NgModule({\n declarations: [AppComponent, TimestampToDayMonthPipe, TimePrettyPrintPipe],\n imports: [BrowserModule,\n IonicModule.forRoot(),\n AppRoutingModule,\n HttpClientModule,\n NgxEchartsModule.forRoot({\n echarts: () => import('echarts')\n }),\n BrowserAnimationsModule,\n IonicStorageModule.forRoot({\n name: 'localDB',\n driverOrder: [CordovaSQLiteDriver._driver, Drivers.IndexedDB]\n })\n ],\n providers: [{\n provide: RouteReuseStrategy,\n useClass: IonicRouteStrategy\n }, environment.providers,\n TimestampToDayMonthPipe,\n TimePrettyPrintPipe,\n SizedUrlPixelBasedPipe,\n SizedUrlPixelBasedFromBucketPipe,\n AvailableTrackingOptionsPipe,\n {provide: HTTP_INTERCEPTORS, useClass: ErrorHandlerInterceptor, multi: true}],\n bootstrap: [AppComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class AppModule {\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ModalController} from \"@ionic/angular\";\nimport {TimeRange} from \"../../pages/play-workout/play-workout.page\";\n\n@Component({\n selector: 'app-workout-time-correcter',\n templateUrl: './workout-time-correcter.component.html',\n styleUrls: ['./workout-time-correcter.component.scss'],\n})\nexport class WorkoutTimeCorrecterComponent implements OnInit {\n @Input() timeRange: TimeRange\n correctedTimeInMillis: number;\n constructor(private modalController: ModalController) { }\n\n ngOnInit() {\n this.correctedTimeInMillis = (this.timeRange._min + this.timeRange._max) / 2;\n }\n setCorrectedTime(correctedTime: number): void {\n this.correctedTimeInMillis = correctedTime;\n }\n apply(): void {\n this.modalController.dismiss( {\n time: this.correctedTimeInMillis\n })\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor, HttpErrorResponse\n} from '@angular/common/http';\nimport {catchError, Observable, throwError} from 'rxjs';\nimport {AlertController} from \"@ionic/angular\";\n\n@Injectable()\nexport class ErrorHandlerInterceptor implements HttpInterceptor {\n\n constructor(private alertController: AlertController) {}\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 429 || error.status === 413) {\n // Show alert dialog for specific error statuses\n this.showInfoDialog(error.status, error.error || 'An error occurred.');\n }\n return throwError(() => error);\n })\n );\n }\n private async showInfoDialog(status: number, message: string): Promise {\n const alert = await this.alertController.create({\n header: 'Error',\n subHeader: `Status: ${status}`,\n message,\n buttons: ['OK']\n });\n\n await alert.present();\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {WorkoutSessionDTO} from \"../swagger-model/workoutSessionDTO\";\nimport {WorkoutSession} from \"../internal-model/workoutSession\";\nimport {SetContainer} from \"../internal-model/setContainer\";\nimport {SetContainerDTO} from \"../swagger-model/setContainerDTO\";\nimport {SET_CONTAINER_SPECIFIC_TRACKING_OPTION} from \"../enums/API-enums/set-container-specific-tracking-option-enum\";\nimport {LEFT_RIGHT_OPTION} from \"../enums/API-enums/left-right-option-functional-enum\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkoutSessionConverter {\n\n constructor() {\n }\n\n convertDTOToWorkoutSession(workoutSessionDTO: WorkoutSessionDTO): WorkoutSession {\n return {\n id: workoutSessionDTO.id,\n timestamp: workoutSessionDTO.timestamp,\n userWeight: workoutSessionDTO.userWeight,\n setContainer: workoutSessionDTO.setContainer.map(a => this.convertDTOToSetContainer(a))\n }\n }\n private convertDTOToSetContainer(setContainerDTO: SetContainerDTO): SetContainer {\n return {\n id: setContainerDTO.id,\n timestamp: setContainerDTO.timestamp,\n exercise: {...setContainerDTO.exercise, exerciseId: setContainerDTO.exercise.id},\n setContainerSpecificTrackingType: SET_CONTAINER_SPECIFIC_TRACKING_OPTION.getFromValue(setContainerDTO.setContainerSpecificTrackingType),\n spentTimeOnExercise: setContainerDTO.spentTimeOnExercise,\n distance: setContainerDTO.distance,\n sets: setContainerDTO.sets,\n supersetOrder: setContainerDTO.supersetOrder,\n exerciseInSupersetOrder: setContainerDTO.exerciseInSupersetOrder,\n exerciseInWorkoutId: setContainerDTO.exerciseInWorkoutId,\n leftRightOption: LEFT_RIGHT_OPTION.getFromValue(setContainerDTO.leftRightOption)\n }\n }\n convertWorkoutSessionToDTO(workoutSession: WorkoutSession): WorkoutSessionDTO {\n return {\n id: workoutSession.id,\n timestamp: workoutSession.timestamp,\n userWeight: workoutSession.userWeight,\n setContainer: workoutSession.setContainer.map(a => this.convertSetContainerToDTO(a))\n }\n }\n private convertSetContainerToDTO(setContainer: SetContainer): SetContainerDTO {\n return {\n id: setContainer.id,\n timestamp: setContainer.timestamp,\n exercise: {...setContainer.exercise, id: setContainer.exercise.exerciseId},\n setContainerSpecificTrackingType: setContainer.setContainerSpecificTrackingType.enumValue,\n spentTimeOnExercise: setContainer.spentTimeOnExercise,\n distance: setContainer.distance,\n sets: setContainer.sets,\n supersetOrder: setContainer.supersetOrder,\n exerciseInSupersetOrder: setContainer.exerciseInSupersetOrder,\n exerciseInWorkoutId: setContainer.exerciseInWorkoutId,\n leftRightOption: setContainer.leftRightOption.enumValue\n }\n }\n}\n","import {Workout} from '../internal-model/workout.model';\nimport {WorkoutDTO} from '../swagger-model/workoutDTO';\nimport {DayDTO} from '../swagger-model/dayDTO';\nimport {Day} from '../internal-model/day.model';\nimport {Superset} from '../internal-model/superset.model';\nimport {SupersetDTO} from '../swagger-model/supersetDTO';\nimport {Exercise} from '../internal-model/exercise.model';\nimport {Injectable} from '@angular/core';\nimport {SpecificTracking} from \"../internal-model/specific-tracking.model\";\nimport {SpecificTrackingDTO} from \"../swagger-model/specificTrackingDTO\";\nimport {WorkoutExerciseDTO} from \"../swagger-model/workoutExerciseDTO\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkoutToDtoConverter {\n\n constructor() {\n }\n\n convertWorkoutToDTO(workout: Workout): WorkoutDTO {\n return {\n id: workout.id,\n description: workout.description,\n previewImageUrl: workout.imageUrl,\n previewImage: '',\n creator: workout.creator,\n days: workout.days.map(a => this.convertDayToDTO(a)),\n savedFromCurrentUser: workout.isSavedFromCurrentUser,\n likedFromCurrentUser: workout.isLikedFromCurrentUser,\n calendarDTOs: workout.calendarDTOs,\n workoutType: workout.workoutType.enumValue,\n privateWorkout: workout.isPrivate\n };\n }\n\n public convertDayToDTO(day: Day): DayDTO {\n return {\n id: day.id,\n orderInWorkout: day.orderInWorkout,\n name: day.name,\n supersets: day.supersets.map(a => this.convertSupersetToDTO(a)),\n previewImageUrl: day.previewImageUrl,\n previewImage: '',\n thumbnailEnding: day.thumbnailEnding,\n workoutContentDTOS: day.workoutContent,\n imageWidths: day.imageWidths\n };\n }\n\n public convertSupersetToDTO(superset: Superset): SupersetDTO {\n return {\n id: superset.id,\n exercises: superset.exercises.map(a => this.convertExerciseToDTO(a)),\n order: superset.order,\n };\n }\n\n public convertExerciseToDTO(exercise: Exercise): WorkoutExerciseDTO {\n return {\n id: exercise.idInWorkout,\n exerciseId: exercise.exerciseId,\n name: exercise.name,\n order: exercise.order,\n image: exercise.image,\n timerTime: exercise.timerTime,\n enduranceValue: exercise.enduranceValue,\n mobilityValue: exercise.mobilityValue,\n caloriesValue: exercise.caloriesValue,\n muscleTargets: exercise.muscleTargets,\n repetitionsPerMinuteValue: exercise.repetitionsPerMinuteValue,\n breakTimeBetweenSets: exercise.breakTimeBetweenSets,\n breakTimeAfterExercise: exercise.breakTimeAfterExercise,\n suggestedWorkoutTime: exercise.suggestedWorkoutTime,\n suggestedSetDTOS: exercise.suggestedSetDTOS ? exercise.suggestedSetDTOS : [],\n isBreakInVideoIncluded: exercise.breakInVideoIncluded,\n timeFrom: exercise.timeFrom,\n timeTo: exercise.timeTo,\n animationVideo: exercise.isAnimationVideo,\n specificTrackingDTO: this.convertTrackingTypeToDTO(exercise.specificTracking),\n contentId: exercise.contentId\n };\n }\n public convertTrackingTypeToDTO(specificTracking: SpecificTracking): SpecificTrackingDTO {\n return {\n specificTrackingType: specificTracking.specificTrackingType.enumValue,\n leftRightOption: specificTracking.leftRightOption.enumValue,\n availableTrackingTypes: specificTracking.availableTrackingTypes.map(a => a.enumValue)\n }\n }\n}\n","export enum CONTENT_TYPE {\n VIDEO = 'VIDEO',\n IMAGE = 'IMAGE',\n ANIMATED_IMAGE = 'ANIMATED_IMAGE'\n}\n","export class LEFT_RIGHT_OPTION {\n public static readonly SAME_SAME = new LEFT_RIGHT_OPTION('SAME_SAME');\n public static readonly WEIGHT_AND_REPS = new LEFT_RIGHT_OPTION('WEIGHT_AND_REPS');\n\n private constructor(public readonly enumValue: string) {\n }\n\n public static getAllTypes(): LEFT_RIGHT_OPTION[] {\n const allTypes: LEFT_RIGHT_OPTION[] = [\n LEFT_RIGHT_OPTION.SAME_SAME,\n LEFT_RIGHT_OPTION.WEIGHT_AND_REPS,\n ];\n return allTypes;\n }\n public static getFromValue(option: string): LEFT_RIGHT_OPTION {\n return LEFT_RIGHT_OPTION.getAllTypes().find(a => a.enumValue === option);\n }\n}\n","import {TRACKING_OPTIONS} from \"./tracking-options-functional-enum\";\nimport {KPI_METADATA} from \"../kpi-metadata\";\n\nexport class SET_CONTAINER_SPECIFIC_TRACKING_OPTION {\n\n public static readonly TIME_BASED = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('TIME_BASED', ['assets/icon/kpi-metadata/sand-clock.svg'], ['assets/icon/kpi-metadata/sand-clock-green.svg'], ['assets/icon/kpi-metadata/sand-clock-white.svg'], TRACKING_OPTIONS.TIME_BASED, false, ['timer time'], null, [KPI_METADATA.TIME]);\n public static readonly ENTER_TIME = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('ENTER_TIME', ['assets/icon/kpi-metadata/enter-time.svg'], ['assets/icon/kpi-metadata/enter-time-green.svg'], ['assets/icon/kpi-metadata/enter-time-white.svg'], TRACKING_OPTIONS.ENTER_TIME, false, ['min', 'sec'], null, [KPI_METADATA.REPETITIONS]);\n public static readonly ENTER_TIME_AND_DISTANCE = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('ENTER_TIME_AND_DISTANCE', ['assets/icon/kpi-metadata/enter-time.svg', 'assets/icon/kpi-metadata/distance.svg'], ['assets/icon/kpi-metadata/enter-time-green.svg', 'assets/icon/kpi-metadata/distance-green.svg'], ['assets/icon/kpi-metadata/distance-white.svg'], TRACKING_OPTIONS.ENTER_TIME, false, ['Min', 'Sec'], 'Distance in Km', [KPI_METADATA.TIME, KPI_METADATA.DISTANCE]);\n public static readonly REPETITIONS = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('REPETITIONS', ['assets/icon/kpi-metadata/repeat.svg'], ['assets/icon/kpi-metadata/repeat-green.svg'], ['assets/icon/kpi-metadata/repeat-white.svg'], TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT, false, ['Repetitions'], null, [KPI_METADATA.REPETITIONS]);\n public static readonly REPETITIONS_WEIGHT = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('REPETITIONS_WEIGHT', ['assets/icon/kpi-metadata/repeat.svg', 'assets/icon/kpi-metadata/weight.svg'], ['assets/icon/kpi-metadata/repeat-green.svg', 'assets/icon/kpi-metadata/weight-green.svg'], ['assets/icon/kpi-metadata/repeat-white.svg', 'assets/icon/kpi-metadata/weight-white.svg'], TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT, true, ['Repetitions'], 'Weight', [KPI_METADATA.REPETITIONS, KPI_METADATA.WEIGHT]);\n public static readonly REPETITIONS_RESISTANCE_BAND = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('REPETITIONS_RESISTANCE_BAND', ['assets/icon/kpi-metadata/repeat.svg', 'assets/icon/kpi-metadata/resistance-band.svg'], ['assets/icon/kpi-metadata/repeat-green.svg', 'assets/icon/kpi-metadata/resistance-band-green.svg'], ['assets/icon/kpi-metadata/repeat-white.svg', 'assets/icon/kpi-metadata/resistance-band-white.svg'], TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT, true, ['Repetitions'], 'Resistance', [KPI_METADATA.REPETITIONS, KPI_METADATA.RESISTANCE_BAND]);\n public static readonly REPETITIONS_SUPPORTING_WEIGHT = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('REPETITIONS_SUPPORTING_WEIGHT', ['assets/icon/kpi-metadata/repeat.svg', 'assets/icon/kpi-metadata/weight.svg'], ['assets/icon/kpi-metadata/repeat-green.svg', 'assets/icon/kpi-metadata/weight-green.svg'], ['assets/icon/kpi-metadata/repeat-white.svg', 'assets/icon/kpi-metadata/weight-white.svg'], TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT, true, ['Repetitions'], 'Supporting weight', [KPI_METADATA.REPETITIONS, KPI_METADATA.WEIGHT]);\n public static readonly HOLDING_TIME = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('HOLDING_TIME', ['assets/icon/kpi-metadata/stop-watch.svg'], ['assets/icon/kpi-metadata/stop-watch-green.svg'], ['assets/icon/kpi-metadata/stop-watch-white.svg'], TRACKING_OPTIONS.HOLDING_TIME_AND_WEIGHT, false, ['Holding time'], null, [KPI_METADATA.HOLDING_TIME]);\n public static readonly HOLDING_TIME_WEIGHT = new SET_CONTAINER_SPECIFIC_TRACKING_OPTION('HOLDING_TIME_WEIGHT', ['assets/icon/kpi-metadata/stop-watch.svg', 'assets/icon/kpi-metadata/weight.svg'], ['assets/icon/kpi-metadata/stop-watch-green.svg', 'assets/icon/kpi-metadata/weight-green.svg'], ['assets/icon/kpi-metadata/stop-watch-white.svg', 'assets/icon/kpi-metadata/weight-white.svg'], TRACKING_OPTIONS.HOLDING_TIME_AND_WEIGHT, true, ['Holding time'], 'weight', [KPI_METADATA.HOLDING_TIME, KPI_METADATA.WEIGHT]);\n\n private constructor(public readonly enumValue: string,\n public readonly iconsBlack: string[],\n public readonly iconsGreen: string[],\n public readonly iconsWhite: string[],\n public readonly mainType: TRACKING_OPTIONS,\n public readonly hasWeight: boolean,\n public readonly value1labels: string[],\n public readonly value2label: string,\n public readonly kpiMetadata: KPI_METADATA[]) {\n }\n\n public static getFromValue(enumValue: string): SET_CONTAINER_SPECIFIC_TRACKING_OPTION {\n return SET_CONTAINER_SPECIFIC_TRACKING_OPTION.getAllTypes().find(a => a.enumValue === enumValue);\n }\n\n public static getAllTypes(): SET_CONTAINER_SPECIFIC_TRACKING_OPTION[] {\n const allTypes: SET_CONTAINER_SPECIFIC_TRACKING_OPTION[] = [\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.TIME_BASED,\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.ENTER_TIME,\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.ENTER_TIME_AND_DISTANCE,\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.REPETITIONS,\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.REPETITIONS_WEIGHT,\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.REPETITIONS_RESISTANCE_BAND,\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.REPETITIONS_SUPPORTING_WEIGHT,\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.HOLDING_TIME,\n SET_CONTAINER_SPECIFIC_TRACKING_OPTION.HOLDING_TIME_WEIGHT,\n ];\n return allTypes;\n }\n}\n","import {ExerciseSetDTO} from '../../swagger-model/exerciseSetDTO';\nimport {TRACKING_OPTIONS} from \"./tracking-options-functional-enum\";\nimport {SET_CONTAINER_SPECIFIC_TRACKING_OPTION} from \"./set-container-specific-tracking-option-enum\";\n\nexport class SPECIFIC_TRACKING_OPTION {\n public static readonly REPETITIONS = new SPECIFIC_TRACKING_OPTION(0, 'REPETITIONS', ['assets/icon/kpi-metadata/repeat.svg'], ['assets/icon/kpi-metadata/repeat-green.svg'], ['assets/icon/kpi-metadata/repeat-white.svg'], TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT, 'Repetitions', 'Repetitions', true, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.REPETITIONS);\n public static readonly REPETITIONS_WEIGHT = new SPECIFIC_TRACKING_OPTION(1, 'REPETITIONS_WEIGHT', ['assets/icon/kpi-metadata/repeat.svg', 'assets/icon/kpi-metadata/weight.svg'], ['assets/icon/kpi-metadata/repeat-green.svg', 'assets/icon/kpi-metadata/weight-green.svg'], ['assets/icon/kpi-metadata/repeat-white.svg', 'assets/icon/kpi-metadata/weight-white.svg'], TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT, 'Repetitions & Weight', 'Repetitions & Weight', true, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.REPETITIONS_WEIGHT);\n public static readonly REPETITIONS_RESISTANCE_BAND = new SPECIFIC_TRACKING_OPTION(2, 'REPETITIONS_RESISTANCE_BAND', ['assets/icon/kpi-metadata/repeat.svg', 'assets/icon/kpi-metadata/resistance-band.svg'], ['assets/icon/kpi-metadata/repeat-green.svg', 'assets/icon/kpi-metadata/resistance-band-green.svg'], ['assets/icon/kpi-metadata/repeat-white.svg', 'assets/icon/kpi-metadata/resistance-band-white.svg'], TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT, 'Repetitions & Resistance band', 'Repetitions & Resistance band', true, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.REPETITIONS_RESISTANCE_BAND);\n public static readonly REPETITIONS_SUPPORTING_WEIGHT = new SPECIFIC_TRACKING_OPTION(3, 'REPETITIONS_SUPPORTING_WEIGHT', ['assets/icon/kpi-metadata/repeat.svg', 'assets/icon/kpi-metadata/weight.svg'], ['assets/icon/kpi-metadata/repeat-green.svg', 'assets/icon/kpi-metadata/weight-green.svg'], ['assets/icon/kpi-metadata/repeat-white.svg', 'assets/icon/kpi-metadata/weight-white.svg'], TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT, 'Repetitions & Supporting weight', 'Repetitions & Supporting weight', true, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.REPETITIONS_SUPPORTING_WEIGHT);\n public static readonly HOLDING_TIME = new SPECIFIC_TRACKING_OPTION(4, 'HOLDING_TIME', ['assets/icon/kpi-metadata/stop-watch.svg'], ['assets/icon/kpi-metadata/stop-watch-green.svg'],['assets/icon/kpi-metadata/stop-watch-white.svg'], TRACKING_OPTIONS.HOLDING_TIME_AND_WEIGHT, 'Holding time', 'Holding time', true, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.HOLDING_TIME);\n public static readonly HOLDING_TIME_WEIGHT = new SPECIFIC_TRACKING_OPTION(5, 'HOLDING_TIME_WEIGHT', ['assets/icon/kpi-metadata/stop-watch.svg', 'assets/icon/kpi-metadata/weight.svg'], ['assets/icon/kpi-metadata/stop-watch-green.svg', 'assets/icon/kpi-metadata/weight-green.svg'],['assets/icon/kpi-metadata/stop-watch-white.svg', 'assets/icon/kpi-metadata/weight-white.svg'], TRACKING_OPTIONS.HOLDING_TIME_AND_WEIGHT, 'Holding time & Weight', 'Holding time & Weight', true, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.HOLDING_TIME_WEIGHT);\n public static readonly ENTER_TIME = new SPECIFIC_TRACKING_OPTION(6, 'ENTER_TIME', ['assets/icon/kpi-metadata/enter-time.svg'], ['assets/icon/kpi-metadata/enter-time-green.svg'], ['assets/icon/kpi-metadata/enter-time-white.svg'], TRACKING_OPTIONS.ENTER_TIME,'enter time', 'enter time', false, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.ENTER_TIME);\n public static readonly ENTER_TIME_AND_DISTANCE = new SPECIFIC_TRACKING_OPTION(7, 'ENTER_TIME_AND_DISTANCE', ['assets/icon/kpi-metadata/enter-time.svg', 'assets/icon/kpi-metadata/distance.svg'], ['assets/icon/kpi-metadata/enter-time-green.svg', 'assets/icon/kpi-metadata/distance-green.svg'], ['assets/icon/kpi-metadata/enter-time-white.svg', 'assets/icon/kpi-metadata/distance-white.svg'], TRACKING_OPTIONS.ENTER_TIME, 'enter time and distance', 'enter time and distance', false, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.ENTER_TIME_AND_DISTANCE);\n public static readonly TIME_BASED = new SPECIFIC_TRACKING_OPTION(8, 'TIME_BASED', ['assets/icon/kpi-metadata/sand-clock.svg'], ['assets/icon/kpi-metadata/sand-clock-green.svg'], ['assets/icon/kpi-metadata/sand-clock-white.svg'], TRACKING_OPTIONS.TIME_BASED, 'use time in video', 'use a timer', false, SET_CONTAINER_SPECIFIC_TRACKING_OPTION.TIME_BASED);\n\n private constructor(public readonly order: number, public readonly enumValue: string, public readonly iconsBlack: string[], public readonly iconsGreen: string[], public readonly iconsWhite: string[], public readonly mainType: TRACKING_OPTIONS, public readonly userVideoText: string, public readonly animationVideoText: string, public readonly supersetable: boolean, public readonly setContainerType: SET_CONTAINER_SPECIFIC_TRACKING_OPTION) {\n }\n public static getFromValue(enumValue: string): SPECIFIC_TRACKING_OPTION {\n return SPECIFIC_TRACKING_OPTION.getAllTypes().find(a => a.enumValue === enumValue);\n }\n public static getAllTypes(): SPECIFIC_TRACKING_OPTION[] {\n const allTypes: SPECIFIC_TRACKING_OPTION[] = [\n SPECIFIC_TRACKING_OPTION.TIME_BASED,\n SPECIFIC_TRACKING_OPTION.ENTER_TIME,\n SPECIFIC_TRACKING_OPTION.ENTER_TIME_AND_DISTANCE,\n SPECIFIC_TRACKING_OPTION.REPETITIONS,\n SPECIFIC_TRACKING_OPTION.REPETITIONS_WEIGHT,\n SPECIFIC_TRACKING_OPTION.REPETITIONS_RESISTANCE_BAND,\n SPECIFIC_TRACKING_OPTION.REPETITIONS_SUPPORTING_WEIGHT,\n SPECIFIC_TRACKING_OPTION.HOLDING_TIME,\n SPECIFIC_TRACKING_OPTION.HOLDING_TIME_WEIGHT,\n ];\n return allTypes;\n }\n}\n\n","// todo: rename to TRACKING_OPTION_MAIN_GROUP\nexport class TRACKING_OPTIONS {\n public static readonly TIME_BASED = new TRACKING_OPTIONS('TIME_BASED', false,'use time in video', 'use a timer');\n public static readonly ENTER_TIME = new TRACKING_OPTIONS('ENTER_TIME', false,'enter time after exercise', 'enter time after exercise');\n public static readonly REPETITIONS_AND_WEIGHT = new TRACKING_OPTIONS('REPETITIONS_AND_WEIGHT',true,'Repetitions & Weight', 'Repetitions & Weight');\n public static readonly HOLDING_TIME_AND_WEIGHT = new TRACKING_OPTIONS('HOLDING_TIME_AND_WEIGHT', true,'Holding Time & Weight', 'Holding Time & Weight');\n private constructor(public readonly enumValue: string, public readonly isSetBased: boolean, public readonly userVideoText: string, public readonly animationVideoText: string) {\n }\n public static getFromValue(enumValue: string): TRACKING_OPTIONS {\n return TRACKING_OPTIONS.getAllTypes().find(a => a.enumValue === enumValue);\n }\n public static getAllTypes(): TRACKING_OPTIONS[] {\n const allTypes: TRACKING_OPTIONS[] = [\n TRACKING_OPTIONS.TIME_BASED,\n TRACKING_OPTIONS.ENTER_TIME,\n TRACKING_OPTIONS.REPETITIONS_AND_WEIGHT,\n TRACKING_OPTIONS.HOLDING_TIME_AND_WEIGHT,\n ];\n return allTypes;\n }\n}\n","export class WORKOUT_TYPE {\n public static readonly ONLY_USER_VIDEO = new WORKOUT_TYPE('ONLY_USER_VIDEO');\n public static readonly AT_LEAST_ONE_ANIMATION_VIDEO = new WORKOUT_TYPE('AT_LEAST_ONE_ANIMATION_VIDEO');\n private constructor(public readonly enumValue: string) {\n }\n\n public static getFromValue(enumValue: string): WORKOUT_TYPE {\n return WORKOUT_TYPE.getAllTypes().find(a => a.enumValue === enumValue);\n }\n private static getAllTypes(): WORKOUT_TYPE[] {\n const allTypes: WORKOUT_TYPE[] = [\n WORKOUT_TYPE.ONLY_USER_VIDEO,\n WORKOUT_TYPE.AT_LEAST_ONE_ANIMATION_VIDEO,\n ];\n return allTypes;\n }\n}\n","export class CacheKey {\n public static readonly LIKED_SIMPLE_POST_IDS = new CacheKey('liked-simple-post-ids');\n public static readonly LIKED_WORKOUT_POST_IDS = new CacheKey('liked-workout-post-ids');\n public static readonly CALENDAR_WORKOUTS = new CacheKey('calendar-workouts');\n public static readonly MUSCLE_TARGETS = new CacheKey('muscle-targets');\n public static readonly EQUIPMENT_GROUPS = new CacheKey('equipment-groups');\n public static readonly EXERCISES = new CacheKey('exercises');\n public static readonly CREATED_WORKOUTS = new CacheKey('created-workouts');\n public static readonly BOOKMARKED_WORKOUTS = new CacheKey('bookmarked-workouts');\n public static readonly REST_DAY = new CacheKey('rest-day');\n public static readonly CREATED_SIMPLE_POSTS = new CacheKey('created-simple-posts');\n public static readonly BOOKMARKED_SIMPLE_POSTS = new CacheKey('bookmarked-simple-posts');\n public static readonly POSTS_FOR_HOME_PAGE = new CacheKey('posts-for-home-page');\n public static readonly SUGGESTED_WORKOUTS = new CacheKey('suggested-workouts');\n public static readonly SUGGESTED_FRIENDS = new CacheKey('suggested-friends');\n public static readonly DAYS = new CacheKey('days');\n public static readonly USER = new CacheKey('user');\n public static readonly SESSION_CONTAINER = new CacheKey('session-container');\n public static readonly REPORTED_SIMPLE_POST_IDS = new CacheKey('reported-simple-post-ids');\n public static readonly REPORTED_WORKOUT_POST_IDS = new CacheKey('reported-workout-post-ids');\n\n private constructor(public readonly stringRepresentation: string) {\n }\n}\n","import {ExerciseSetDTO} from '../swagger-model/exerciseSetDTO';\n\nexport class KPI_METADATA {\n public static readonly TIME = new KPI_METADATA('TIME', 'time', 'time in min', 'assets/icon/kpi-metadata/enter-time.svg', 'assets/icon/kpi-metadata/enter-time-green.svg', 'assets/icon/kpi-metadata/enter-time-white.svg', 'SEC');\n public static readonly REPETITIONS = new KPI_METADATA('REPETITIONS', 'repetitions', 'repetitions', 'assets/icon/kpi-metadata/repeat.svg', 'assets/icon/kpi-metadata/repeat-green.svg', 'assets/icon/kpi-metadata/repeat-white.svg', 'REPS');\n public static readonly HOLDING_TIME = new KPI_METADATA('HOLDING_TIME', 'holding time', 'holding time', 'assets/icon/kpi-metadata/stop-watch.svg', 'assets/icon/kpi-metadata/stop-watch-green.svg','assets/icon/kpi-metadata/stop-watch-white.svg','SEC');\n public static readonly WEIGHT = new KPI_METADATA('WEIGHT', 'max weight', 'weight','assets/icon/kpi-metadata/weight.svg', 'assets/icon/kpi-metadata/weight-green.svg', 'assets/icon/kpi-metadata/weight-white.svg', 'KG');\n public static readonly SPEED = new KPI_METADATA('SPEED', 'speed', 'speed', 'assets/icon/kpi-metadata/speed.svg', 'assets/icon/kpi-metadata/speed-green.svg', 'assets/icon/kpi-metadata/speed-white.svg', 'm/s');\n public static readonly DISTANCE = new KPI_METADATA('DISTANCE', 'distance', 'distance', 'assets/icon/kpi-metadata/distance.svg', 'assets/icon/kpi-metadata/distance-green.svg', 'assets/icon/kpi-metadata/distance-white.svg', 'km');\n public static readonly RESISTANCE_BAND = new KPI_METADATA('RESISTANCE_BAND', 'resistance', 'resistance', 'assets/icon/kpi-metadata/resistance-band.svg', 'assets/icon/kpi-metadata/resistance-band-green.svg', 'assets/icon/kpi-metadata/resistance-band-white.svg', 'km');\n public static readonly CALORIES = new KPI_METADATA('CALORIES', 'calories', 'calories', 'assets/icon/kpi-metadata/calories.svg', 'assets/icon/kpi-metadata/calories-green.svg', 'assets/icon/kpi-metadata/calories-white.svg', 'cal');\n public static readonly EXERCISE = new KPI_METADATA('EXERCISE', 'exercises', 'exercises', 'assets/icon/kpi-metadata/exercise.svg', 'assets/icon/kpi-metadata/exercise-green.svg', 'assets/icon/kpi-metadata/exercise-white.svg', '');\n public static readonly SETS = new KPI_METADATA('SETS', 'sets', 'sets', 'assets/icon/kpi-metadata/sets.svg', 'assets/icon/kpi-metadata/sets-green.svg', 'assets/icon/kpi-metadata/sets-white.svg', '');\n public static readonly WORKOUT_COUNT = new KPI_METADATA('WORKOUT_COUNT', 'workouts', 'workouts', 'assets/icon/kpi-metadata/workout-count.svg', 'assets/icon/kpi-metadata/workout-count-green.svg', 'assets/icon/kpi-metadata/workout-count-white.svg', '');\n public static readonly GAIN = new KPI_METADATA('GAIN', 'gain', 'gain', 'assets/icon/kpi-metadata/gain.svg', 'assets/icon/kpi-metadata/gain-green.svg', 'assets/icon/kpi-metadata/gain-white.svg', '%');\n private constructor(public readonly enumValue: string, public readonly kpiName: string, public readonly barChartLegendName: string, public readonly imagePath: string, public readonly imagePathGreen: string, public readonly imagePathWhite: string, public readonly postfix: string) {\n }\n}\n","export class MonthName {\n public static readonly JANUARY = new MonthName(0, 'January', 'Jan');\n public static readonly FEBRUARY = new MonthName(1, 'February', 'Feb');\n public static readonly MARCH = new MonthName(2, 'March', 'Mar');\n public static readonly APRIL = new MonthName(3, 'April', 'Apr');\n public static readonly MAY = new MonthName(4, 'May', 'May');\n public static readonly JUNE = new MonthName(5, 'June', 'Jun');\n public static readonly JULY = new MonthName(6, 'July', 'Jul');\n public static readonly AUGUST = new MonthName(7, 'August', 'Aug');\n public static readonly SEPTEMBER = new MonthName(8, 'September', 'Sep');\n public static readonly OCTOBER = new MonthName(9, 'October', 'Oct');\n public static readonly NOVEMBER = new MonthName(10, 'November', 'Nov');\n public static readonly DECEMBER = new MonthName(11, 'December', 'Dec');\n\n\n private constructor(public readonly id: number, public readonly longName: string, public readonly shortName: string) {\n }\n\n public static getAllMonths(): MonthName[] {\n const allMonths: MonthName[] = [\n MonthName.JANUARY,\n MonthName.FEBRUARY,\n MonthName.MARCH,\n MonthName.APRIL,\n MonthName.MAY,\n MonthName.JUNE,\n MonthName.JULY,\n MonthName.AUGUST,\n MonthName.SEPTEMBER,\n MonthName.OCTOBER,\n MonthName.NOVEMBER,\n MonthName.DECEMBER\n ];\n return allMonths;\n }\n public static getMonthById(id: number): MonthName {\n return MonthName.getAllMonths().find(a => a.id === id);\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {WorkoutDTO} from '../../../../model/swagger-model/workoutDTO';\nimport {HttpServiceInterface} from '../../../../providers/http-service-interface';\nimport {UserDTO} from '../../../../model/swagger-model/userDTO';\nimport {Router} from '@angular/router';\nimport {WORKOUT_TYPE} from '../../../../model/enums/API-enums/workout-type-functional-enum';\nimport {RoutineCreationServiceInterface} from \"./routine-creation-service-interface\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RoutineCreationService implements RoutineCreationServiceInterface{\n workoutPlan: WorkoutDTO;\n workoutTypes: WORKOUT_TYPE[] = [];\n\n constructor(@Inject('HttpServiceInterface') private httpClient: HttpServiceInterface,\n private router: Router) {\n }\n\n cleanService(): void {\n this.workoutPlan = null;\n this.workoutTypes = [];\n }\n\n saveRoutine(): void {\n const workoutType = this.getWorkoutType();\n this.httpClient.uploadWorkoutPlan(this.workoutPlan.days.map(a => a.id), this.workoutPlan.description, workoutType).subscribe(a => {\n // todo: if something fails we need to get here an exception and handle it somehow!\n this.router.navigate(['tabs/home']);\n });\n }\n\n private getWorkoutType(): string {\n const hasAnimationWorkout = this.workoutTypes.indexOf(WORKOUT_TYPE.AT_LEAST_ONE_ANIMATION_VIDEO) >= 0;\n const workoutType = hasAnimationWorkout ? WORKOUT_TYPE.AT_LEAST_ONE_ANIMATION_VIDEO.enumValue : WORKOUT_TYPE.ONLY_USER_VIDEO.enumValue;\n return workoutType;\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {SimplePostDTO} from '../../../../model/swagger-model/simplePostDTO';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {UserDTO} from '../../../../model/swagger-model/userDTO';\nimport {Capacitor} from '@capacitor/core';\nimport {Camera} from '@awesome-cordova-plugins/camera';\n\nimport {Router} from '@angular/router';\nimport {GlobalDataServiceInterface} from \"../../../../providers/global-data-service/global-data-service-interface\";\nimport {SimplePostCreationServiceInterface} from \"./simple-post-creation-service-interface\";\nimport {FileWidthCroppingData} from \"../../../../components/image-cropper/image-cropper.component\";\nimport {ImagePosition} from \"../../../../directives/image-dragger.directive\";\nimport {CONTENT_TYPE} from \"../../../../model/enums/API-enums/content-type\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SimplePostCreationService implements SimplePostCreationServiceInterface {\n simplePostDTO: SimplePostDTO;\n simplePostFiles: FileWidthCroppingData[] = [];\n private camera = Camera;\n private _activeSwiperIndex = 0;\n private showSpinner = true;\n\n private currentUser: UserDTO;\n\n constructor(@Inject('GlobalDataServiceInterface') private globalDataService: GlobalDataServiceInterface,\n private sanitizer: DomSanitizer,\n private router: Router) {\n this.globalDataService.currentUser.subscribe(a => {\n this.currentUser = a;\n });\n }\n\n get activeSwiperIndex(): number {\n return this._activeSwiperIndex;\n }\n\n set activeSwiperIndex(value: number) {\n this._activeSwiperIndex = value;\n }\n\n getShowSpinner(): boolean {\n return this.showSpinner;\n }\n\n cleanService(): void {\n this.simplePostFiles = [];\n this.simplePostDTO = null;\n this._activeSwiperIndex = 0;\n }\n\n handleFirstFileInput(event): void {\n this.router.navigate(['add-simple-post']);\n this.handleFileInput(event);\n }\n\n handleFileInput(event): void {\n this.showSpinner = true;\n const imageFile = event.target.files[0];\n const fileType = imageFile.type;\n let fileAsResourceUrl: SafeResourceUrl;\n if (this.getContentType(fileType) !== CONTENT_TYPE.VIDEO) {\n fileAsResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(event.target.files[0]));\n } else {\n fileAsResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(event.target.files[0]) + '#t=0.5');\n }\n this.simplePostFiles.push({\n id: this.simplePostFiles.length,\n imageFile,\n fileType,\n fileAsResourceUrl,\n imagePosition: {x: 0, y: 0},\n croppingData: null,\n movableAxis: null\n });\n this.showSpinner = false;\n event.target.value = '';\n }\n\n loadFirstGallery(): void {\n const options = {\n quality: 50,\n destinationType: this.camera.DestinationType.FILE_URI,\n sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,\n encodingType: this.camera.EncodingType.JPEG,\n mediaType: this.camera.MediaType.ALLMEDIA\n };\n this.camera.getPicture(options).then(async (imageUrl) => {\n this.router.navigate(['add-simple-post']);\n this.handleMobileFileInput(imageUrl);\n }, (err) => {\n console.log(err);\n });\n }\n\n loadGallery(): void {\n const options = {\n quality: 50,\n destinationType: this.camera.DestinationType.FILE_URI,\n sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,\n encodingType: this.camera.EncodingType.JPEG,\n mediaType: this.camera.MediaType.ALLMEDIA\n };\n this.camera.getPicture(options).then(async (imageUrl) => {\n this.handleMobileFileInput(imageUrl);\n }, (err) => {\n console.log(err);\n });\n }\n\n private async handleMobileFileInput(imageUrl): Promise {\n this.showSpinner = true;\n const fileSrc = Capacitor.convertFileSrc(imageUrl);\n const resp = await fetch(fileSrc);\n\n resp.blob().then((myBlob: Blob) => {\n let type: string;\n let fileAsResourceUrl: SafeResourceUrl;\n if (this.getContentType(myBlob.type) === CONTENT_TYPE.IMAGE) {\n type = 'image/jpeg';\n fileAsResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl(fileSrc);\n } else if(this.getContentType(myBlob.type) === CONTENT_TYPE.ANIMATED_IMAGE) {\n type = 'image/gif';\n fileAsResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl(fileSrc);\n } else {\n type = 'video/mp4';\n fileAsResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl(fileSrc);\n }\n\n // todo: check this svg+xml and check for gif and for jpg\n\n const imageFile = new File([myBlob], fileSrc, {type});\n\n this.activeSwiperIndex = this.simplePostFiles.length;\n this.simplePostFiles.push({\n id: this.simplePostFiles.length,\n imageFile,\n fileType: type,\n fileAsResourceUrl,\n imagePosition: {x: 0, y: 0},\n croppingData: null,\n movableAxis: null\n });\n this.showSpinner = false;\n });\n }\n\n setSimplePostDTO(simplePostDTO: SimplePostDTO): void {\n this.simplePostDTO = simplePostDTO;\n }\n\n setSimplePostFiles(simplePostFiles: FileWidthCroppingData[]): void {\n this.simplePostFiles = simplePostFiles;\n }\n\n getSimplePostDTO(): SimplePostDTO {\n return this.simplePostDTO;\n }\n\n getSimplePostFiles(): FileWidthCroppingData[] {\n return this.simplePostFiles;\n }\n\n getContentType(fileType: string): CONTENT_TYPE {\n if(['png', 'jpeg', 'jpg', 'svg', 'webp', 'heic', 'heif'].filter(a => fileType.includes(a)).length > 0) {\n return CONTENT_TYPE.IMAGE;\n } if(fileType.includes('gif')) {\n return CONTENT_TYPE.ANIMATED_IMAGE;\n } else {\n return CONTENT_TYPE.VIDEO\n }\n }\n\n getFilePath(timestamp: number): string {\n return 'user-data/user_' + this.currentUser.id + '/simple-posts/' + timestamp + '/';\n }\n\n setNewPosition(imagePosition: ImagePosition): void {\n this.simplePostFiles[this.activeSwiperIndex].imagePosition = imagePosition;\n }\n\n handleDeleteImageEvent(index: number): void {\n this.simplePostFiles.splice(index, 1);\n if (index > 0) {\n this.activeSwiperIndex = index - 1;\n } else {\n if (this.simplePostFiles.length > 0) {\n this.activeSwiperIndex = 0;\n } else {\n this.activeSwiperIndex = 0;\n this.router.navigate(['tabs/add']);\n }\n }\n }\n\n moveElement(backwards: boolean, index: number): void {\n const element = this.simplePostFiles[index];\n this.simplePostFiles.splice(index, 1);\n if (backwards) {\n this.simplePostFiles.splice(index - 1, 0, element);\n } else {\n this.simplePostFiles.splice(index + 1, 0, element);\n }\n this.resetSimplePostFileIds();\n }\n setDuration(videoDuration: number, simplePostFileId: number) {\n this.simplePostFiles.find(a => a.id === simplePostFileId).videoDuration = videoDuration;\n }\n private resetSimplePostFileIds(): void {\n for(let i = 0; i < this.simplePostFiles.length; ++i) {\n this.simplePostFiles[i].id = i;\n }\n }\n}\n","import {SafeResourceUrl} from '@angular/platform-browser';\nimport {Workout} from '../../../../model/internal-model/workout.model';\nimport {Video} from '../../../../model/internal-model/video.model';\nimport {VideoTimeData} from '../../../../model/internal-model/VideoHelper.model';\nimport {Exercise} from '../../../../model/internal-model/exercise.model';\nimport {WORKOUT_TYPE} from '../../../../model/enums/API-enums/workout-type-functional-enum';\nimport {FileWidthCroppingData} from \"../../../../components/image-cropper/image-cropper.component\";\nimport {SPECIFIC_TRACKING_OPTION} from \"../../../../model/enums/API-enums/specific-tracking-option-enum\";\nimport {CacheKey} from \"../../../../model/enums/cache-key\";\nimport {PureExerciseDTO} from \"../../../../model/swagger-model/pureExerciseDTO\";\nimport {WorkoutContentDTO} from \"../../../../model/swagger-model/workoutContentDTO\";\nimport {Inject, Injectable} from \"@angular/core\";\nimport {CacheServiceInterface} from \"../../../../providers/cache-service/cache-service-interface\";\n\n// todo: rename the Class to WorkoutCreationService and the subclass accordingly\n@Injectable({\n providedIn: 'root'\n})\nexport abstract class WorkoutCreationServiceInterface {\n _workout: Workout;\n _showWrongDimensionsMessage: boolean;\n _showWrongDimensionsMessageTimeout: any;\n _editMode: boolean;\n protected showSpinner = true;\n\n protected constructor(@Inject('CacheServiceInterface') protected cacheService: CacheServiceInterface) {\n }\n\n get showWrongDimensionsMessage(): boolean {\n return this._showWrongDimensionsMessage;\n }\n\n set showWrongDimensionsMessage(value: boolean) {\n this._showWrongDimensionsMessage = value;\n }\n\n get showWrongDimensionsMessageTimeout(): any {\n return this._showWrongDimensionsMessageTimeout;\n }\n\n set showWrongDimensionsMessageTimeout(value: any) {\n this._showWrongDimensionsMessageTimeout = value;\n }\n\n set workout(workout: Workout) {\n this._workout = workout;\n }\n\n set editMode(value: boolean) {\n this._editMode = value;\n }\n\n get editMode(): boolean {\n return this._editMode;\n }\n\n get workout(): Workout {\n return this._workout;\n }\n\n getShowSpinner(): boolean {\n return this.showSpinner;\n }\n\n abstract handleFileInput(event): void;\n\n abstract handleFirstFileInput(event): void;\n\n abstract loadGallery(): void;\n\n abstract loadFirstGallery(): void;\n\n abstract addVideos(videoFile: File, safeResourceUrl: SafeResourceUrl): void;\n\n abstract addExercise(exercise: Exercise, day: number): void;\n\n abstract getVideosAsSafeResourceUrls(): SafeResourceUrl[] | string[];\n\n abstract getVideoEntities(): Video[];\n\n abstract createTimeStamp(): void;\n\n abstract addVideoCutData(videoTimeData: VideoTimeData): void;\n\n abstract getPreviewImageUrl(): string;\n\n abstract setWorkoutType(workoutType: WORKOUT_TYPE): void;\n\n abstract getWorkoutType(): WORKOUT_TYPE;\n\n abstract deleteVideo(index: number);\n\n abstract moveElement(backwards: boolean, index: number);\n\n abstract getInputTypeSVGs(exerciseInputType: SPECIFIC_TRACKING_OPTION): string[];\n\n abstract workoutHasVideos(): boolean;\n\n abstract getBorderClass(index: number, svgCount: number): string;\n\n abstract transformTime(timeInMs: number): string;\n\n abstract cleanService(): void;\n\n abstract getFilePath(): string;\n\n abstract checkVideoDimensions(index: number, width: number, height: number): void;\n\n abstract setCustomPreviewImage(customPreviewImage: FileWidthCroppingData): void;\n\n abstract getCustomPreviewImage(): FileWidthCroppingData;\n\n public async createContentDTOs(workout: Workout): Promise {\n const videos = this.getVideoEntities();\n if (!videos || videos.length === 0) {\n await this.createContentDTOsByPureExerciseIds(workout);\n }\n }\n\n private createContentDTOsByPureExerciseIds(workout: Workout): Promise {\n workout.days[0].workoutContent = [];\n return new Promise((success, error) => {\n const allExercises: Exercise[] = workout.days[0].supersets.flatMap(a => a.exercises).filter(a => a.exerciseId !== 2);\n const uniqueExerciseIds: Set = new Set(allExercises.map(a => a.exerciseId));\n this.cacheService.getCacheSubject(CacheKey.EXERCISES).subscribe((exercises: PureExerciseDTO[]) => {\n uniqueExerciseIds.forEach(exerciseId => {\n const workoutContentDTO: WorkoutContentDTO = {\n id: exerciseId,\n contentUrl: exercises.find(b => b.id === exerciseId).animationVideoUrl,\n timeLength: exercises.find(b => b.id === exerciseId).timeTo\n }\n workout.days[0].workoutContent.push(workoutContentDTO);\n allExercises.filter(a => a.exerciseId === exerciseId).forEach(a => a.contentId = exerciseId);\n });\n success();\n });\n });\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {WorkoutCreationServiceInterface} from './workout-creation-service-interface';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {Workout} from '../../../../model/internal-model/workout.model';\nimport {UserDTO} from '../../../../model/swagger-model/userDTO';\nimport {Video} from '../../../../model/internal-model/video.model';\nimport {VideoTimeData} from '../../../../model/internal-model/VideoHelper.model';\nimport {Exercise} from '../../../../model/internal-model/exercise.model';\nimport {Subscription} from 'rxjs';\nimport {Superset} from '../../../../model/internal-model/superset.model';\nimport {environment} from '../../../../../environments/environment';\nimport {WORKOUT_TYPE} from '../../../../model/enums/API-enums/workout-type-functional-enum';\nimport {\n ContentUrlSizeHandlerService\n} from '../../../../providers/content-url-size-handler/content-url-size-handler.service';\nimport {Capacitor} from '@capacitor/core';\nimport {Camera} from '@awesome-cordova-plugins/camera';\nimport {Router} from '@angular/router';\nimport {GlobalDataServiceInterface} from \"../../../../providers/global-data-service/global-data-service-interface\";\nimport {FileWidthCroppingData} from \"../../../../components/image-cropper/image-cropper.component\";\nimport {SPECIFIC_TRACKING_OPTION} from \"../../../../model/enums/API-enums/specific-tracking-option-enum\";\nimport {WorkoutContentDTO} from \"../../../../model/swagger-model/workoutContentDTO\";\nimport {PureExerciseDTO} from \"../../../../model/swagger-model/pureExerciseDTO\";\nimport {CacheServiceInterface} from \"../../../../providers/cache-service/cache-service-interface\";\nimport {CacheKey} from \"../../../../model/enums/cache-key\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkoutCreationService extends WorkoutCreationServiceInterface {\n private customPreviewImage: FileWidthCroppingData;\n private timeStamp: number;\n private currentUser: UserDTO;\n private userSubscription: Subscription;\n private workoutType: WORKOUT_TYPE;\n private camera = Camera;\n private allPureExercises: PureExerciseDTO[] = [];\n\n constructor(private sanitizer: DomSanitizer,\n @Inject('GlobalDataServiceInterface') private globalDataService: GlobalDataServiceInterface,\n @Inject('CacheServiceInterface') private cacheServiceSubClass: CacheServiceInterface,\n private router: Router) {\n super(cacheServiceSubClass);\n this.userSubscription = this.globalDataService.currentUser.subscribe((user: UserDTO) => {\n this.initialize(user);\n });\n this.cacheService.getCacheSubject(CacheKey.EXERCISES).subscribe((exercises: PureExerciseDTO[]) => this.allPureExercises = exercises);\n }\n\n loadFirstGallery(): void {\n const options = {\n quality: 50,\n destinationType: this.camera.DestinationType.FILE_URI,\n sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,\n mediaType: this.camera.MediaType.VIDEO\n };\n this.camera.getPicture(options).then(async (videoUrl) => {\n this.router.navigate(['add-workout']);\n this.handleMobileFileInput(videoUrl);\n });\n }\n\n loadGallery(): void {\n const options = {\n quality: 50,\n destinationType: this.camera.DestinationType.FILE_URI,\n sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,\n mediaType: this.camera.MediaType.VIDEO\n };\n this.camera.getPicture(options).then(async (videoUrl) => {\n this.handleMobileFileInput(videoUrl);\n });\n }\n\n private async handleMobileFileInput(videoUrl: string): Promise {\n this.setWorkoutType(WORKOUT_TYPE.ONLY_USER_VIDEO);\n this.showSpinner = true;\n const fileSrc = Capacitor.convertFileSrc(videoUrl);\n const resp = await fetch(fileSrc);\n resp.blob().then((myBlob) => {\n const file: File = new File([myBlob], fileSrc, {type: 'video/mp4'});\n const url: SafeResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(file) + '#t=0.5');\n this.addVideos(file, url);\n this.showSpinner = false;\n });\n }\n\n handleFirstFileInput(event): void {\n if (this.isVideo(event.target.files[0].name)) {\n this.router.navigate(['add-workout']);\n this.handleFileInput(event);\n } else {\n this.showWrongDimensionPopUp();\n }\n }\n\n handleFileInput(event): void {\n if (this.isVideo(event.target.files[0].name)) {\n this.setWorkoutType(WORKOUT_TYPE.ONLY_USER_VIDEO);\n this.showSpinner = true;\n const url: SafeResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(event.target.files[0]) + '#t=0.5');\n this.addVideos(event.target.files[0], url);\n event.target.value = '';\n this.showSpinner = false;\n } else {\n this.showWrongDimensionPopUp();\n }\n }\n\n cleanService(): void {\n this.timeStamp = undefined;\n this.userSubscription.unsubscribe();\n this.workoutType = undefined;\n this.userSubscription = this.globalDataService.currentUser.subscribe((user: UserDTO) => {\n this.initialize(user);\n });\n }\n\n getFilePath(): string {\n return 'user-data/user_' + this.currentUser.id + '/workouts/' + this.timeStamp + '/';\n }\n\n addVideos(videoFile: File, safeResourceUrl: SafeResourceUrl): void {\n const video: Video = {\n videoFile,\n path: this.getFilePath() + 'videos/' + 'video_' + (this._workout.days[0].videos.length) + '.mp4',\n duration: 0,\n safeResourceUrl,\n };\n this._workout.days[0].videos.push(video);\n this.deleteAllExercises();\n }\n\n addExercise(exercise: Exercise, day: number): void {\n const supersets = this._workout.days[day].supersets;\n const newSuperset = {\n order: supersets.length,\n exercises: [{\n ...exercise,\n idInWorkout: null,\n isAnimationVideo: this.workoutType === WORKOUT_TYPE.AT_LEAST_ONE_ANIMATION_VIDEO,\n\n }]\n };\n if (supersets[supersets.length - 1]?.exercises[0].exerciseId === 1) {\n supersets.splice(supersets.length - 1, 0, newSuperset);\n supersets[supersets.length - 2].order = supersets.length - 1;\n supersets[supersets.length - 1].order = supersets.length;\n } else {\n this._workout.days[day].supersets.push(newSuperset);\n }\n }\n\n // todo: this needs to be removed from all template usages\n getVideosAsSafeResourceUrls(): SafeResourceUrl[] | string[] {\n if (this.workoutType === WORKOUT_TYPE.ONLY_USER_VIDEO) {\n return this._workout.days[0].videos.map(a => a.safeResourceUrl);\n } else {\n const videos: string[] = this._workout.days[0].supersets.flatMap(a => a.exercises).map(workoutExercise => this.allPureExercises.find(pureExercise => pureExercise.id === workoutExercise.exerciseId).animationVideoUrl);\n return videos ? videos : [];\n }\n }\n\n getVideoEntities(): Video[] {\n return this._workout.days[0].videos;\n }\n\n setWorkoutType(workoutType: WORKOUT_TYPE): void {\n this.workoutType = workoutType;\n }\n\n getWorkoutType(): WORKOUT_TYPE {\n return this.workoutType;\n }\n\n createTimeStamp(): void {\n this.timeStamp = Date.now();\n }\n\n addVideoCutData(videoTimeData: VideoTimeData): void {\n const supersets: Superset[] = this._workout.days[0].supersets;\n const videos = this._workout.days[0].videos;\n this.setContentDTOs(videos);\n for (let dividingPointIndex = 0; dividingPointIndex < videoTimeData.dividingPoints.length; ++dividingPointIndex) {\n let totalDuration = 0;\n let durationToSubtract = 0;\n for (let i = 0; i < videos.length; ++i) {\n totalDuration += videos[i].duration;\n if (videoTimeData.dividingPoints[dividingPointIndex].point <= totalDuration) {\n const superset: Superset = supersets.find(a => a.order === videoTimeData.dividingPoints[dividingPointIndex].supersetOrder);\n superset.exercises.forEach(exercise => {\n exercise.contentId = i;\n exercise.timeFrom = dividingPointIndex === 0 ? 0 : videoTimeData.dividingPoints[dividingPointIndex - 1].point + 1 - durationToSubtract;\n exercise.timeTo = videoTimeData.dividingPoints[dividingPointIndex].point - durationToSubtract;\n exercise.timerTime = exercise.timeTo - exercise.timeFrom;\n })\n break;\n }\n durationToSubtract += videos[i].duration;\n }\n }\n }\n\n private setContentDTOs(videos: Video[]): void {\n for (let i = 0; i < videos.length; ++i) {\n const workoutContentDTO: WorkoutContentDTO = {\n id: i,\n timeLength: videos[i].duration,\n contentUrl: videos[i].path\n }\n this._workout.days[0].workoutContent.push(workoutContentDTO);\n }\n }\n\n deleteVideo(index: number): void {\n this._workout.days[0].videos.splice(index, 1);\n this.deleteAllExercises();\n if (!this._workout.days[0].videos || this._workout.days[0].videos.length === 0) {\n this.router.navigate(['tabs/add']);\n }\n }\n\n moveElement(backwards: boolean, index: number) {\n const element = this._workout.days[0].videos[index];\n this._workout.days[0].videos.splice(index, 1);\n if (backwards) {\n this._workout.days[0].videos.splice(index - 1, 0, element);\n } else {\n this._workout.days[0].videos.splice(index + 1, 0, element);\n }\n }\n\n foo(): void {\n this.router.navigate(['/add-workout/exercise-picker']);\n }\n\n public getPreviewImageUrl(): string {\n return this.getFilePath() + 'images/' + 'preview-image.png';\n }\n\n // all this functions should be defined in abstract class. its same on mock and real service\n getInputTypeSVGs(exerciseInputType: SPECIFIC_TRACKING_OPTION): string[] {\n return exerciseInputType.iconsGreen;\n }\n\n workoutHasVideos(): boolean {\n if (this._workout.days[0].videos?.length > 0) {\n return true;\n }\n return false;\n }\n\n getBorderClass(index: number, svgCount: number): string {\n if (svgCount === 1) {\n return;\n } else {\n if (index === 0) {\n return 'right-open';\n } else {\n return 'left-open';\n }\n }\n }\n\n transformTime(timeInMs: number): string {\n const hours = Math.floor(timeInMs / (1000 * 3600));\n let timeLeft = timeInMs - (hours * (1000 * 3600));\n const minutes = Math.floor(timeLeft / (1000 * 60));\n timeLeft = timeLeft - (minutes * 1000 * 60);\n const seconds = Math.floor(timeLeft / 1000);\n if (hours > 0) {\n return hours + 'h ' + minutes + 'm ' + seconds + 's';\n } else if (minutes > 0) {\n return minutes + 'm ' + seconds + 's';\n } else {\n return seconds + 's';\n }\n }\n\n checkVideoDimensions(index: number, width: number, height: number): void {\n this._showWrongDimensionsMessage = false;\n if (width < height) {\n this.deleteVideo(index);\n this.showWrongDimensionPopUp();\n }\n }\n\n showWrongDimensionPopUp(): void {\n clearTimeout(this._showWrongDimensionsMessageTimeout);\n this._showWrongDimensionsMessage = true;\n this._showWrongDimensionsMessageTimeout = setTimeout(() => {\n this._showWrongDimensionsMessage = false;\n }, 5000);\n }\n\n isVideo(url: string): boolean {\n return ['.webm', '.mp4', '.mov', '.avi'].filter(ending => url.includes(ending))?.length > 0;\n }\n\n setCustomPreviewImage(customPreviewImage: FileWidthCroppingData): void {\n this.customPreviewImage = customPreviewImage;\n }\n\n getCustomPreviewImage(): FileWidthCroppingData {\n return this.customPreviewImage;\n }\n\n /* end of abstract functions */\n private initialize(user: UserDTO): void {\n this._editMode = false;\n this.currentUser = user;\n this._workout = {\n id: 0,\n description: '',\n imageUrl: '',\n previewImage: '',\n creator: user,\n days: [{\n id: 0,\n orderInWorkout: 0,\n name: 'day 1',\n videos: [],\n supersets: [],\n previewImage: '',\n previewImageUrl: '',\n isRestDay: false,\n workoutContent: []\n }],\n isSavedFromCurrentUser: false,\n isLikedFromCurrentUser: false,\n };\n }\n\n private deleteAllExercises(): void {\n this._workout.days[0].supersets = [];\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport {PlayWorkoutServiceInterface} from \"./providers/play-workout-service/play-workout-service-interface\";\nimport {GlobalDataServiceInterface} from \"../../providers/global-data-service/global-data-service-interface\";\nimport {UserDTO} from \"../../model/swagger-model/userDTO\";\nimport {Superset} from \"../../model/internal-model/superset.model\";\nimport {TRACKING_OPTIONS} from \"../../model/enums/API-enums/tracking-options-functional-enum\";\nimport {WorkoutSessionDTO} from \"../../model/swagger-model/workoutSessionDTO\";\nimport {CacheKey} from \"../../model/enums/cache-key\";\nimport {\n StatisticsInitializerServiceInterface\n} from \"../statistics/providers/statistics-initializer-service/statistics-initializer-service-interface\";\nimport {HttpServiceInterface} from \"../../providers/http-service-interface\";\nimport {CacheServiceInterface} from \"../../providers/cache-service/cache-service-interface\";\nimport {Router} from \"@angular/router\";\nimport {\n WorkoutCreationServiceInterface\n} from \"../add/providers/workout-creation-service/workout-creation-service-interface\";\nimport {WORKOUT_TYPE} from \"../../model/enums/API-enums/workout-type-functional-enum\";\nimport {AndroidFullScreen} from \"@awesome-cordova-plugins/android-full-screen/ngx\";\nimport {AlertController, ModalController, Platform} from \"@ionic/angular\";\nimport {StatusBar} from \"@capacitor/status-bar\";\nimport {NativeAudio} from '@capacitor-community/native-audio'\nimport {BreakTimerService} from \"./providers/break-timer-service/break-timer.service\";\nimport {KeyboardBaseService} from \"./providers/keyboard-service/keyboard-base.service\";\nimport {SPECIFIC_TRACKING_OPTION} from \"../../model/enums/API-enums/specific-tracking-option-enum\";\nimport {WorkoutSessionConverter} from \"../../model/converter/workout-session-converter\";\nimport {VideoService} from \"./providers/video-service/video.service\";\nimport {WorkoutTimeService} from \"./providers/workout-time-service/workout-time.service\";\nimport {SupersetTimeService} from \"./providers/workout-time-service/superset-time.service\";\nimport {first, Subscription} from \"rxjs\";\nimport {PlayWorkoutShakaService} from \"./providers/shaka-service/play-workout-shaka.service\";\nimport {ResizeObserver} from \"resize-observer\";\nimport {ShakaData} from \"../../components/preview-player/preview-player-service/preview-player-shaka.service\";\nimport {WorkoutTimeCorrecterComponent} from \"../../components/workout-time-correcter/workout-time-correcter.component\";\nimport {SetContainer} from \"../../model/internal-model/setContainer\";\nimport {AdmobService} from \"../../providers/admob/admob.service\";\nimport {ScreenOrientation, ScreenOrientationResult} from \"@capacitor/screen-orientation\";\n\n@Component({\n selector: 'app-play-workout',\n templateUrl: './play-workout.page.html',\n styleUrls: ['./play-workout.page.scss', './portrait-styles.scss'],\n providers: [AndroidFullScreen, PlayWorkoutShakaService]\n})\nexport class PlayWorkoutPage implements OnInit, OnDestroy {\n @ViewChildren('videoPlayerRef', {read: ElementRef}) videoPlayerReferences: QueryList;\n @ViewChild('videoContainer', {read: ElementRef}) videoContainerRef: ElementRef;\n afterVideoPortraitOverlay = false;\n overlayDisplay = false;\n fullScreenMode = false;\n allVideos: Video[];\n currentTimeInSupersetVideos: number;\n totalTimeOfSupersetVideos: number;\n showInput = false;\n isPaused = false;\n endOfSupersetPause = false;\n showBetweenSupersetsBreak = false;\n isMobile = false;\n muted = false;\n showInitialImage = true;\n showSpinner = true;\n currentUser: UserDTO;\n videoIsLooped = false;\n private overlayTimeout: any;\n private subs: Subscription = new Subscription();\n private resizeObserver: ResizeObserver;\n private playerIsInitialized = false;\n\n constructor(@Inject('GlobalDataServiceInterface') private globalDataService: GlobalDataServiceInterface,\n @Inject('PlayWorkoutServiceInterface') public playWorkoutService: PlayWorkoutServiceInterface,\n @Inject('StatisticsInitializerServiceInterface') private statisticsInitializerService: StatisticsInitializerServiceInterface,\n @Inject('HttpServiceInterface') private httpClient: HttpServiceInterface,\n @Inject('CacheServiceInterface') private cacheService: CacheServiceInterface,\n @Inject('WorkoutCreationServiceInterface') private workoutCreationService: WorkoutCreationServiceInterface,\n public timerService: BreakTimerService,\n private router: Router,\n private androidFullscreen: AndroidFullScreen,\n private platform: Platform,\n private changeDetectorReference: ChangeDetectorRef,\n private alertController: AlertController,\n public keyboardService: KeyboardBaseService,\n private workoutSessionConverter: WorkoutSessionConverter,\n public videoService: VideoService,\n private workoutTimeService: WorkoutTimeService,\n private supersetTimeService: SupersetTimeService,\n private shakaService: PlayWorkoutShakaService,\n private modalController: ModalController,\n private admobService: AdmobService) {\n\n const sub = this.globalDataService.currentUser.subscribe(a => {\n this.currentUser = a;\n });\n this.subs.add(sub);\n }\n\n ngOnInit() {\n }\n\n ionViewWillEnter() {\n this.videoService.setCurrentVideoIndexInSuperset(0);\n this.playWorkoutService.setCurrentSuperset(0);\n this.workoutTimeService.isInitialized = false;\n this.playerIsInitialized = false;\n this.allVideos = this.videoService.getAllVideos(this.playWorkoutService.getDay());\n if (this.platform.is('cordova')) {\n this.platform.ready().then(() => {\n const sub = this.platform.backButton.subscribeWithPriority(9999, () => {\n if (this.keyboardService.getKeyBoardIsOpen()) {\n this.keyboardService.openCloseKeyboard(false, null);\n } else {\n this.navigateHome();\n }\n });\n this.subs.add(sub);\n NativeAudio.configure({\n fade: false,\n focus: false\n });\n });\n }\n NativeAudio.preload({\n assetId: \"fire\",\n assetPath: \"assets/sounds/alarm.mp3\",\n audioChannelNum: 1,\n isUrl: false\n });\n\n this.registerScreenOrientation();\n this.httpClient.setWorkoutStartTime(this.playWorkoutService.getDay().id).subscribe(() => {\n\n });\n }\n\n private async navigateHome(): Promise {\n if (this.platform.is('cordova')) {\n await ScreenOrientation.lock({orientation: 'portrait'});\n }\n await this.router.navigate(['tabs/home']);\n }\n\n ionViewDidEnter() {\n this.resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => {\n const element = entry.target;\n const elementWidth = (element).offsetWidth;\n if (elementWidth) {\n if (!this.playerIsInitialized) {\n this.playerIsInitialized = true;\n console.log('Element width:', elementWidth);\n this.videoPlayerReferences.get(0).nativeElement.style.height = '100%';\n const shakaData: ShakaData[] = [];\n for (let i = 0; i < this.allVideos.length; ++i) {\n shakaData.push({\n index: i,\n videoElement: this.videoPlayerReferences.get(i).nativeElement,\n videoUri: this.allVideos[i].url as string,\n isLoaded: false,\n isCurrentlyLoading: false\n });\n }\n this.shakaService.initAll(shakaData, this.videoContainerRef.nativeElement.offsetWidth, this.allVideos[0].widths).then((totalTime: number) => {\n console.log('all are init with total Time of = ' + totalTime);\n this.startWorkout();\n this.playCurrentVideo();\n\n this.pausePlay(true);\n this.admobService.showInterstitial().then(() => {\n this.pausePlay(false)\n });\n });\n } else {\n // todo: change the config. the maxWidth and minWidth maybe need some adjustments.\n }\n }\n });\n });\n this.resizeObserver.observe(this.videoContainerRef.nativeElement);\n\n }\n\n// todo: Why is here always when entering ngInit called and when left ngDestroy called? should it not be in the page cache?\n //todo: however: actually we should keep it in the cache so we can resume the workout from exact same position when left.\n ngOnDestroy() {\n this.videoPlayerReferences.forEach(a => a.nativeElement.pause());\n this.resizeObserver.disconnect();\n this.shakaService.destroyAll();\n }\n\n ionViewWillLeave(): void {\n this.subs.unsubscribe();\n this.videoPlayerReferences.forEach(a => {\n a.nativeElement.pause();\n })\n }\n\n buffer(idle: boolean): void {\n this.showSpinner = idle;\n }\n\n videoCanPlay(): void {\n this.showInitialImage = false;\n }\n\n showOverlay(): void {\n if (!(this.showInput && this.fullScreenMode) && !this.afterVideoPortraitOverlay) {\n clearTimeout(this.overlayTimeout);\n this.overlayDisplay = true;\n this.overlayTimeout = setTimeout(() => {\n this.overlayDisplay = false;\n }, 2000);\n }\n }\n\n registerScreenOrientation(): void {\n if (this.platform.is('cordova')) {\n this.isMobile = true;\n this.platform.ready().then(() => {\n ScreenOrientation.unlock();\n ScreenOrientation.addListener('screenOrientationChange', (orientation: ScreenOrientationResult) => {\n if (['landscape', 'landscape-primary', 'landscape-secondary'].includes(orientation.type)) {\n StatusBar.hide();\n this.fullScreenMode = true;\n this.changeDetectorReference.detectChanges();\n this.androidFullscreen.isSupported().then(() => {\n this.androidFullscreen.isImmersiveModeSupported()\n .then(() => this.androidFullscreen.immersiveMode())\n .catch(err => console.log(err));\n });\n } else {\n this.fullScreenMode = false;\n this.changeDetectorReference.detectChanges();\n this.androidFullscreen.isSupported().then(() => {\n this.androidFullscreen.isImmersiveModeSupported()\n .then(() => this.androidFullscreen.showSystemUI())\n .catch(err => console.log(err));\n });\n }\n });\n });\n }\n }\n\n async triggerFullScreen(): Promise {\n this.fullScreenMode = !this.fullScreenMode;\n if (this.fullScreenMode) {\n await ScreenOrientation.lock({orientation: 'landscape'});\n this.androidFullscreen.isSupported().then(() => {\n this.androidFullscreen.isImmersiveModeSupported()\n .then(() => this.androidFullscreen.immersiveMode())\n .catch(err => console.log(err));\n });\n } else {\n await ScreenOrientation.lock({orientation: 'portrait'});\n this.androidFullscreen.isSupported().then(() => {\n this.androidFullscreen.isImmersiveModeSupported()\n .then(() => this.androidFullscreen.showSystemUI())\n .catch(err => console.log(err));\n });\n }\n }\n\n\n next(): void {\n if (this.fullScreenMode) {\n this.doAfterSupersetAction();\n } else {\n const supersets: Superset[] = this.playWorkoutService.getDay().supersets;\n if (supersets.length > this.playWorkoutService.getCurrentSuperset().order + 1) {\n this.playWorkoutService.setCurrentSuperset(this.playWorkoutService.getCurrentSuperset().order + 1);\n this.playSuperset(this.playWorkoutService.getCurrentSuperset());\n }\n }\n }\n\n editWorkout(): void {\n this.workoutCreationService.workout = this.playWorkoutService.workout;\n this.workoutCreationService.editMode = true;\n this.workoutCreationService.setWorkoutType(WORKOUT_TYPE.AT_LEAST_ONE_ANIMATION_VIDEO);\n this.router.navigate(['/add-workout/workout-day-structure']);\n }\n\n pausePlay(isPaused: boolean): void {\n if (isPaused) {\n this.pauseCurrentVideo(false);\n this.workoutTimeService.pauseTime(this.playWorkoutService.getCurrentSuperset());\n this.supersetTimeService.pauseTime(this.playWorkoutService.getCurrentSuperset());\n if (this.fullScreenMode) {\n this.showInput = true;\n clearTimeout(this.overlayTimeout);\n this.overlayDisplay = false;\n }\n } else if (isPaused !== this.isPaused) {\n this.workoutTimeService.continueTime()\n this.supersetTimeService.continueTime()\n this.playCurrentVideo();\n if (this.fullScreenMode) {\n this.showInput = false;\n }\n }\n this.isPaused = isPaused;\n }\n\n timeUpdate(): void {\n if (!this.isPaused && this.workoutTimeService.isInitialized) {\n this.endOfSupersetPause = false;\n this.totalTimeOfSupersetVideos = this.videoService.getSupersetVideoTimeLength(this.playWorkoutService.getCurrentSuperset(), this.videoPlayerReferences, this.allVideos);\n this.currentTimeInSupersetVideos = this.supersetTimeService.getSpentTime();\n if (this.currentTimeInSupersetVideos > this.totalTimeOfSupersetVideos) {\n this.doAfterSupersetAction();\n }\n }\n }\n\n videoEnded(): void {\n const urlIndexOfSecondExerciseInSuperset = this.videoService.getNextVideoIndexInSuperset(this.playWorkoutService.getCurrentSuperset(), this.allVideos);\n if (this.videoService.getCurrentVideoIndexInSuperset() === 0 && urlIndexOfSecondExerciseInSuperset !== null && urlIndexOfSecondExerciseInSuperset !== undefined) {\n this.playVideo(urlIndexOfSecondExerciseInSuperset);\n this.videoService.setCurrentVideoIndexInSuperset(1);\n this.muted = this.playWorkoutService.getCurrentSuperset().exercises[1].isAnimationVideo;\n } else {\n this.doAfterSupersetAction();\n }\n }\n\n isVideoLooped(): boolean {\n return this.playWorkoutService.hasAnimationVideos(this.videoService.getCurrentVideoIndexInSuperset()) && this.playWorkoutService.getCurrentSuperset()?.exercises[0].specificTracking.specificTrackingType === SPECIFIC_TRACKING_OPTION.TIME_BASED;\n }\n\n saveAndEndWorkout(workoutSessionDTO: WorkoutSessionDTO): void {\n this.httpClient.saveSets(workoutSessionDTO).pipe(first()).subscribe(a => {\n this.httpClient.getAllWorkoutSessions(this.currentUser.id).pipe(first()).subscribe((workoutSessionDTOS: WorkoutSessionDTO[]) => {\n const sessionsContainer = workoutSessionDTOS.map(a => this.workoutSessionConverter.convertDTOToWorkoutSession(a));\n this.cacheService.getCacheSubject(CacheKey.SESSION_CONTAINER).next(sessionsContainer.map(a => this.workoutSessionConverter.convertWorkoutSessionToDTO(a)));\n this.statisticsInitializerService.initializeService('/tabs/home', this.currentUser.id, sessionsContainer, 2);\n this.admobService.rewardVideo().then(() => {\n this.router.navigate(['/time-period']).then(() => this.playWorkoutService.cleanService());\n });\n });\n });\n }\n\n async cleanWorkout(nonEmptySetContainer: SetContainer[]): Promise {\n return new Promise((success, error) => {\n this.supersetTimeService.setTimeSpentInExercise(this.playWorkoutService.getCurrentSuperset(), this.playWorkoutService.getWorkoutSession());\n const totalWorkoutTime = this.workoutTimeService.getSpentTime();\n this.pauseCurrentVideo(true);\n this.statisticsInitializerService.cleanService();\n const expectedTimeRange: TimeRange = this.playWorkoutService.getExpectedTimeRange(nonEmptySetContainer);\n if (expectedTimeRange.timeIsInRange(totalWorkoutTime)) {\n const workoutSession: WorkoutSessionDTO = this.playWorkoutService.getWorkoutSessionDTOCleanedForSaving(totalWorkoutTime, nonEmptySetContainer);\n return success(workoutSession);\n } else {\n this.presentWorkoutTimeCorrecter(expectedTimeRange).then(correctedTotalTime => {\n const workoutSession: WorkoutSessionDTO = this.playWorkoutService.getWorkoutSessionDTOCleanedForSaving(correctedTotalTime, nonEmptySetContainer);\n return success(workoutSession);\n });\n }\n });\n }\n\n async presentWorkoutTimeCorrecter(timeRange: TimeRange): Promise {\n return new Promise((success, error) => {\n this.modalController.create({\n component: WorkoutTimeCorrecterComponent,\n cssClass: 'tracking-options-modal',\n componentProps: {\n timeRange\n }\n }).then(modal => {\n modal.onDidDismiss()\n .then((returnData) => {\n const time: number = returnData.data.time;\n success(time);\n });\n modal.present();\n });\n });\n }\n\n playOrContinueSuperset(superset: Superset): void {\n if (superset.order === this.playWorkoutService.getCurrentSuperset().order && !this.endOfSupersetPause) {\n this.pausePlay(false);\n } else {\n this.playSuperset(superset);\n }\n }\n\n closeKeyboard(): void {\n this.keyboardService.openCloseKeyboard(false, null);\n }\n\n async presentEndOfWorkoutAlert(): Promise {\n this.pauseCurrentVideo(true);\n const alert = await this.alertController.create({\n cssClass: 'set-input-end-workout-alert',\n header: 'You want to save your results?',\n inputs: [\n {\n label: 'No, it was just a test!',\n type: 'radio',\n value: 'dontSave',\n checked: false\n },\n {\n label: 'Yes, save my results!',\n type: 'radio',\n value: 'save',\n checked: true\n }\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n handler: (data) => {\n console.log(JSON.stringify(data));\n }\n },\n {\n text: 'end workout',\n role: 'confirm',\n handler: (data) => {\n console.log(JSON.stringify(data));\n if (data === 'save') {\n this.supersetTimeService.setTimeSpentInExercise(this.playWorkoutService.getCurrentSuperset(), this.playWorkoutService.getWorkoutSession());\n this.pauseCurrentVideo(true);\n this.statisticsInitializerService.cleanService();\n const nonEmptySetContainers: SetContainer[] = this.playWorkoutService.getNonEmptySetContainer();\n this.cleanWorkout(nonEmptySetContainers).then(cleanedWorkoutSession => {\n cleanedWorkoutSession.dayId = this.playWorkoutService.getDay().id;\n this.saveAndEndWorkout(cleanedWorkoutSession);\n });\n } else {\n this.navigateHome().then(() => this.playWorkoutService.cleanService());\n }\n }\n }\n ]\n });\n await alert.present();\n }\n\n private startWorkout(): void {\n this.workoutTimeService.setInitialStartTime();\n this.supersetTimeService.setInitialStartTime();\n this.videoService.setCurrentVideoIndexInSuperset(0);\n this.playWorkoutService.setCurrentSuperset(0);\n }\n\n private playSuperset(superset: Superset): void {\n this.afterVideoPortraitOverlay = false;\n if (superset.exercises[0].exerciseId !== 2 || superset.exercises[0].breakInVideoIncluded) {\n this.showInput = false;\n }\n this.supersetTimeService.setInitialStartTime();\n this.supersetTimeService.setTimeSpentInExercise(this.playWorkoutService.getCurrentSuperset(), this.playWorkoutService.getWorkoutSession());\n this.pauseCurrentVideo(true);\n this.playWorkoutService.setCurrentSuperset(superset.order);\n this.videoService.setCurrentVideoIndexInSuperset(0);\n if (superset.exercises[0].exerciseId === 2 && !superset.exercises[0].breakInVideoIncluded) {\n this.isPaused = true;\n this.timerService.startTimer(superset.exercises[0].timerTime / 1000).then(() => {\n this.playWorkoutService.setCurrentSuperset(this.playWorkoutService.getCurrentSuperset().order + 1);\n this.playSuperset(this.playWorkoutService.getCurrentSuperset());\n });\n this.showBetweenSupersetsBreak = true;\n } else {\n this.showBetweenSupersetsBreak = false;\n this.timerService.stopTimer();\n //this.startVideoTimerIfNeeded(superset);\n this.isPaused = false;\n const videoUrlIndex = this.videoService.getSupersetsFirstVideoIndex(superset, this.allVideos);\n this.hideAllPlayers();\n const player: HTMLVideoElement = this.videoPlayerReferences.get(videoUrlIndex).nativeElement;\n player.style.height = '100%';\n player.currentTime = superset.exercises[this.videoService.getCurrentVideoIndexInSuperset()].timeFrom / 1000;\n this.play(player);\n }\n this.muted = this.playWorkoutService.getCurrentSuperset().exercises[0].isAnimationVideo;\n }\n\n private playVideo(urlIndex: number): void {\n this.hideAllPlayers();\n const player: HTMLVideoElement = this.videoPlayerReferences.get(urlIndex).nativeElement;\n player.style.height = '100%';\n player.currentTime = 0;\n this.play(player);\n }\n\n private hideAllPlayers(): void {\n this.videoPlayerReferences.map(a => a.nativeElement).forEach((a: HTMLVideoElement) => {\n a.style.height = '0';\n a.pause();\n });\n }\n\n // todo: this should maybe be an after video action\n private doAfterSupersetAction(): void {\n this.supersetTimeService.setTimeSpentInExercise(this.playWorkoutService.getCurrentSuperset(), this.playWorkoutService.getWorkoutSession());\n const supersets: Superset[] = this.playWorkoutService.getDay().supersets;\n if (this.playWorkoutService.getCurrentSuperset().exercises[0].specificTracking.specificTrackingType === SPECIFIC_TRACKING_OPTION.TIME_BASED) {\n this.playNextSuperset(supersets);\n } else if (this.fullScreenMode && this.showInput) {\n this.playNextSuperset(supersets);\n } else {\n this.pauseCurrentVideo(true);\n this.showInput = true;\n this.overlayDisplay = false;\n this.afterVideoPortraitOverlay = true;\n clearTimeout(this.overlayTimeout);\n }\n }\n\n private playNextSuperset(supersets: Superset[]): void {\n if (supersets.length > this.playWorkoutService.getCurrentSuperset().order + 1) {\n this.playWorkoutService.setCurrentSuperset(this.playWorkoutService.getCurrentSuperset().order + 1);\n this.playSuperset(this.playWorkoutService.getCurrentSuperset());\n } else {\n this.pauseCurrentVideo(false);\n }\n }\n\n private pauseCurrentVideo(endOfSuperset: boolean): void {\n this.endOfSupersetPause = endOfSuperset;\n this.isPaused = true;\n const videoUrlIndex = this.videoService.getSupersetsFirstVideoIndex(this.playWorkoutService.getCurrentSuperset(), this.allVideos);\n if (videoUrlIndex >= 0) {\n const player: HTMLVideoElement = this.videoPlayerReferences.get(videoUrlIndex).nativeElement;\n player.pause();\n }\n }\n\n private playCurrentVideo(): void {\n const videoUrlIndex = this.videoService.getSupersetsFirstVideoIndex(this.playWorkoutService.getCurrentSuperset(), this.allVideos);\n const player: HTMLVideoElement = this.videoPlayerReferences.get(videoUrlIndex).nativeElement;\n this.play(player);\n }\n\n private play(player: HTMLVideoElement): void {\n this.videoIsLooped = this.isVideoLooped();\n player.play();\n }\n\n protected readonly TRACKING_OPTIONS_ENUM = TRACKING_OPTIONS;\n protected readonly SPECIFIC_TRACKING_OPTION = SPECIFIC_TRACKING_OPTION;\n}\n\nexport interface Video {\n url: string;\n contentId: number;\n widths: number[];\n}\n\nexport class TimeRange {\n _min: number;\n _max: number;\n\n constructor(min: number, max: number) {\n this._min = min;\n this._max = max;\n }\n\n timeIsInRange(time: number): boolean {\n return time >= this._min && time <= this._max;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {NativeAudio} from '@capacitor-community/native-audio'\nimport {Observable} from \"rxjs\";\nimport {Video} from \"../../play-workout.page\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreakTimerService {\n private timerObject: Timer = {\n timerInterval: null,\n showTimer: false,\n inProgress: false,\n timerStartTime: 0,\n timerTime: 0,\n startTimeToCountBackFrom: 60\n }\n private alreadyPlayedTime = 0;\n private isPaused = false;\n\n constructor() {\n }\n\n getTimerObject(): Timer {\n return this.timerObject;\n }\n\n addTimerTime(): void {\n this.timerObject.startTimeToCountBackFrom += 5;\n }\n\n subtractTimerTime(): void {\n if (this.timerObject.startTimeToCountBackFrom >= 7) {\n this.timerObject.startTimeToCountBackFrom -= 5;\n }\n }\n\n startTimer(startTime: number, withBell = true): Promise {\n this.alreadyPlayedTime = 0;\n return new Promise((resolve, reject) => {\n this.timerObject.inProgress = true;\n this.timerObject.startTimeToCountBackFrom = startTime;\n this.timerObject.showTimer = false;\n this.timerObject.timerStartTime = new Date().getTime();\n this.timerObject.timerInterval = setInterval(() => {\n if (!this.isPaused) {\n this.timerObject.timerTime = this.timerObject.startTimeToCountBackFrom - Math.round(((new Date().getTime() - this.timerObject.timerStartTime) + this.alreadyPlayedTime) / 1000);\n if (this.timerObject.timerTime <= 0) {\n this.timerObject.timerTime = null;\n clearInterval(this.timerObject.timerInterval);\n if (withBell) {\n NativeAudio.isPlaying({assetId: 'fire'}).then(a => {\n if (!a.isPlaying) {\n NativeAudio.play({\n assetId: 'fire',\n // time: 6.0 - seek time\n });\n }\n })\n }\n this.timerObject.inProgress = false;\n resolve();\n }\n }\n }, 100);\n })\n }\n\n pauseTimer(): void {\n const timeNow = new Date().getTime();\n this.alreadyPlayedTime = timeNow - this.timerObject.timerStartTime;\n this.isPaused = true;\n }\n\n resumeTimer(): void {\n const timeNow = new Date().getTime();\n this.timerObject.timerStartTime = timeNow;\n this.isPaused = false;\n\n }\n\n stopTimer(): void {\n this.timerObject.timerTime = null;\n clearInterval(this.timerObject.timerInterval);\n this.timerObject.inProgress = false;\n }\n\n triggerTimerView(): void {\n this.timerObject.showTimer = !this.timerObject.showTimer;\n }\n}\n\nexport interface Timer {\n timerInterval: any;\n showTimer: boolean;\n inProgress: boolean;\n timerStartTime: number;\n timerTime: number;\n startTimeToCountBackFrom: number;\n}\n","import { Injectable } from '@angular/core';\nimport {AbstractKeyboardService} from \"./abstract-keyboard.service\";\nimport {\n LEFT_RIGHT\n} from \"../../../../components/set-input-components/set-input-entry-line-left-right/set-input-entry-line-left-right.component\";\n@Injectable({\n providedIn: 'root'\n})\nexport class KeyboardBaseService {\n private keyBoardIsOpen = false;\n private keyboardService: AbstractKeyboardService;\n constructor() { }\n openCloseKeyboard(open: boolean, keyboardService: AbstractKeyboardService): void {\n this.keyboardService = keyboardService;\n this.keyBoardIsOpen = open;\n if (!open && this.keyboardService) {\n this.keyboardService.cleanService(open);\n }\n }\n getKeyBoardIsOpen(): boolean {\n return this.keyBoardIsOpen;\n }\n getKeyBoardService(): AbstractKeyboardService {\n return this.keyboardService;\n }\n}\nexport enum FIELD_TO_SET {\n REPETITIONS,\n HOLDING_TIME,\n WEIGHT,\n SPENT_TIME_ON_EXERCISE,\n DISTANCE\n}\n\nexport interface FieldId {\n setOrder: number,\n field: FIELD_TO_SET,\n exerciseInSupersetOrder: number,\n exerciseInWorkoutId: number,\n minSec?: MIN_SEC,\n leftRight: LEFT_RIGHT\n}\n\nexport enum MIN_SEC {\n MIN,\n SEC\n}\n\nexport enum NEXT_ACTION {\n NEXT,\n ADD_SET,\n NONE\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {PlayWorkoutServiceInterface} from \"./play-workout-service-interface\";\nimport {Superset} from \"../../../../model/internal-model/superset.model\";\nimport {Day} from \"../../../../model/internal-model/day.model\";\nimport {WorkoutSessionDTO} from \"../../../../model/swagger-model/workoutSessionDTO\";\nimport {WorkoutToDtoConverter} from \"../../../../model/converter/workout-to-dto-converter\";\nimport {\n StatisticsInitializerServiceInterface\n} from \"../../../statistics/providers/statistics-initializer-service/statistics-initializer-service-interface\";\nimport {Exercise} from \"../../../../model/internal-model/exercise.model\";\nimport {ExerciseSetDTO} from \"../../../../model/swagger-model/exerciseSetDTO\";\nimport {TRACKING_OPTIONS} from \"../../../../model/enums/API-enums/tracking-options-functional-enum\";\nimport {SPECIFIC_TRACKING_OPTION} from \"../../../../model/enums/API-enums/specific-tracking-option-enum\";\nimport {WorkoutSessionConverter} from \"../../../../model/converter/workout-session-converter\";\nimport {SetContainer} from \"../../../../model/internal-model/setContainer\";\nimport {WorkoutSession} from \"../../../../model/internal-model/workoutSession\";\nimport {Workout} from \"../../../../model/internal-model/workout.model\";\nimport {number} from \"echarts/types/dist/echarts\";\nimport {TimeRange} from \"../../play-workout.page\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlayWorkoutService implements PlayWorkoutServiceInterface {\n\n private _workout: Workout;\n private startTimeOfWorkout;\n private startTimeOfSuperset = 0;\n private currentSupersetOrder = 0;\n private workoutSession: WorkoutSession;\n private day: Day;\n private supersets: Superset[];\n private creatorId: number;\n get workout(): Workout {\n return this._workout;\n }\n\n set workout(value: Workout) {\n this._workout = value;\n }\n constructor(@Inject('StatisticsInitializerServiceInterface') private statisticsInitializerService: StatisticsInitializerServiceInterface,\n private workoutSessionConverter: WorkoutSessionConverter) {\n }\n\n initializeService(workout: Workout, selectedDay: number, currentUserWeight: number, creatorId: number): void {\n this.startTimeOfSuperset = 0;\n this.currentSupersetOrder = 0;\n this.workoutSession = {\n timestamp: new Date().getTime(),\n userWeight: currentUserWeight,\n setContainer: []\n }\n this.day = workout.days[selectedDay];\n this.startTimeOfWorkout = new Date().getTime();\n this.workoutSession.timestamp = this.startTimeOfWorkout;\n this.addNonPresentSetContainers();\n this.supersets = this.day.supersets;\n this.creatorId = creatorId;\n this.workout = workout;\n }\n\n continueWorkout(day: Day): void {\n this.day = day;\n this.workoutSession.setContainer = this.workoutSession.setContainer.filter(a => this.day.supersets.map(superset => superset.exercises).flat().map(ex => ex.idInWorkout).includes(a.exerciseInWorkoutId));\n this.addNonPresentSetContainers();\n this.supersets = this.day.supersets;\n }\n\n getSupersets(): Superset[] {\n return this.supersets;\n }\n\n addNonPresentSetContainers(): void {\n const workoutConverter: WorkoutToDtoConverter = new WorkoutToDtoConverter();\n this.day.supersets.forEach(superset => {\n superset.exercises.forEach(exercise => {\n const setContainer: SetContainer = this.workoutSession.setContainer.find(a => a.exerciseInWorkoutId === exercise.idInWorkout);\n if (!setContainer) {\n this.workoutSession.setContainer.push({\n timestamp: this.startTimeOfWorkout,\n exercise: workoutConverter.convertExerciseToDTO(exercise),\n setContainerSpecificTrackingType: exercise.specificTracking.specificTrackingType.setContainerType,\n spentTimeOnExercise: 0,\n distance: 0,\n sets: [],\n supersetOrder: superset.order,\n exerciseInSupersetOrder: exercise.order,\n exerciseInWorkoutId: exercise.idInWorkout,\n leftRightOption: exercise.specificTracking.leftRightOption\n })\n } else {\n setContainer.setContainerSpecificTrackingType = exercise.specificTracking.specificTrackingType.setContainerType;\n setContainer.timestamp = this.startTimeOfWorkout;\n }\n })\n })\n }\n\n hasAnimationVideos(currentVideoIndexInSuperset: number): boolean {\n return this.getCurrentSuperset().exercises[currentVideoIndexInSuperset].isAnimationVideo;\n }\n\n getDay(): Day {\n return this.day;\n }\n\n getCurrentSuperset(): Superset {\n return this.day.supersets.find(a => a.order === this.currentSupersetOrder);\n }\n\n setCurrentSuperset(order: number): void {\n this.currentSupersetOrder = order;\n }\n\n getSetContainer(exerciseInWorkoutId: number): SetContainer {\n return this.workoutSession.setContainer.find(a => a.exerciseInWorkoutId === exerciseInWorkoutId);\n }\n\n getSetContainers(superset: Superset): SetContainer[] {\n return this.workoutSession.setContainer.filter(a => a.supersetOrder === superset.order);\n }\n\n getCreatorId(): number {\n return this.creatorId;\n }\n\n getWorkoutSession(): WorkoutSession {\n return this.workoutSession;\n }\n\n editValuesOfSetContainerDTO(setContainer: SetContainer): void {\n const setContainerToChange: SetContainer = this.workoutSession.setContainer.find(a => a.supersetOrder === setContainer.supersetOrder && a.exerciseInSupersetOrder === setContainer.exerciseInSupersetOrder);\n setContainerToChange.spentTimeOnExercise = setContainer.spentTimeOnExercise;\n setContainerToChange.sets = setContainer.sets;\n }\n\n addSet(exerciseInWorkoutId: number): void {\n const lastSetContainerDTO: SetContainer = this.getLastSetContainer(exerciseInWorkoutId);\n const setContainer: SetContainer = this.workoutSession.setContainer.find(a => a.exerciseInWorkoutId === exerciseInWorkoutId);\n const setLength = setContainer.sets.length;\n let set: ExerciseSetDTO;\n if (lastSetContainerDTO && lastSetContainerDTO.sets[setLength]) {\n set = {...lastSetContainerDTO.sets[setLength]}\n } else if (lastSetContainerDTO?.sets?.length > 0) {\n set = {...lastSetContainerDTO.sets[lastSetContainerDTO.sets.length - 1], orderOfSetEntry: setLength}\n } else if (setContainer.sets?.length > 0) {\n set = {...setContainer.sets[setContainer.sets.length - 1], orderOfSetEntry: setLength}\n } else {\n set = {\n weight: 0,\n repetitions: 0,\n holdingTime: 0,\n breakTime: 0,\n orderOfSetEntry: setLength,\n repetitionsLeft: 0,\n repetitionsRight: 0,\n weightLeft: 0,\n weightRight: 0,\n holdingTimeLeft: 0,\n holdingTimeRight: 0\n }\n }\n setContainer.sets.push(set);\n }\n\n private getLastSetContainer(exerciseInWorkoutId: number): SetContainer {\n const exercise: Exercise = this.day.supersets.flatMap(a => a.exercises).find(a => a.idInWorkout === exerciseInWorkoutId);\n const sessionContainer: SetContainer[] = this.statisticsInitializerService.getSessionContainer().map(workoutSessionContainer => workoutSessionContainer.setContainer).reduce((setContainer, given) => given.concat(setContainer), []);\n const lastSetContainer: SetContainer = sessionContainer?.filter((container) => container.exercise.id === exercise.exerciseId && container.setContainerSpecificTrackingType.mainType === exercise.specificTracking.specificTrackingType.mainType)?.sort((a, b) => b.timestamp - a.timestamp)[0];\n return lastSetContainer;\n }\n\n private setContainsData(exerciseSetDTO: ExerciseSetDTO): boolean {\n return exerciseSetDTO.repetitions > 0 || exerciseSetDTO.holdingTime > 0 || exerciseSetDTO.holdingTimeLeft > 0 || exerciseSetDTO.holdingTimeRight > 0 || exerciseSetDTO.repetitionsLeft > 0 || exerciseSetDTO.repetitionsRight > 0;\n }\n getExpectedTimeRange(nonEmptySetContainer: SetContainer[]): TimeRange {\n const assignedTime = nonEmptySetContainer.reduce((given, setContainer) => given + setContainer.spentTimeOnExercise, 0);\n const setBasedSetContainers: SetContainer[] = nonEmptySetContainer.filter(setContainer => setContainer.sets?.length > 0);\n const totalExpectedTimeFromSetBasedContainers = setBasedSetContainers.reduce((given: number, setContainer: SetContainer) => given + this.getExpectedTime(setContainer), 0)\n const min = assignedTime + totalExpectedTimeFromSetBasedContainers * 0.5;\n const max = assignedTime + totalExpectedTimeFromSetBasedContainers * 1.5;\n return new TimeRange(min, max);\n }\n getNonEmptySetContainer(): SetContainer[] {\n return this.workoutSession.setContainer.filter(setContainer => setContainer.sets?.length > 0 || setContainer.spentTimeOnExercise > 0 );\n }\n getWorkoutSessionDTOCleanedForSaving(totalWorkoutTime: number, nonEmptySetContainers: SetContainer[]): WorkoutSessionDTO {\n this.addTimeToSetContainers(totalWorkoutTime, nonEmptySetContainers);\n const setContainersToSave: SetContainer[] = nonEmptySetContainers.filter(setContainer => setContainer.exercise.exerciseId > 2);\n const workoutSession: WorkoutSession = {...this.workoutSession, setContainer: setContainersToSave}\n return this.workoutSessionConverter.convertWorkoutSessionToDTO(workoutSession);\n }\n\n addTimeToSetContainers(totalTime: number, setContainers: SetContainer[]): void {\n const setBasedSetContainers: SetContainer[] = setContainers.filter(a => a.sets.length > 0);\n const totalExpectedTimeFromSetBasedContainers = setBasedSetContainers.reduce((given: number, setContainer: SetContainer) => given + this.getExpectedTime(setContainer), 0);\n const assignedTime = setContainers.reduce((given, setContainer) => given + setContainer.spentTimeOnExercise, 0);\n const timeToDivide = totalTime - assignedTime;\n setBasedSetContainers.forEach((container: SetContainer) => {\n container.spentTimeOnExercise = this.getExpectedTime(container) * timeToDivide / totalExpectedTimeFromSetBasedContainers;\n });\n }\n\n getExpectedTime(setContainer: SetContainer): number {\n let expectedTime: number = setContainer.sets.reduce((given: number, set: ExerciseSetDTO) => {\n if (set.holdingTime) {\n return given + set.holdingTime;\n } else {\n return given + (60 * 1000 * set.repetitions / setContainer.exercise.repetitionsPerMinuteValue);\n }\n }, 0);\n // we expect between each set a 1-minute break\n expectedTime += (setContainer.sets.length) * 60000;\n return expectedTime;\n }\n\n cleanService(): void {\n this.startTimeOfWorkout = null;\n this.startTimeOfSuperset = 0;\n this.currentSupersetOrder = 0;\n this.workoutSession = null;\n this.day = null;\n this.supersets = null;\n }\n changeTrackingType(exercise: Exercise): void {\n const ex = this.supersets.flatMap(a => a.exercises).find(a => a.idInWorkout === exercise.idInWorkout);\n ex.specificTracking = exercise.specificTracking;\n ex.timerTime = exercise.timerTime;\n const setContainer: SetContainer = this.workoutSession.setContainer.find(a => a.exerciseInWorkoutId === exercise.idInWorkout);\n setContainer.setContainerSpecificTrackingType = exercise.specificTracking.specificTrackingType.setContainerType;\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {environment} from \"../../../../../environments/environment\";\nimport {GlobalDataServiceInterface} from \"../../../../providers/global-data-service/global-data-service-interface\";\nimport shaka from 'shaka-player/dist/shaka-player.compiled';\n@Injectable()\nexport class PlayWorkoutShakaService {\n private fileServerUrl = environment.fileserverUrl;\n private shakaPlayers: shaka.Player[] = [];\n\n constructor(@Inject('GlobalDataServiceInterface') private globalDataService: GlobalDataServiceInterface) {\n }\n\n async initAll(shakaData: ShakaData[], wrapperWidth: number, videoWidths: number[]): Promise {\n const minMaxWidth = this.getMinMaxWidth(wrapperWidth, videoWidths);\n for (let data of shakaData) {\n await this.init(data.videoElement, data.videoUri, minMaxWidth);\n }\n const promise: Promise = new Promise((resolve) => {\n resolve(shakaData.map(a => a.videoElement.duration).reduce((a, b) => a + b));\n });\n return promise;\n }\n\n destroyAll(): void {\n this.shakaPlayers.forEach(a => {\n a.unload();\n a.destroy();\n })\n }\n\n private async init(videoElement: HTMLVideoElement, videoUri: string, minMaxWidth: MinMaxWidth): Promise {\n if (shaka.Player.isBrowserSupported()) {\n await this.initPlayer(videoElement, videoUri, minMaxWidth);\n } else {\n console.error('Browser not supported!');\n }\n }\n\n\n private async initPlayer(videoElement: HTMLVideoElement, videoUri: string, minMaxWidth: MinMaxWidth): Promise {\n const onError: (event) => void = (event) => console.error('Error code', event, 'object', event);\n const player = new shaka.Player(videoElement);\n player.addEventListener('error', onError);\n player.configure({\n abr: {\n restrictions: {\n minWidth: minMaxWidth.minWidth,\n maxWidth: minMaxWidth.maxWidth,\n }\n }\n });\n this.shakaPlayers.push(player);\n await this.loadUri(player, videoUri, videoElement);\n }\n\n private async loadUri(player: any, videoUri: string, videoElement: HTMLVideoElement): Promise {\n const onError: (event) => void = (event) => console.error('Error code', event, 'object', event);\n const manifestEnding = await this.getManifestEnding();\n await player.load(this.fileServerUrl + videoUri + manifestEnding).then(() => {\n console.log('duration of ' + videoUri);\n console.log(videoElement.duration);\n }).catch(onError);\n }\n private async getManifestEnding(): Promise {\n const support = await shaka.Player.probeSupport();\n if (support.manifest.mpd) {\n return '.mpd';\n } else {\n return '.m3u8';\n }\n }\n private getMinMaxWidth(wrapperWidth: number, videoWidths: number[]): MinMaxWidth {\n let minWidth;\n let maxWidth;\n const sortedWidths = videoWidths.sort((a, b) => a - b);\n const sizeBefore = sortedWidths.filter(a => a < wrapperWidth);\n const sizesAfter = sortedWidths.filter(a => a >= wrapperWidth);\n minWidth = sizeBefore[sizeBefore.length - 1] ? sizeBefore[sizeBefore.length - 1] + 1 : 0;\n maxWidth = sizesAfter[0] ? sizesAfter[0] + 1 : 10000;\n return {minWidth, maxWidth};\n }\n}\n\nexport interface ShakaData {\n videoElement: HTMLVideoElement;\n videoUri: string\n}\n\ninterface MinMaxWidth {\n minWidth: number;\n maxWidth: number\n}\n","import {ElementRef, Inject, Injectable, QueryList} from '@angular/core';\nimport {PlayWorkoutServiceInterface} from \"../play-workout-service/play-workout-service-interface\";\nimport {Day} from \"../../../../model/internal-model/day.model\";\nimport {Video} from \"../../play-workout.page\";\nimport {Superset} from \"../../../../model/internal-model/superset.model\";\nimport {SPECIFIC_TRACKING_OPTION} from \"../../../../model/enums/API-enums/specific-tracking-option-enum\";\nimport {Exercise} from \"../../../../model/internal-model/exercise.model\";\n\n@Injectable()\nexport class VideoService {\n private currentVideoIndexInSuperset = 0;\n\n constructor(@Inject('PlayWorkoutServiceInterface') protected playWorkoutService: PlayWorkoutServiceInterface) {\n }\n\n getAllVideos(day: Day): Video[] {\n const exercises: Exercise[] = day.supersets.flatMap(a => a.exercises);\n return day.workoutContent.map(a => ({url: a.contentUrl, contentId: a.id, widths: day.videoWidths})).sort((a, b) => {\n const index1: number = exercises.findIndex(ex => ex.contentId === a.contentId);\n const index2: number = exercises.findIndex(ex => ex.contentId === b.contentId);\n return index1 - index2;\n });\n }\n\n getNextVideoIndexInSuperset(superset: Superset, videos: Video[]): number {\n const exercisesOfSuperset = superset.exercises;\n return exercisesOfSuperset.length === 2 ?\n videos.map(a => a.contentId).indexOf(superset.exercises[1].contentId) :\n null;\n }\n\n getSupersetsFirstVideoIndex(superset: Superset, videos: Video[]): number {\n return videos.map(a => a.contentId).indexOf(superset.exercises[0].contentId);\n }\n\n getSupersetVideoTimeLength(superset: Superset, videoPlayerReferences: QueryList, allVideos: Video[]): number {\n if (superset.exercises[0].specificTracking.specificTrackingType === SPECIFIC_TRACKING_OPTION.TIME_BASED) {\n return superset.exercises[0].timerTime;\n } else {\n return superset.exercises.reduce((given, exercise) => {\n if (exercise.isAnimationVideo) {\n const index = allVideos.findIndex(a => a.contentId === superset.exercises[0].contentId);\n given += this.getTimeLengthOfVideosAtSpecificPositionsInVideoList(index, videoPlayerReferences);\n } else {\n given += exercise.timeTo - exercise.timeFrom;\n }\n return given;\n }, 0)\n }\n }\n\n setCurrentVideoIndexInSuperset(videoCountInExercise: number): void {\n this.currentVideoIndexInSuperset = videoCountInExercise;\n }\n\n getCurrentVideoIndexInSuperset(): number {\n return this.currentVideoIndexInSuperset;\n }\n\n private getTimeLengthOfVideosAtSpecificPositionsInVideoList(position: number, videoPlayerReferences: QueryList): number {\n const videoElement: HTMLVideoElement = videoPlayerReferences.get(position).nativeElement as HTMLVideoElement;\n return videoElement.duration * 1000;\n }\n}\n","import {Superset} from \"../../../../model/internal-model/superset.model\";\nimport {SPECIFIC_TRACKING_OPTION} from \"../../../../model/enums/API-enums/specific-tracking-option-enum\";\nimport {number} from \"echarts/types/dist/echarts\";\n\nexport class BaseTimeService {\n protected startTime = 0;\n protected spentTime = 0;\n protected timerIsInBreak = false;\n private _isInitialized = false;\n\n get isInitialized(): boolean {\n return this._isInitialized;\n }\n\n set isInitialized(value: boolean) {\n this._isInitialized = value;\n }\n\n setInitialStartTime(): void {\n this.isInitialized = true;\n this.spentTime = 0;\n this.startTime = new Date().getTime();\n }\n pauseTime(superset: Superset): void {\n if(superset.exercises[0].specificTracking.specificTrackingType === SPECIFIC_TRACKING_OPTION.TIME_BASED) {\n const timeNow = new Date().getTime();\n this.spentTime += (timeNow - this.startTime);\n }\n }\n continueTime(): void {\n if(this.timerIsInBreak) {\n this.startTime = new Date().getTime();\n }\n }\n getSpentTime(): number {\n if(this.timerIsInBreak) {\n return this.spentTime;\n } else {\n const timeSinceLastBreak = (new Date().getTime()) - this.startTime;\n return this.spentTime + timeSinceLastBreak;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport {BaseTimeService} from \"./base-time-service\";\nimport {Superset} from \"../../../../model/internal-model/superset.model\";\nimport {WorkoutSession} from \"../../../../model/internal-model/workoutSession\";\nimport {SPECIFIC_TRACKING_OPTION} from \"../../../../model/enums/API-enums/specific-tracking-option-enum\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SupersetTimeService extends BaseTimeService{\n\n constructor() {\n super();\n }\n setTimeSpentInExercise(superset: Superset, workoutSession: WorkoutSession): void {\n this.pauseTime(superset);\n if (superset.exercises[0].specificTracking.specificTrackingType === SPECIFIC_TRACKING_OPTION.TIME_BASED) {\n const setContainer = workoutSession.setContainer.find(a => a.exerciseInWorkoutId === superset.exercises[0].idInWorkout);\n const spentTimeOnExercise = setContainer.spentTimeOnExercise + this.spentTime + (new Date().getTime() - this.startTime);\n if (spentTimeOnExercise <= superset.exercises[0].timerTime) {\n setContainer.spentTimeOnExercise = spentTimeOnExercise;\n } else {\n setContainer.spentTimeOnExercise = superset.exercises[0].timerTime;\n }\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BaseTimeService} from \"./base-time-service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkoutTimeService extends BaseTimeService{\n constructor() {\n super();\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {UserDTO} from '../../../../model/swagger-model/userDTO';\nimport {StatisticsInitializerServiceInterface} from './statistics-initializer-service-interface';\nimport {BehaviorSubject} from 'rxjs';\nimport {GlobalDataServiceInterface} from \"../../../../providers/global-data-service/global-data-service-interface\";\nimport {WorkoutSession} from \"../../../../model/internal-model/workoutSession\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StatisticsInitializerService implements StatisticsInitializerServiceInterface {\n private currentUser: UserDTO;\n private cancelRoute = '/tabs/home';\n private dataOwnerId: number;\n private isInitialized: BehaviorSubject = new BehaviorSubject(false);\n private sessionsContainer: WorkoutSession[];\n private drillDownLevel: number;\n\n constructor(@Inject('GlobalDataServiceInterface') private globalDataService: GlobalDataServiceInterface) {\n this.globalDataService.currentUser.subscribe(user => {\n this.currentUser = user;\n });\n }\n\n initializeService(cancelRoute: string, dataOwnerId: number, sessionsContainer: WorkoutSession[], drillDownLevel: number): void {\n // todo: the dayDTOs can be null if user doesnt follow the user he has requested data from. How to handle this?\n this.sessionsContainer = sessionsContainer;\n this.dataOwnerId = dataOwnerId;\n this.cancelRoute = cancelRoute;\n this.isInitialized.next(true);\n this.drillDownLevel = drillDownLevel;\n }\n\n cleanService(): void {\n this.isInitialized.next(false);\n }\n\n getCloseRoute(): string {\n return this.cancelRoute;\n }\n\n getDataOwnerId(): number {\n return this.dataOwnerId;\n }\n\n getIsInitialized(): BehaviorSubject {\n return this.isInitialized;\n }\n\n getSessionContainer(): WorkoutSession[] {\n return this.sessionsContainer;\n }\n getDrillDownLevel(): number {\n return this.drillDownLevel;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {SPECIFIC_TRACKING_OPTION} from \"../model/enums/API-enums/specific-tracking-option-enum\";\n\n@Pipe({\n name: 'availableTrackingOptions'\n})\nexport class AvailableTrackingOptionsPipe implements PipeTransform {\n transform(allAvailableTrackingOptions: SPECIFIC_TRACKING_OPTION[], isInSuperset: boolean): SPECIFIC_TRACKING_OPTION[] {\n if(isInSuperset) {\n allAvailableTrackingOptions = allAvailableTrackingOptions.filter(a => a !== SPECIFIC_TRACKING_OPTION.TIME_BASED && a !== SPECIFIC_TRACKING_OPTION.ENTER_TIME);\n }\n return allAvailableTrackingOptions.sort((a, b) => a.order - b.order);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {environment} from \"../../../environments/environment\";\n\n@Pipe({\n name: 'SizedUrlPixelBasedFromBucket'\n})\nexport class SizedUrlPixelBasedFromBucketPipe implements PipeTransform {\n\n transform(url: string, imageWidths: number[], containerWidthInPixel: number): string {\n return this.getPreviewImageUrlPixelBasedDirect(url, imageWidths, containerWidthInPixel);\n }\n\n private getPreviewImageUrlPixelBasedDirect(url: string, imageWidths: number[], containerWidthInPixel: number): string {\n if(containerWidthInPixel < 1) {\n throw new Error('please use getPreviewImageUrlViewPortBased');\n } else if (imageWidths && url && imageWidths.length > 0) {\n const closestValue = this.getNextBiggerWidthToPlatformWidth(imageWidths, containerWidthInPixel);\n const lastDotIndex = url.lastIndexOf('.');\n return environment.directBucketUrl + url.substring(0, lastDotIndex) + '_' + closestValue + '_' + url.substring(lastDotIndex);\n }\n }\n\n\n private getNextBiggerWidthToPlatformWidth(availableWidths: number[], widthInPixel: number): number {\n const onlyWiderWidths = availableWidths.filter(a => a >= widthInPixel);\n if(onlyWiderWidths.length === 0) {\n return Math.max(...availableWidths);\n }\n return Math.min(...onlyWiderWidths);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {environment} from \"../../../environments/environment\";\n\n@Pipe({\n name: 'SizedUrlPixelBased'\n})\nexport class SizedUrlPixelBasedPipe implements PipeTransform {\n\n transform(url: string, imageWidths: number[], containerWidthInPixel: number, ending?: string): string {\n return this.getPreviewImageUrlPixelBased(url, imageWidths, containerWidthInPixel, ending);\n }\n private getPreviewImageUrlPixelBased(url: string, imageWidths: number[], containerWidthInPixel: number, ending?: string): string {\n if(containerWidthInPixel < 1) {\n throw new Error('please use getPreviewImageUrlViewPortBased');\n } else if (imageWidths?.length > 0 && url) {\n const closestValue = this.getNextBiggerWidthToPlatformWidth(imageWidths, containerWidthInPixel);\n const lastDotIndex = url.lastIndexOf('.');\n if(lastDotIndex > 0) {\n return environment.fileserverUrl + url.substring(0, lastDotIndex) + '_' + closestValue + '_' + url.substring(lastDotIndex);\n } else {\n return environment.fileserverUrl + url + '_' + closestValue + '_' + ending;\n }\n }\n }\n private getNextBiggerWidthToPlatformWidth(availableWidths: number[], widthInPixel: number): number {\n const onlyWiderWidths = availableWidths.filter(a => a >= widthInPixel);\n if(onlyWiderWidths.length === 0) {\n return Math.max(...availableWidths);\n }\n return Math.min(...onlyWiderWidths);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timePrettyPrint'\n})\nexport class TimePrettyPrintPipe implements PipeTransform {\n\n transform(timeInSeconds: number): string {\n let prettyString = '';\n const hours = Math.floor(timeInSeconds / (3600));\n if (hours !== 0) {\n prettyString += hours + 'h ';\n }\n let timeLeft = timeInSeconds - (hours * (3600));\n const minutes = Math.floor(timeLeft / (60));\n if (hours !== 0 || minutes !== 0) {\n if(minutes === 0) {\n prettyString += '00m ';\n } else if (minutes < 10) {\n prettyString += '0' + minutes + 'm ';\n } else {\n prettyString += minutes + 'm ';\n }\n }\n if(hours === 0) {\n timeLeft = timeLeft - (minutes * 60);\n const seconds = Math.floor(timeLeft);\n if(seconds === 0) {\n prettyString += '00s ';\n } else if (seconds < 10) {\n prettyString += '0' + seconds + 's ';\n } else {\n prettyString += seconds + 's ';\n }\n }\n return prettyString;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {MonthName} from \"../model/enums/month-name\";\n\n@Pipe({\n name: 'timestampToDayMonth'\n})\nexport class TimestampToDayMonthPipe implements PipeTransform {\n transform(timestamp: number): string {\n const date = new Date(timestamp);\n return date.getDate() + ' ' + MonthName.getAllMonths()[date.getMonth()].shortName;\n }\n\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {\n AdLoadInfo,\n AdMob,\n AdmobConsentStatus,\n AdMobInitializationOptions,\n AdMobRewardItem,\n AdOptions,\n InterstitialAdPluginEvents,\n RewardAdOptions,\n RewardAdPluginEvents\n} from \"@capacitor-community/admob\";\nimport {Platform} from \"@ionic/angular\";\nimport {Capacitor} from \"@capacitor/core\";\nimport {success} from \"@capacitor/assets/dist/colors\";\nimport {CacheKey} from \"../../model/enums/cache-key\";\nimport {HttpServiceInterface} from \"../http-service-interface\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdmobService {\n private isInitialized = false;\n\n constructor(private platform: Platform,\n @Inject('HttpServiceInterface') private httpService: HttpServiceInterface,) {\n }\n\n async showInterstitial(): Promise {\n if (Capacitor.getPlatform() === 'web') {\n return new Promise(success => {\n success()\n });\n }\n try {\n await this.hasPremiumSubscription();\n return new Promise(success => success());\n } catch {\n if (!this.isInitialized) {\n await this.initialize();\n }\n // interstitial id: ca-app-pub-6263711405828974/8801100543\n const promise: Promise = new Promise(success => {\n AdMob.addListener(InterstitialAdPluginEvents.Loaded, (info: AdLoadInfo) => {\n // Subscribe prepared interstitial\n });\n AdMob.addListener(InterstitialAdPluginEvents.Showed, () => {\n // Subscribe prepared interstitial\n });\n AdMob.addListener(InterstitialAdPluginEvents.Dismissed, () => {\n success();\n });\n AdMob.addListener(InterstitialAdPluginEvents.FailedToLoad, () => {\n success();\n });\n });\n const options: AdOptions = {\n adId: Capacitor.getPlatform() === 'ios' ? 'ca-app-pub-6263711405828974/1030580839' : 'ca-app-pub-6263711405828974/8801100543',\n isTesting: false,\n };\n await AdMob.prepareInterstitial(options);\n await AdMob.showInterstitial();\n return promise;\n }\n }\n\n async rewardVideo(): Promise {\n if (Capacitor.getPlatform() === 'web') {\n return new Promise(success => {\n success()\n });\n }\n try {\n await this.hasPremiumSubscription();\n return new Promise(success => success());\n } catch {\n if (!this.isInitialized) {\n await this.initialize();\n }\n // admob id: ca-app-pub-6263711405828974/8304709857\n const promise: Promise = new Promise((success, failed) => {\n AdMob.addListener(RewardAdPluginEvents.Loaded, (info: AdLoadInfo) => {\n // Subscribe prepared rewardVideo\n });\n AdMob.addListener(RewardAdPluginEvents.Rewarded, (rewardItem: AdMobRewardItem) => {\n // Subscribe user rewarded\n console.log('reward received 1111');\n console.log(rewardItem.type);\n console.log(rewardItem.amount);\n console.log('reward received 1111');\n\n success();\n });\n AdMob.addListener(RewardAdPluginEvents.Dismissed, () => {\n // Subscribe user rewarded\n console.log('dismissed');\n failed();\n });\n AdMob.addListener(RewardAdPluginEvents.FailedToLoad, () => {\n success();\n });\n });\n const options: RewardAdOptions = {\n adId: Capacitor.getPlatform() === 'ios' ? 'ca-app-pub-6263711405828974/2311872916' : 'ca-app-pub-6263711405828974/8304709857',\n isTesting: false,\n // ssv: {\n // userId: \"A user ID to send to your SSV\"\n // customData: JSON.stringify({ ...MyCustomData })\n //}\n };\n await AdMob.prepareRewardVideoAd(options);\n const rewardItem: AdMobRewardItem = await AdMob.showRewardVideoAd();\n return promise;\n }\n }\n\n private async initialize(): Promise {\n const initOptions: AdMobInitializationOptions = {\n testingDevices: ['6f577bca-b25b-4f80-a607-d4ea1a8da4de', '5f28483d-cdbb-4e99-8fb3-27003e83bdbc', 'BE629F97-1F7F-4F7E-82A1-E0A9484BC390', '80ce0085-a61b-43b4-9015-9e02790f8404'],\n initializeForTesting: false,\n }\n await AdMob.initialize(initOptions);\n const trackingInfo = await AdMob.trackingAuthorizationStatus();\n let consentInfo;\n try {\n consentInfo = await AdMob.requestConsentInfo();\n } catch (e: any) {\n console.error('consent info not received');\n }\n if (trackingInfo.status === 'notDetermined') {\n /**\n * If you want to explain TrackingAuthorization before showing the iOS dialog,\n * you can show the modal here.\n * ex)\n * const modal = await this.modalCtrl.create({\n * component: RequestTrackingPage,\n * });\n * await modal.present();\n * await modal.onDidDismiss(); // Wait for close modal\n **/\n await AdMob.requestTrackingAuthorization();\n }\n const authorizationStatus = await AdMob.trackingAuthorizationStatus();\n if (\n authorizationStatus.status === 'authorized' &&\n consentInfo?.isConsentFormAvailable &&\n consentInfo?.status === AdmobConsentStatus.REQUIRED\n ) {\n await AdMob.showConsentForm();\n }\n this.isInitialized = true;\n }\n\n hasPremiumSubscription(): Promise {\n return new Promise((resolve, reject) => {\n this.httpService.getHasPremiumSubscription().subscribe(isPremium => isPremium ? resolve() : reject())\n });\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {CacheKey} from \"../../model/enums/cache-key\";\nimport {StorageService} from \"../storage-service/storage.service\";\nimport {HttpServiceInterface} from \"../http-service-interface\";\nimport {Router} from \"@angular/router\";\nimport {FirebaseGlobalService} from \"../firebase-login/firebase-global.service\";\nimport {GlobalDataServiceInterface} from \"../global-data-service/global-data-service-interface\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuardCommonService {\n\n constructor(private localStorage: StorageService,\n @Inject('HttpServiceInterface') private httpService: HttpServiceInterface,\n private firebaseLoginService: FirebaseGlobalService,\n @Inject('GlobalDataServiceInterface') private globalDataService: GlobalDataServiceInterface) { }\n\n public async hasQuestionnaireCompleted(): Promise {\n return new Promise((resolve, reject) => {\n this.localStorage.get(CacheKey.USER).then(user => {\n if(user) {\n resolve(user.questionnaireCompleted);\n } else {\n this.firebaseLoginService.getCurrentUser().then(user => {\n if(user) {\n this.httpService.getUser().subscribe(u => {\n this.globalDataService.currentUser.next(u);\n this.localStorage.set(CacheKey.USER, u).then(storedUser => resolve(storedUser?.questionnaireCompleted));\n });\n } else {\n resolve(false);\n }\n });\n }\n });\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Router} from \"@angular/router\";\nimport {FirebaseGlobalService} from \"../../firebase-login/firebase-global.service\";\nimport {AuthGuardCommonService} from \"../auth-guard-common.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MainGuardService {\n\n constructor(private authGuardCommonService: AuthGuardCommonService,\n private router: Router,\n private firebaseLoginService: FirebaseGlobalService) { }\n\n public async canActivate(): Promise {\n return new Promise(resolve => {\n this.authGuardCommonService.hasQuestionnaireCompleted().then(a => {\n if(a) {\n resolve(true);\n } else {\n this.firebaseLoginService.getCurrentUser().then(user => {\n if(user) {\n this.router.navigate(['/questionairy-profile'], {replaceUrl: true});\n } else {\n this.router.navigate(['/firebase-login'], {replaceUrl: true});\n }\n });\n resolve(false);\n }\n });\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FirebaseGlobalService} from \"../../firebase-login/firebase-global.service\";\nimport {Router} from \"@angular/router\";\nimport {AuthGuardCommonService} from \"../auth-guard-common.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoginGuardService {\n\n constructor(private authGuardCommonService: AuthGuardCommonService,\n private firebaseLoginService: FirebaseGlobalService,\n private router: Router) { }\n\n public async canActivate(): Promise {\n return new Promise(resolve => {\n this.firebaseLoginService.getCurrentUser().then(user => {\n const result: boolean = !user || !user.emailVerified;\n if(result) {\n resolve(true);\n } else {\n this.authGuardCommonService.hasQuestionnaireCompleted().then(questionsCompleted => {\n if(questionsCompleted) {\n this.router.navigate(['/tabs/home'], {replaceUrl: true})\n } else {\n this.router.navigate(['/questionairy-profile'], {replaceUrl: true})\n }\n resolve(false);\n });\n }\n });\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Router} from \"@angular/router\";\nimport {FirebaseGlobalService} from \"../../firebase-login/firebase-global.service\";\nimport {AuthGuardCommonService} from \"../auth-guard-common.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QuestionsGuardService {\n\n constructor(private authGuardCommonService: AuthGuardCommonService,\n private router: Router,\n private firebaseLoginService: FirebaseGlobalService,) { }\n\n public async canActivate(): Promise {\n return new Promise(resolve => {\n this.firebaseLoginService.getCurrentUser().then(user => {\n this.authGuardCommonService.hasQuestionnaireCompleted().then(questionsCompleted => {\n const activateQuestions: boolean = user !== null && !questionsCompleted;\n if(activateQuestions) {\n resolve(true);\n } else {\n if(user && questionsCompleted) {\n this.router.navigate(['/tabs/home'], {replaceUrl: true});\n } else {\n this.router.navigate(['/firebase-login'], {replaceUrl: true});\n }\n resolve(false);\n }\n });\n });\n });\n }\n\n\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\nimport {CalendarDTO} from '../../model/swagger-model/calendarDTO';\nimport {HttpServiceInterface} from '../http-service-interface';\nimport {StorageService} from '../storage-service/storage.service';\nimport {CacheKey} from '../../model/enums/cache-key';\nimport {WorkoutDTO} from '../../model/swagger-model/workoutDTO';\nimport {SimplePostDTO} from '../../model/swagger-model/simplePostDTO';\nimport {UserDTO} from '../../model/swagger-model/userDTO';\nimport {Day} from '../../model/internal-model/day.model';\nimport {Workout} from '../../model/internal-model/workout.model';\nimport {Post} from '../../model/internal-model/post.model';\nimport {PostDTO} from '../../model/swagger-model/postDTO';\nimport {DayDTO} from '../../model/swagger-model/dayDTO';\nimport {DTOToWorkoutConverter} from '../../model/converter/dto-to-workout-converter';\nimport {CacheServiceInterface} from './cache-service-interface';\nimport {MuscleTargetDTO} from '../../model/swagger-model/muscleTargetDTO';\nimport {EquipmentGroupDTO} from '../../model/swagger-model/equipmentGroupDTO';\nimport {WorkoutSessionDTO} from \"../../model/swagger-model/workoutSessionDTO\";\nimport {GlobalDataServiceInterface} from \"../global-data-service/global-data-service-interface\";\nimport {PureExerciseDTO} from \"../../model/swagger-model/pureExerciseDTO\";\nimport {FirebaseGlobalService} from \"../firebase-login/firebase-global.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CacheService implements CacheServiceInterface {\n private applicationStartTime: number;\n private allCacheSubjects: CacheSubject[] = [];\n\n constructor(private storageService: StorageService,\n @Inject('HttpServiceInterface') private httpConfigService: HttpServiceInterface,\n @Inject('GlobalDataServiceInterface') private globalDataService: GlobalDataServiceInterface,\n private firebaseLoginService: FirebaseGlobalService) {\n }\n\n public update(key: CacheKey, value: any): Promise {\n const promise = new Promise((resolve, reject) => {\n this.storageService.getInstance().subscribe(instance => {\n instance?.set(key, value).then(valueFromStorage => {\n this.getCacheSubject(key)?.next(valueFromStorage);\n resolve();\n });\n });\n });\n return promise;\n }\n\n public concatToExisting(key: CacheKey, value: any[]): Promise {\n const promise = new Promise((resolve, reject) => {\n this.storageService.getInstance().subscribe(instance => {\n const cacheSubject = this.getCacheSubject(key);\n const newArray = [].concat(cacheSubject.getValue()).concat(value);\n instance?.set(key, newArray).then(valueFromStorage => {\n this.getCacheSubject(key).next(valueFromStorage);\n resolve(valueFromStorage);\n });\n });\n });\n return promise;\n }\n\n forcedReloadFromBackend(): void {\n this.allCacheSubjects.filter(cacheSubject => cacheSubject.reloadIfNotExists).forEach(cacheSubject => {\n cacheSubject.dbFunction.subscribe(value => {\n this.update(cacheSubject.key, value);\n });\n });\n }\n\n public forcedSelectionReloadFromBackend(cacheKeys: CacheKey[]): void {\n cacheKeys.forEach(cacheKey => {\n this.allCacheSubjects.find(a => a.key.stringRepresentation === cacheKey.stringRepresentation)?.dbFunction?.subscribe(value => {\n this.update(cacheKey, value);\n });\n });\n }\n\n public add(key: CacheKey, value: any): Promise {\n const promise = new Promise((resolve, reject) => {\n this.storageService.getInstance().subscribe(instance => {\n instance?.get(key).then(oldValue => {\n if (oldValue instanceof Array) {\n instance?.set(key, oldValue.push(value)).then(valueFromStorage => {\n this.getCacheSubject(key).next(valueFromStorage);\n resolve();\n });\n } else {\n reject();\n }\n });\n });\n });\n return promise;\n }\n\n loadAllCaches(): void {\n this.initializeAllCacheSubjects();\n this.loadCachesFromLocalStorage();\n this.httpConfigService.getUser().subscribe(user => {\n this.storageService.set(CacheKey.USER, user);\n this.globalDataService.currentUser.next(user);\n this.reloadSuggestions(user.id);\n });\n }\n\n\n loadCachesFromLocalStorage(): void {\n this.storageService.getInstance().subscribe(instance => {\n this.allCacheSubjects.forEach(a => instance?.get(a.key)?.then(data => {\n if (data) {\n a.subject.next(data);\n }\n }\n )\n );\n });\n }\n\n setApplicationStartTime(applicationStartTime: number): void {\n this.applicationStartTime = applicationStartTime;\n }\n\n getApplicationStartTime(): number {\n return this.applicationStartTime;\n }\n\n public getCacheSubject(key: CacheKey): BehaviorSubject {\n return this.allCacheSubjects.find(a => a.key === key)?.subject;\n }\n\n private reloadSuggestions(currentUserId: number): void {\n this.httpConfigService.getSuggestedWorkouts(this.getCacheSubject(CacheKey.REPORTED_WORKOUT_POST_IDS).getValue()).subscribe(pageDTO => {\n this.update(CacheKey.SUGGESTED_WORKOUTS, pageDTO.posts);\n });\n this.httpConfigService.getFriendsSuggestions([currentUserId], 20).subscribe((friendSuggestions: UserDTO[]) => {\n this.update(CacheKey.SUGGESTED_FRIENDS, friendSuggestions);\n });\n }\n\n private initializeAllCacheSubjects(): void {\n this.allCacheSubjects.push({\n key: CacheKey.LIKED_SIMPLE_POST_IDS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getAllSimplePostIdsLikedByUser(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.LIKED_WORKOUT_POST_IDS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getAllWorkoutPostIdsLikedByUser(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.EXERCISES,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getAllExercises(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.REST_DAY,\n subject: new BehaviorSubject(null),\n dbFunction: this.httpConfigService.getRestDay(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.CREATED_WORKOUTS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getCreatedWorkouts(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.BOOKMARKED_WORKOUTS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getBookmarkedWorkouts(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.CREATED_SIMPLE_POSTS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getMyCreatedSimplePosts(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.BOOKMARKED_SIMPLE_POSTS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getBookmarkedSimplePosts(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.CALENDAR_WORKOUTS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getWorkoutsForCalendar(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.EQUIPMENT_GROUPS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getEquipmentGroups(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.MUSCLE_TARGETS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getAllMuscleTargets(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.SESSION_CONTAINER,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getAllWorkoutSessions(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.REPORTED_SIMPLE_POST_IDS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getMyReportedSimplePostIds(),\n reloadIfNotExists: true\n });\n this.allCacheSubjects.push({\n key: CacheKey.REPORTED_WORKOUT_POST_IDS,\n subject: new BehaviorSubject([]),\n dbFunction: this.httpConfigService.getMyReportedWorkoutIds(),\n reloadIfNotExists: true\n });\n //todo: why not adding the dbFunction here as well and only calling from here.\n this.allCacheSubjects.push({\n key: CacheKey.POSTS_FOR_HOME_PAGE,\n subject: new BehaviorSubject([]),\n dbFunction: null,\n reloadIfNotExists: false\n });\n this.allCacheSubjects.push({\n key: CacheKey.SUGGESTED_WORKOUTS,\n subject: new BehaviorSubject([]),\n dbFunction: null,\n reloadIfNotExists: false\n });\n this.allCacheSubjects.push({\n key: CacheKey.SUGGESTED_FRIENDS,\n subject: new BehaviorSubject([]),\n dbFunction: null,\n reloadIfNotExists: false\n });\n }\n}\n\nexport interface CacheSubject {\n key: CacheKey;\n subject: BehaviorSubject;\n dbFunction: Observable;\n reloadIfNotExists: boolean;\n}\n","import {Injectable} from '@angular/core';\nimport {FirebaseAuthentication, User} from \"@capacitor-firebase/authentication\";\nimport {Router} from \"@angular/router\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FirebaseGlobalService {\n\n constructor(private router: Router) {\n }\n\n async getCurrentUser(): Promise {\n const result = await FirebaseAuthentication.getCurrentUser();\n return result.user;\n };\n\n async getJwtToken(): Promise {\n const currentUser = await this.getCurrentUser();\n if (!currentUser) {\n return;\n }\n const result = await FirebaseAuthentication.getIdToken();\n return result.token;\n };\n async logout(): Promise {\n FirebaseAuthentication.signOut().then(() => this.router.navigate(['']));\n }\n}\n","import {HostListener, Injectable} from '@angular/core';\nimport {Capacitor} from '@capacitor/core';\nimport {Platform} from '@ionic/angular';\nimport {UserDTO} from '../../model/swagger-model/userDTO';\nimport {BehaviorSubject, ReplaySubject, Subject, window} from 'rxjs';\nimport {Dimensions, GlobalDataServiceInterface} from \"./global-data-service-interface\";\nimport {User} from \"@capacitor-firebase/authentication\";\nimport {number} from \"echarts/types/dist/echarts\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GlobalDataService implements GlobalDataServiceInterface {\n private _isNative = Capacitor.isNativePlatform();\n private _screenDimensions: ReplaySubject = new ReplaySubject(1);\n private _MAX_WIDTH_FOR_MOBILE_VIEW = 600;\n private _currentUser: BehaviorSubject = new BehaviorSubject(null);\n private _firebaseUser: ReplaySubject = new ReplaySubject(1);\n private _resumeEvent: Subject = new Subject();\n private _accessToken: any;\n\n constructor() {\n\n }\n\n get isNative(): boolean {\n return this._isNative;\n }\n\n get screenDimensions(): ReplaySubject {\n return this._screenDimensions;\n }\n\n get currentUser(): BehaviorSubject {\n return this._currentUser;\n }\n\n get resumeEvent(): Subject {\n return this._resumeEvent;\n }\n\n get MAX_WIDTH_FOR_MOBILE_VIEW(): number {\n return this._MAX_WIDTH_FOR_MOBILE_VIEW;\n }\n\n get accessToken(): any {\n return this._accessToken;\n }\n\n set accessToken(value: any) {\n this._accessToken = value;\n }\n\n get firebaseUser(): ReplaySubject {\n return this._firebaseUser;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpServiceInterface} from './http-service-interface';\nimport {HttpClient, HttpEvent, HttpHeaders, HttpParams, HttpRequest} from '@angular/common/http';\nimport {BehaviorSubject, catchError, map, Observable, throwError} from 'rxjs';\nimport {environment} from '../../environments/environment';\nimport {PageDTO} from '../model/swagger-model/pageDTO';\nimport {EquipmentGroupDTO} from '../model/swagger-model/equipmentGroupDTO';\nimport {Video} from '../model/internal-model/video.model';\nimport {WorkoutDTO} from '../model/swagger-model/workoutDTO';\n\nimport {CalendarDTO} from '../model/swagger-model/calendarDTO';\nimport {UserDTO} from '../model/swagger-model/userDTO';\nimport {SimplePostDTO} from '../model/swagger-model/simplePostDTO';\nimport {MuscleTargetDTO} from '../model/swagger-model/muscleTargetDTO';\nimport {DayDTO} from '../model/swagger-model/dayDTO';\nimport {CommentsDTO} from '../model/swagger-model/commentsDTO';\nimport {UPDATE_ENTITY} from '../model/enums/API-enums/update-entity';\nimport {CommentDTO} from '../model/swagger-model/commentDTO';\nimport {HashtagDTO} from '../model/swagger-model/hashtagDTO';\nimport {PostDTO} from '../model/swagger-model/postDTO';\nimport {NewsDTO} from '../model/swagger-model/newsDTO';\nimport {ChatMessageDTO} from '../model/swagger-model/chatMessageDTO';\nimport {Image} from '../model/internal-model/image.model';\nimport {WorkoutSessionDTO} from '../model/swagger-model/workoutSessionDTO';\nimport {PureExerciseDTO} from \"../model/swagger-model/pureExerciseDTO\";\nimport {ExerciseGroupDTO} from \"../model/swagger-model/exerciseGroupDTO\";\nimport {PayPalDTO} from \"../model/swagger-model/payPalDTO\";\nimport {FirebaseGlobalService} from \"./firebase-login/firebase-global.service\";\nimport {StatisticsGenerationDataDTO} from \"../model/swagger-model/statisticsGenerationDataDTO\";\nimport ChatListUsers from \"../../assets/mock-assets/data/chat-list-users.json\";\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpRealService implements HttpServiceInterface {\n\n constructor(private httpClient: HttpClient,\n private firebaseLoginService: FirebaseGlobalService) {\n }\n\n getListingObjects(params: HttpParams): Observable {\n const endpoint = 'posts-service/get-all-posts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL, params);\n }\n\n getAllMuscleTargets(): Observable {\n const endpoint = 'filter/get-all-muscle-targets';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getEquipmentGroups(): Observable {\n const endpoint = 'filter/get-equipment-groups';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n saveSets(workoutSessionDTO: WorkoutSessionDTO): Observable {\n const endpoint = 'statistics-service/save-workout-session';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, workoutSessionDTO);\n }\n\n getAllWorkoutSessions(userToGetDataFrom?: number): Observable {\n let params = new HttpParams();\n if (userToGetDataFrom) {\n params = params.append('userToGetDataFrom', userToGetDataFrom);\n }\n const endpoint = 'exercise-set/get-all-workout-sessions';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL, params);\n }\n\n getCalendarData(): Observable {\n const endpoint = 'calendar-controller/get-calendar-entries';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n saveCalendarData(calendarDTO: CalendarDTO[]): Observable {\n const params = new HttpParams().set('calendarDTOsAsJson', JSON.stringify(calendarDTO));\n const endpoint = 'calendar-controller/save-calendar-entries';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, params);\n }\n\n getWorkoutsForCalendar(): Observable {\n const endpoint = 'workout-controller/get-calendar-workouts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n uploadProfile(formData: FormData): Observable> {\n const endpoint = 'login-service/upload-profile';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postWithEventRequest(endpointURL, formData);\n }\n\n getUser(): Observable {\n const endpoint = 'login-service/get-my-user';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n createUser(): Observable {\n const endpoint = 'login-service/create-user';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getAllWorkoutsOfUser(userDTO: UserDTO): Observable {\n const user: UserDTO = {...userDTO, profileImage: {}};\n const endpoint = 'posts-service/get-all-workouts-from-user';\n const endpointURL = environment.apiUrl + endpoint;\n let params: HttpParams = new HttpParams();\n params = params.append('userId', user.id);\n params = params.append('highestUpdateId', '10');\n params = params.append('pageSize', '20');\n return this.getRequest(endpointURL, params);\n }\n\n getAllWorkoutsOfHashtag(hashtagId: number): Observable {\n const endpoint = 'hashtag-controller/get-workouts-of-hashtag';\n const endpointURL = environment.apiUrl + endpoint;\n let params: HttpParams = new HttpParams();\n params = params.append('hashtagId', hashtagId);\n return this.getRequest(endpointURL, params);\n }\n\n getAllSimplePostsOfHashtag(hashtagId: number): Observable {\n const endpoint = 'hashtag-controller/get-simple-posts-of-hashtag';\n const endpointURL = environment.apiUrl + endpoint;\n let params: HttpParams = new HttpParams();\n params = params.append('hashtagId', hashtagId);\n return this.getRequest(endpointURL, params);\n }\n\n follow(followsId: number, unfollow: boolean): Observable {\n const endpoint = 'login-service/follow';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n params = params.append('followsId', String(followsId));\n params = params.append('unFollow', String(unfollow));\n const result: Observable = this.postRequest(endpointURL, params);\n return result;\n }\n\n followHashtag(hashtagId: number, unfollow: boolean): Observable {\n const endpoint = 'hashtag-controller/follow-hashtag';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n params = params.append('hashtagId', String(hashtagId));\n params = params.append('unFollow', String(unfollow));\n const result: Observable = this.postRequest(endpointURL, params);\n return result;\n }\n\n uploadWorkoutPlan(dayIds: number[], description: string, workoutType: string): Observable {\n const endpoint = 'save-workout-controller/upload-workout-plan';\n const endpointURL = environment.apiUrl + endpoint;\n const formData: FormData = new FormData();\n formData.append('days', JSON.stringify(dayIds));\n formData.append('description', description);\n formData.append('workoutType', workoutType);\n return this.postRequest(endpointURL, formData);\n }\n\n uploadWorkout(videos: Video[], workout: WorkoutDTO, previewImage: Image): Observable> {\n const endpoint = 'save-workout-controller/upload-workout';\n const endpointURL = environment.apiUrl + endpoint;\n const formData: FormData = new FormData();\n if (videos !== null) {\n for (const video of videos) {\n formData.append('video', video.videoFile, video.path);\n }\n }\n if (previewImage !== null) {\n formData.append('previewImage', previewImage.imageFile, previewImage.path);\n }\n formData.append('workout', JSON.stringify(workout));\n return this.postWithEventRequest(endpointURL, formData);\n }\n\n uploadSimplePost(formData: FormData): Observable> {\n const endpoint = 'posts-service/upload-simple-post';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postWithEventRequest(endpointURL, formData);\n }\n\n getFilteredWorkoutsCount(params: HttpParams): Observable {\n const endpoint = 'workout-controller/get-filtered-workouts-count';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL, params);\n }\n\n getFilteredWorkouts(params: HttpParams): Observable {\n const endpoint = 'workout-controller/get-filtered-workouts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL, params);\n }\n\n bookmarkWorkout(workoutId: number): Observable {\n const endpoint = 'like-service/save-workout';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, workoutId);\n }\n\n likeWorkout(workoutId: number): Observable {\n const endpoint = 'like-service/like-workout';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, workoutId);\n }\n\n bookmarkSimplePost(simplePostId: number): Observable {\n const endpoint = 'like-service/save-simple_post';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, simplePostId);\n }\n\n likeSimplePost(simplePostId: number): Observable {\n const endpoint = 'like-service/like-simple_post';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, simplePostId);\n }\n\n likeStatisticsPost(statisticsId: number): Observable {\n const endpoint = 'like-service/like-statistics-post';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, statisticsId);\n }\n\n setStatisticsPrivacy(statisticsIsPublic: boolean): Observable {\n const endpoint = 'statistics-service/set-statistics-privacy';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, statisticsIsPublic);\n }\n\n saveComment(commentsDTO: CommentsDTO): Observable {\n const endpoint = 'comments-service/save-comment';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, commentsDTO);\n }\n\n getComments(postId: number, postType: UPDATE_ENTITY): Observable {\n const endpoint = 'comments-service/get-comments';\n const endpointURL = environment.apiUrl + endpoint;\n let params: HttpParams = new HttpParams();\n params = params.append('postId', postId);\n params = params.append('postType', postType);\n return this.getRequest(endpointURL, params);\n }\n\n getReplies(commentId: number): Observable {\n const endpoint = 'comments-service/get-replies';\n const endpointURL = environment.apiUrl + endpoint;\n let params: HttpParams = new HttpParams();\n params = params.append('commentId', commentId);\n return this.getRequest(endpointURL, params);\n }\n\n getAllSimplePostIdsLikedByUser(): Observable {\n const endpoint = 'like-service/get-liked-simple-post-ids';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getAllWorkoutPostIdsLikedByUser(): Observable {\n const endpoint = 'like-service/get-liked-workout-post-ids';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getAllExercises(): Observable {\n const endpoint = 'exercise/get-all-exercises';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getRestDay(): Observable {\n const endpoint = 'workout-controller/get-rest-day';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getBookmarkedWorkouts(): Observable {\n const endpoint = 'workout-controller/get-bookmarked-workouts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getCreatedWorkouts(): Observable {\n const endpoint = 'workout-controller/get-created-workouts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getBookmarkedSimplePosts(): Observable {\n const endpoint = 'posts-service/get-my-bookmarked-simple-posts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getUsersCreatedSimplePosts(userId: number): Observable {\n const endpoint = 'posts-service/get-users-created-simple-posts';\n const endpointURL = environment.apiUrl + endpoint;\n let params: HttpParams = new HttpParams();\n params = params.append('userId', userId);\n return this.getRequest(endpointURL, params);\n }\n\n getMyCreatedSimplePosts(): Observable {\n const endpoint = 'posts-service/get-my-created-simple-posts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getSuggestedWorkouts(excludedIds: number[]): Observable {\n const endpoint = 'workout-controller/get-suggested-workouts';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n for (const excludeWorkoutId of excludedIds) {\n params = params.append('excludedIds[]', excludeWorkoutId);\n }\n return this.getRequest(endpointURL, params);\n }\n\n getFriendsSuggestions(excludedUserIds: number[], pageSize: number): Observable {\n const endpoint = 'login-service/follow-suggestions';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n params = params.append('pageLimit', pageSize);\n for (const userId of excludedUserIds) {\n params = params.append('excludedIds[]', userId);\n }\n return this.getRequest(endpointURL, params);\n }\n\n findFriends(excludedUserIds: number[], searchString: string, pageSize: number): Observable {\n const endpoint = 'login-service/all-users';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams().set('searchString', searchString);\n params = params.append('pageLimit', pageSize);\n for (const userId of excludedUserIds) {\n params = params.append('excludedIds[]', userId);\n }\n return this.getRequest(endpointURL, params);\n }\n\n findHashtags(excludedIds: number[], searchString: string): Observable {\n const endpoint = 'hashtag-controller/get-hashtags';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams().set('searchString', searchString);\n for (const excludedId of excludedIds) {\n params = params.append('excludedIds[]', excludedId);\n }\n return this.getRequest(endpointURL, params);\n }\n\n getUserByCognitoUsername(cognitoUsername: string): Observable {\n const endpoint = 'login-service/get-user-by-cognitousername';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n params = params.append('cognitoUsername', cognitoUsername);\n return this.getRequest(endpointURL, params);\n }\n\n likeComment(commentId: number): Observable {\n const endpoint = 'like-service/like-comment';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, commentId);\n }\n\n loadLikeUsersOfComment(commentDTO: CommentDTO, excludedIds: number[], pageSize: number): Observable {\n const endpoint = 'like-service/get-likers-of-comment';\n const endpointURL = environment.apiUrl + endpoint;\n let params: HttpParams = new HttpParams();\n params = params.append('commentId', commentDTO.commentId);\n params = params.append('pageSize', pageSize);\n for (const excludeWorkoutId of excludedIds) {\n params = params.append('excludedIds[]', excludeWorkoutId);\n }\n return this.getRequest(endpointURL, params);\n }\n\n loadLikeUsersOfPost(postId: number, postType: UPDATE_ENTITY, excludedIds: number[], pageSize: number): Observable {\n const endpoint = 'like-service/get-likers-of-post';\n const endpointURL = environment.apiUrl + endpoint;\n let params: HttpParams = new HttpParams();\n params = params.append('postId', postId);\n params = params.append('postType', postType);\n params = params.append('pageSize', pageSize);\n for (const excludeWorkoutId of excludedIds) {\n params = params.append('excludedIds[]', excludeWorkoutId);\n }\n return this.getRequest(endpointURL, params);\n }\n\n checkIfUsernameIsTaken(username: string): Observable {\n const endpoint = 'login-service/name-already-taken';\n const endpointURL = environment.apiUrl + endpoint;\n const params: HttpParams = new HttpParams().set('username', username);\n return this.getRequest(endpointURL, params);\n }\n\n getAllChatListUsers(excludedIds: number[], pageLimit: number): Observable {\n const endpoint = 'chat-controller/get-chat-list-users';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams().set('pageLimit', pageLimit);\n for (const id of excludedIds) {\n params = params.append('excludedIds[]', id);\n }\n return this.getRequest(endpointURL, params);\n }\n getChatListUsersForStatsAccessManagement(excludedIds: number[], pageLimit: number): Observable {\n const endpoint = 'chat-controller/get-chat-list-users-for-statistics-access';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams().set('pageLimit', pageLimit);\n for (const id of excludedIds) {\n params = params.append('excludedIds[]', id);\n }\n return this.getRequest(endpointURL, params);\n }\n getAllChatListUsersSearch(excludedIds: number[], searchTerm: string, pageLimit: number): Observable {\n const endpoint = 'chat-controller/get-chat-list-users-search';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams().set('searchString', searchTerm);\n params = params.append('pageLimit', pageLimit);\n for (const id of excludedIds) {\n params = params.append('excludedIds[]', id);\n }\n return this.getRequest(endpointURL, params);\n }\n getChatListUsersSearchForStatsAccessManagement(excludedIds: number[], searchTerm: string, pageLimit: number): Observable {\n const endpoint = 'chat-controller/get-chat-list-users-search-for-statistics-access';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams().set('searchString', searchTerm);\n params = params.append('pageLimit', pageLimit);\n for (const id of excludedIds) {\n params = params.append('excludedIds[]', id);\n }\n return this.getRequest(endpointURL, params);\n }\n\n getAllMessagesOfConversation(otherUserId: number, excludedIds: number[], pageLimit: number): Observable {\n const endpoint = 'message-service/get-conversation';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams().set('otherUserId', otherUserId);\n params = params.append('pageLimit', pageLimit);\n for (const id of excludedIds) {\n params = params.append('excludedIds[]', id);\n }\n return this.getRequest(endpointURL, params);\n }\n\n getPostsFromChat(chatUserId: number): Observable {\n const endpoint = 'posts-service/get-posts-from-chat';\n const endpointURL = environment.apiUrl + endpoint;\n const params: HttpParams = new HttpParams().set('chatUserId', chatUserId);\n return this.getRequest(endpointURL, params);\n }\n\n // todo: that should be a post request!\n createEndpoint(token: string): Observable {\n const endpoint = 'notification-service/create-application-endpoint';\n const endpointURL = environment.apiUrl + endpoint;\n const params: HttpParams = new HttpParams().set('token', token);\n return this.getRequest(endpointURL, params);\n }\n\n getAllNews(excludedIds: number[]): Observable {\n const endpoint = 'news-service/get-all-news';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n for (const id of excludedIds) {\n params = params.append('excludedIds[]', id);\n }\n return this.getRequest(endpointURL, params);\n }\n\n getUnreadMessagesCount(): Observable {\n const endpoint = 'message-service/get-unread-messages-count';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getUnreadNewsCount(): Observable {\n const endpoint = 'news-service/get-unread-news-count';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n setMessagesFromUserAsChecked(chatPartnerId: number): Observable {\n const params = new HttpParams().set('chatPartnerId', chatPartnerId);\n const endpoint = 'message-service/set-messages-from-user-as-checked';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, params);\n\n }\n\n getSinglePost(postType: string, postId: number): Observable {\n const endpoint = 'posts-service/get-single-post';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams().set('postType', postType.valueOf());\n params = params.append('postId', postId);\n return this.getRequest(endpointURL, params);\n }\n\n deleteNewsEntry(newsId: number): Observable {\n const params = new HttpParams().set('newsId', newsId);\n const endpoint = 'news-service/delete-news-entry';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, params);\n }\n\n editWorkout(dayDTO: DayDTO): Observable {\n const endpoint = 'save-workout-controller/edit-workout';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postWithEventRequest2(endpointURL, dayDTO, null);\n }\n\n getAllExerciseGroups(): Observable {\n const endpoint = 'exercise/get-all-exercise-groups';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n deleteWorkout(postId: number): Observable {\n const endpoint = 'save-workout-controller/delete-workout';\n const endpointURL = environment.apiUrl + endpoint;\n const params = new HttpParams().set('postId', postId);\n return this.postWithEventRequest2(endpointURL, null, params);\n }\n\n deleteSimplePost(postId: number): Observable {\n const endpoint = 'simple-post-controller/delete-simple-post';\n const endpointURL = environment.apiUrl + endpoint;\n const params = new HttpParams().set('postId', postId);\n return this.postWithEventRequest2(endpointURL, null, params);\n }\n\n removeWorkoutFromAllMyLists(postId: number): Observable {\n const endpoint = 'save-workout-controller/remove-from-all-my-lists';\n const endpointURL = environment.apiUrl + endpoint;\n const params = new HttpParams().set('postId', postId);\n return this.postWithEventRequest2(endpointURL, null, params);\n }\n\n removeSimplePostFromAllMyLists(postId: number): Observable {\n const endpoint = 'simple-post-controller/remove-from-all-my-lists';\n const endpointURL = environment.apiUrl + endpoint;\n const params = new HttpParams().set('postId', postId);\n return this.postWithEventRequest2(endpointURL, null, params);\n }\n\n getFollowers(userToGetFollowersFrom: UserDTO, excludedUserIds: number[], pageSize: number): Observable {\n const endpoint = 'login-service/get-followers';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n for (const userId of excludedUserIds) {\n params = params.append('excludedIds[]', userId);\n }\n params = params.append('userId', userToGetFollowersFrom.id);\n params = params.append('pageSize', pageSize);\n return this.getRequest(endpointURL, params);\n }\n\n getFollows(userToGetFollowsFrom: UserDTO, excludedUserIds: number[], pageSize: number): Observable {\n const endpoint = 'login-service/get-follows';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n for (const userId of excludedUserIds) {\n params = params.append('excludedIds[]', userId);\n }\n params = params.append('userId', userToGetFollowsFrom.id);\n params = params.append('pageSize', pageSize);\n return this.getRequest(endpointURL, params);\n }\n\n savePayPalUser(payPalUser: PayPalDTO): Observable {\n const endpoint = 'pay-pal-controller/save-pay-pal-user';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postWithEventRequest2(endpointURL, payPalUser);\n }\n\n createSetContainers(statsData: StatisticsGenerationDataDTO): Observable {\n const endpoint = 'data-generation/generate-workout-sets';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, statsData);\n }\n\n deleteStatisticData(userId: number): Observable {\n const endpoint = 'data-generation/delete-Workout-sets';\n const endpointURL = environment.apiUrl + endpoint;\n let params = new HttpParams();\n params = params.append('userId', userId);\n return this.deleteRequest(endpointURL, params);\n }\n\n getWorkoutsForAdmin(params: HttpParams): Observable {\n const endpoint = 'admin-controller/get-workouts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL, params);\n }\n\n getSimplePostsForAdmin(params: HttpParams): Observable {\n const endpoint = 'admin-controller/get-simple-posts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL, params);\n }\n\n reportSimplePost(simplePostId: number): Observable {\n const params = new HttpParams().set('simplePostId', simplePostId);\n const endpoint = 'reporting-controller/report-simple-post';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, params);\n }\n\n reportWorkout(workoutId: number): Observable {\n const params = new HttpParams().set('workoutId', workoutId);\n const endpoint = 'reporting-controller/report-workout';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL, params);\n }\n\n getMyReportedWorkoutIds(): Observable {\n const endpoint = 'reporting-controller/get-my-reported-workout-ids';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n getMyReportedSimplePostIds(): Observable {\n const endpoint = 'reporting-controller/get-my-reported-simple-post-ids';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n adminDeleteWorkout(postId: number): Observable {\n const endpoint = 'admin-controller/delete-workout';\n const endpointURL = environment.apiUrl + endpoint;\n const params = new HttpParams().set('workoutId', postId);\n return this.postWithEventRequest2(endpointURL, null, params);\n }\n\n adminDeleteSimplePost(postId: number): Observable {\n const endpoint = 'admin-controller/delete-simple-post';\n const endpointURL = environment.apiUrl + endpoint;\n const params = new HttpParams().set('simplePostId', postId);\n return this.postWithEventRequest2(endpointURL, null, params);\n }\n\n getReportedWorkoutsForAdmin(params: HttpParams): Observable {\n const endpoint = 'admin-controller/get-reported-workouts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL, params);\n }\n\n getReportedSimplePostsForAdmin(params: HttpParams): Observable {\n const endpoint = 'admin-controller/get-reported-simple-posts';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL, params);\n }\n\n getHasPremiumSubscription(): Observable {\n const endpoint = 'login-service/get-has-premium-subscription';\n const endpointURL = environment.apiUrl + endpoint;\n return this.getRequest(endpointURL);\n }\n\n setWorkoutStartTime(dayInWorkoutId: number): Observable {\n const endpoint = 'workout-controller/set-workout-start-time';\n const endpointURL = environment.apiUrl + endpoint;\n const httpParams: HttpParams = new HttpParams().set('dayInWorkoutId', dayInWorkoutId);\n return this.postRequest(endpointURL, httpParams);\n }\n\n deleteAccountRequest(): Observable {\n const endpoint = 'login-service/delete-account-request';\n const endpointURL = environment.apiUrl + endpoint;\n return this.postRequest(endpointURL);\n }\n\n private getRequest(endpointUrl: string, params?: HttpParams): Observable {\n return new Observable(observer => {\n this.firebaseLoginService.getJwtToken().then(bearer => {\n const headers = new HttpHeaders().set('authorization', 'Bearer ' + bearer);\n if (params) {\n this.httpClient.get(endpointUrl, {params, headers}).subscribe(page => {\n observer.next(page);\n });\n } else {\n this.httpClient.get(endpointUrl, {headers}).subscribe(page => {\n observer.next(page);\n });\n }\n });\n });\n }\n\n postWithEventRequest2(endpointUrl: string, body: T, params?: HttpParams): Observable {\n return new Observable(observer => {\n this.firebaseLoginService.getJwtToken().then(bearer => {\n const headers = new HttpHeaders().set('authorization', 'Bearer ' + bearer);\n this.httpClient.post(endpointUrl, body, {headers, observe: 'response', params}).pipe(\n map(response => {\n return response.body as Q;\n }), catchError(error => {\n console.log(error);\n return throwError(() => new Error(error.error.message));\n })\n ).subscribe({\n next: res => observer.next(res),\n error: e => {\n observer.error(e)\n }\n }\n );\n });\n });\n }\n\n private postRequest(endpointUrl: string, params?: any): Observable {\n return new Observable(observer => {\n this.firebaseLoginService.getJwtToken().then(bearer => {\n const headers = new HttpHeaders().set('authorization', 'Bearer ' + bearer);\n this.httpClient.post(endpointUrl, params, {headers}).subscribe(res => {\n observer.next(res);\n });\n });\n });\n }\n\n private deleteRequest(endpointUrl: string, params?: any): Observable {\n return new Observable(observer => {\n this.firebaseLoginService.getJwtToken().then(bearer => {\n const headers = new HttpHeaders().set('authorization', 'Bearer ' + bearer);\n this.httpClient.delete(endpointUrl, {params, headers}).subscribe(res => {\n observer.next(res);\n });\n });\n });\n }\n\n private postWithEventRequest(endpointUrl: string, formData: FormData): Observable> {\n return new Observable>(observer => {\n this.firebaseLoginService.getJwtToken().then(bearer => {\n const headers = new HttpHeaders().set('authorization', 'Bearer ' + bearer);\n const req = new HttpRequest('POST', endpointUrl, formData, {\n headers,\n reportProgress: true,\n responseType: 'json'\n });\n this.httpClient.request(req).subscribe(res => {\n observer.next(res);\n });\n });\n });\n }\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LogService {\n logText = '';\n serviceInitTime = new Date().getTime();\n\n constructor() {\n }\n pushLine(className: string, line: string): void {\n const d: Date = new Date();\n let newLines = '';\n d.getMilliseconds();\n newLines += d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds() + '.' + d.getMilliseconds() + '\\n';\n newLines += line + '\\n';\n newLines += '\\n';\n this.logText = newLines + this.logText;\n }\n delete(): void {\n this.logText = '';\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Storage} from '@ionic/storage-angular';\nimport CordovaSQLiteDriver from 'localforage-cordovasqlitedriver';\nimport {BehaviorSubject, ReplaySubject} from 'rxjs';\nimport {CacheKey} from '../../model/enums/cache-key';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageService {\n\n private localStorage: ReplaySubject = new ReplaySubject(1);\n private instance: BehaviorSubject = new BehaviorSubject(null);\n\n constructor(private storage: Storage) {\n this.init().then(() => this.instance.next(this));\n }\n\n async init(): Promise {\n await this.storage.defineDriver(CordovaSQLiteDriver);\n const storage = await this.storage.create();\n this.localStorage.next(storage);\n }\n\n public getInstance(): BehaviorSubject {\n return this.instance;\n }\n\n public set(key: CacheKey, value: any): Promise {\n return new Promise((resolve, reject) => {\n this.localStorage.subscribe(storage => {\n storage.set(key.stringRepresentation, value).then(a => resolve(a));\n });\n });\n }\n\n public get(key: CacheKey): Promise {\n return new Promise((resolve, reject) => {\n this.localStorage.subscribe(storage => {\n resolve(storage.get(key.stringRepresentation));\n });\n });\n }\n public keys(): Promise {\n return new Promise((resolve, reject) => {\n this.localStorage.subscribe(storage => {\n resolve(storage.keys());\n });\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {environment} from '../../../environments/environment';\nimport {BehaviorSubject} from 'rxjs';\nimport {ChatMessageDTO} from '../../model/swagger-model/chatMessageDTO';\nimport {NewsDTO} from '../../model/swagger-model/newsDTO';\nimport {WebsocketServiceInterface} from './websocket-service-interface';\nimport {FirebaseGlobalService} from \"../firebase-login/firebase-global.service\";\nimport {LogService} from \"../log-service/log.service\";\nimport {Client} from \"@stomp/stompjs\";\nimport * as SockJS from 'sockjs-client';\nimport {WebsocketMessageWrapperDTO} from \"../../model/internal-model/WebsocketMessageWrapperDTO\";\nimport {Frame} from \"stompjs\";\nimport {StompSubscription} from \"@stomp/stompjs/src/stomp-subscription\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WebsocketService implements WebsocketServiceInterface {\n private incomingChatMessage: BehaviorSubject = new BehaviorSubject(null);\n private incomingNews: BehaviorSubject = new BehaviorSubject(null);\n private stompClient: Client;\n private stompSubscription: StompSubscription;\n\n constructor(private firebaseLoginService: FirebaseGlobalService,\n private logService: LogService) {\n }\n\n sendToSpecificUser(chatMessage: ChatMessageDTO): void {\n this.logService.pushLine('', 'send to specific user');\n this.logService.pushLine('', 'connected: ' + String(this.stompClient.connected));\n this.logService.pushLine('', 'active: ' + String(this.stompClient.connected));\n this.logService.pushLine('', 'version: ' + String(this.stompClient.connectedVersion));\n this.stompClient.publish({\n destination: '/app/secured/userchat',\n body: JSON.stringify(chatMessage)\n });\n }\n\n async connectToWebsocket(): Promise {\n await this.releaseWebsocket();\n this.logService.pushLine('', 'connect to websocket attempt');\n const bearer: string = await this.firebaseLoginService.getJwtToken();\n this.logService.pushLine('', 'bearer: ' + bearer.substring(0, 10) + '...');\n if (bearer) {\n this.stompClient = new Client({\n webSocketFactory: () => {\n return new SockJS(environment.apiUrl + 'authenticate');\n },\n connectHeaders: {\n 'authorization': 'Bearer ' + bearer,\n },\n debug: (str) => {\n // this.logService.pushLine('', str);\n console.log(str);\n },\n reconnectDelay: 5000,\n heartbeatIncoming: 4000,\n heartbeatOutgoing: 4000,\n });\n this.websocketEventHandling();\n this.stompClient.activate();\n } else {\n return Promise.reject('no bearer token found');\n }\n }\n\n getIncomingChatMessage(): BehaviorSubject {\n return this.incomingChatMessage;\n }\n\n getIncomingNews(): BehaviorSubject {\n return this.incomingNews;\n }\n\n private websocketEventHandling(): any {\n this.stompClient.onConnect = (fram: Frame) => {\n this.stompSubscription?.unsubscribe();\n this.stompSubscription = this.stompClient.subscribe('/users/secured/queue/messages', (message: any) => {\n const msg: WebsocketMessageWrapperDTO = JSON.parse(message.body);\n if (msg.chatMessageDTO) {\n this.incomingChatMessage.next(msg.chatMessageDTO);\n } else {\n this.incomingNews.next(msg.newsDTO);\n }\n });\n }\n this.stompClient.onStompError = async (frame) => {\n console.error(`Error: ${frame.headers.message}`);\n const bearer: string = await this.firebaseLoginService.getJwtToken();\n this.stompClient.connectHeaders = {\n 'authorization': 'Bearer ' + bearer,\n }\n this.logService.pushLine('', `Error: ${frame.headers.message}`);\n };\n\n// Handle disconnections\n this.stompClient.onWebSocketClose = async () => {\n console.log('Disconnected from the server');\n this.logService.pushLine('', 'Disconnected from the server');\n const bearer: string = await this.firebaseLoginService.getJwtToken();\n this.stompClient.connectHeaders = {\n 'authorization': 'Bearer ' + bearer,\n }\n this.reconnectIfNoMoreConnected();\n };\n\n // Handle connection errors\n this.stompClient.onWebSocketError = async (event) => {\n console.error(`WebSocket Error: ${event}`);\n this.logService.pushLine('', `WebSocket Error: ${event}`);\n const bearer: string = await this.firebaseLoginService.getJwtToken();\n this.stompClient.connectHeaders = {\n 'authorization': 'Bearer ' + bearer,\n }\n };\n }\n\n async releaseWebsocket(): Promise {\n this.stompSubscription?.unsubscribe();\n this.stompClient?.forceDisconnect();\n await this.stompClient?.deactivate();\n }\n\n reconnectIfNoMoreConnected(): void {\n this.logService.pushLine('', 'in reconnect attempt with active: ' + this.stompClient.active + ' and state: ' + this.stompClient.state.toString());\n if (!this.stompClient.active) {\n this.connectToWebsocket().catch((reason: any) => {\n setTimeout(() => {\n this.logService.pushLine('', 'retry connect to websocket');\n this.reconnectIfNoMoreConnected();\n }, 500);\n });\n }\n }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nimport {HttpRealService} from '../app/providers/http-real.service';\nimport {\n StatisticsInitializerService\n} from '../app/pages/statistics/providers/statistics-initializer-service/statistics-initializer.service';\nimport {WorkoutCreationService} from '../app/pages/add/providers/workout-creation-service/workout-creation.service';\nimport {CacheService} from '../app/providers/cache-service/cache.service';\nimport {WebsocketService} from '../app/providers/websocket-service/websocket.service';\nimport {GlobalDataService} from \"../app/providers/global-data-service/global-data.service\";\nimport {RoutineCreationService} from \"../app/pages/add/providers/routine-creation-service/routine-creation.service\";\nimport {\n SimplePostCreationService\n} from \"../app/pages/add/providers/simple-post-creation-service/simple-post-creation.service\";\nimport {PlayWorkoutService} from \"../app/pages/play-workout/providers/play-workout-service/play-workout.service\";\n\nexport const environment = {\n production: false,\n providers: [\n // {provide: 'HttpServiceInterface', useClass: HttpMockService}\n { provide: 'HttpServiceInterface', useClass: HttpRealService },\n { provide: 'WebsocketServiceInterface', useClass: WebsocketService },\n { provide: 'WorkoutCreationServiceInterface', useClass: WorkoutCreationService },\n { provide: 'RoutineCreationServiceInterface', useClass: RoutineCreationService },\n { provide: 'SimplePostCreationServiceInterface', useClass: SimplePostCreationService },\n { provide: 'StatisticsInitializerServiceInterface', useClass: StatisticsInitializerService },\n { provide: 'PlayWorkoutServiceInterface', useClass: PlayWorkoutService },\n { provide: 'CacheServiceInterface', useClass: CacheService },\n { provide: 'GlobalDataServiceInterface', useClass: GlobalDataService},\n ],\n // apiUrl: 'http://localhost:8000/',\n // apiUrl: 'http://ec2-35-176-193-7.eu-west-2.compute.amazonaws.com:8080/',\n apiUrl: 'https://toao-workouts-backend-v1.com/',\n // apiUrl: 'http://www.toao-workouts-backend.com:8080/',\n // apiUrl: 'http://ec2-18-135-104-224.eu-west-2.compute.amazonaws.com:8000/',\n fileserverUrl: 'https://d3swl7aohem68p.cloudfront.net/',\n directBucketUrl: 'https://toao-transformed-distribution-bucket.s3.eu-west-1.amazonaws.com/',\n // fileserverUrl: 'https://toao-transformed-data.s3.eu-west-2.amazonaws.com/',\n envName: '',\n // apiUrl: 'http://localhost:3000/'\n firebaseConfig: {\n apiKey: \"AIzaSyDXT-8m93yUHcNXhZidtVi_BFdUz4mxOYY\",\n authDomain: \"toao-4c973.firebaseapp.com\",\n projectId: \"toao-4c973\",\n storageBucket: \"toao-4c973.appspot.com\",\n messagingSenderId: \"717866375276\",\n appId: \"1:717866375276:web:67269ee4b81367597ae049\",\n measurementId: \"G-2ERJK8NBLQ\"\n }\n};\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err));\n","var map = {\n\t\"./ion-accordion_2.entry.js\": [\n\t\t70079,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-accordion_2_entry_js\"\n\t],\n\t\"./ion-action-sheet.entry.js\": [\n\t\t25593,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-action-sheet_entry_js\"\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t13225,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-alert_entry_js\"\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t4812,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-app_8_entry_js\"\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t86655,\n\t\t\"node_modules_ionic_core_dist_esm_ion-avatar_3_entry_js\"\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t44856,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-back-button_entry_js\"\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t13059,\n\t\t\"node_modules_ionic_core_dist_esm_ion-backdrop_entry_js\"\n\t],\n\t\"./ion-breadcrumb_2.entry.js\": [\n\t\t58648,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-breadcrumb_2_entry_js\"\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t98308,\n\t\t\"node_modules_ionic_core_dist_esm_ion-button_2_entry_js\"\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t44690,\n\t\t\"node_modules_ionic_core_dist_esm_ion-card_5_entry_js\"\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t64090,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-checkbox_entry_js\"\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t36214,\n\t\t\"node_modules_ionic_core_dist_esm_ion-chip_entry_js\"\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t69447,\n\t\t\"node_modules_ionic_core_dist_esm_ion-col_3_entry_js\"\n\t],\n\t\"./ion-datetime-button.entry.js\": [\n\t\t17950,\n\t\t\"default-node_modules_ionic_core_dist_esm_data-b8307d99_js-node_modules_ionic_core_dist_esm_th-33339e\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-datetime-button_entry_js\"\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t79689,\n\t\t\"default-node_modules_ionic_core_dist_esm_data-b8307d99_js-node_modules_ionic_core_dist_esm_th-33339e\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-datetime_3_entry_js\"\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t18840,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-fab_3_entry_js\"\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t40749,\n\t\t\"node_modules_ionic_core_dist_esm_ion-img_entry_js\"\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t69667,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-infinite-scroll_2_entry_js\"\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t83288,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-input_entry_js\"\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t35473,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-item-option_3_entry_js\"\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t53634,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-item_8_entry_js\"\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t22855,\n\t\t\"node_modules_ionic_core_dist_esm_ion-loading_entry_js\"\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t495,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-menu_3_entry_js\"\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t58737,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-modal_entry_js\"\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t99632,\n\t\t\"node_modules_ionic_core_dist_esm_ion-nav_2_entry_js\"\n\t],\n\t\"./ion-picker-column-internal.entry.js\": [\n\t\t54446,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-picker-column-internal_entry_js\"\n\t],\n\t\"./ion-picker-internal.entry.js\": [\n\t\t32275,\n\t\t\"node_modules_ionic_core_dist_esm_ion-picker-internal_entry_js\"\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t48050,\n\t\t\"node_modules_ionic_core_dist_esm_ion-popover_entry_js\"\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t18994,\n\t\t\"node_modules_ionic_core_dist_esm_ion-progress-bar_entry_js\"\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t23592,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-radio_2_entry_js\"\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t35454,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-range_entry_js\"\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t290,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-refresher_2_entry_js\"\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t92666,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-reorder_2_entry_js\"\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t64816,\n\t\t\"node_modules_ionic_core_dist_esm_ion-ripple-effect_entry_js\"\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t45534,\n\t\t\"node_modules_ionic_core_dist_esm_ion-route_4_entry_js\"\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t94902,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-searchbar_entry_js\"\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t91938,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-segment_2_entry_js\"\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t78179,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-select_3_entry_js\"\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t61624,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-spinner_entry_js\"\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t19989,\n\t\t\"node_modules_ionic_core_dist_esm_ion-split-pane_entry_js\"\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t28902,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-tab-bar_2_entry_js\"\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t70199,\n\t\t\"node_modules_ionic_core_dist_esm_ion-tab_2_entry_js\"\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t48395,\n\t\t\"node_modules_ionic_core_dist_esm_ion-text_entry_js\"\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t96357,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-textarea_entry_js\"\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t38268,\n\t\t\"node_modules_ionic_core_dist_esm_ion-toast_entry_js\"\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t15269,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-toggle_entry_js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 50863;\nmodule.exports = webpackAsyncContext;","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\", \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".header-wrapper {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n background-color: #F1F1F1;\\n height: 40px;\\n}\\n.header-wrapper h1 {\\n font-size: 12px;\\n text-align: center;\\n font-family: Montserrat-Medium;\\n padding: 0;\\n margin: 2px;\\n}\\n\\n.ok-btn-wrapper {\\n display: flex;\\n justify-content: center;\\n}\\n.ok-btn-wrapper ion-button {\\n --background: linear-gradient(135deg, #A4E033 0%, #00B3CA 100%);\\n --color: white;\\n --padding-bottom: 0;\\n --padding-top: 0;\\n height: 30px;\\n width: 100px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/components/workout-time-correcter/workout-time-correcter.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAA;EACA,sBAAA;EACA,uBAAA;EACA,mBAAA;EACA,yBAAA;EACA,YAAA;AACF;AACE;EACE,eAAA;EACA,kBAAA;EACA,8BAAA;EACA,UAAA;EACA,WAAA;AACJ;;AAEA;EACE,aAAA;EACA,uBAAA;AACF;AACE;EACE,+DAAA;EACA,cAAA;EACA,mBAAA;EACA,gBAAA;EACA,YAAA;EACA,YAAA;AACJ\",\"sourcesContent\":[\".header-wrapper {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n background-color: #F1F1F1;\\n height: 40px;\\n\\n h1 {\\n font-size: 12px;\\n text-align: center;\\n font-family: Montserrat-Medium;\\n padding: 0;\\n margin: 2px;\\n }\\n}\\n.ok-btn-wrapper {\\n display: flex;\\n justify-content: center;\\n\\n ion-button {\\n --background: linear-gradient(135deg, #A4E033 0%, #00B3CA 100%);\\n --color: white;\\n --padding-bottom: 0;\\n --padding-top: 0;\\n height: 30px;\\n width: 100px;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".video-wrapper {\\n width: 100%;\\n background-color: var(--color-set-input-background);\\n position: relative;\\n display: block;\\n}\\n\\n.video-wrapper-landscape {\\n height: 100%;\\n}\\n\\n.video-wrapper-portrait {\\n aspect-ratio: 16/9;\\n max-width: 600px;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\n.initial-image-wrapper {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n z-index: 2;\\n background-color: #000000;\\n}\\n.initial-image-wrapper img {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n\\n.spinner-wrapper {\\n opacity: 0.3;\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n z-index: 3;\\n background-color: #000000;\\n}\\n.spinner-wrapper img {\\n width: 100%;\\n height: 100%;\\n}\\n\\n#next-btn {\\n z-index: 1;\\n color: red;\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n}\\n\\n.video {\\n max-width: 100%;\\n max-height: 100%;\\n height: 0;\\n width: 100%;\\n margin-left: auto;\\n margin-right: auto;\\n display: block;\\n}\\n\\n.full-video-backdrop {\\n display: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.7);\\n z-index: 2;\\n}\\n\\n#top-controls-wrapper {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100px;\\n background: linear-gradient(180deg, #000000 0%, rgba(0, 0, 0, 0) 100%);\\n z-index: 3;\\n overflow: hidden;\\n}\\n\\n.full-screen-btn {\\n z-index: 1;\\n position: absolute;\\n top: 0;\\n right: 0;\\n}\\n.full-screen-btn img {\\n width: 20px;\\n height: 20px;\\n}\\n\\n#full-screen-input-wrapper {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 1;\\n top: 0;\\n background-color: rgba(0, 0, 0, 0.7);\\n}\\n\\n#full-screen-timer-wrapper {\\n position: absolute;\\n top: 0;\\n margin: 0 0 0 0;\\n width: 100%;\\n height: calc(100% - 80px);\\n z-index: 2;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n#full-screen-timer-wrapper #full-screen-timer-inner-wrapper {\\n border-radius: 20px;\\n margin: 20px 0 0 0;\\n max-width: 100%;\\n max-height: 100%;\\n width: 400px;\\n height: 400px;\\n background: rgba(255, 255, 255, 0.25);\\n backdrop-filter: blur(4px);\\n -webkit-backdrop-filter: blur(4px);\\n}\\n\\n.colored-bg {\\n --background: linear-gradient(135deg, #A4E033 0%, #00B3CA 100%);\\n}\\n\\n.white-bg {\\n --background: white;\\n}\\n\\n.time-based-animation-timer-wrapper {\\n height: 80px;\\n width: 80px;\\n border-radius: 50%;\\n position: absolute;\\n top: 5px;\\n left: 5px;\\n z-index: 99999999;\\n background: radial-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0));\\n}\\n\\n.between-supersets-break-wrapper {\\n height: calc(100% - 120px);\\n width: 100%;\\n position: absolute;\\n top: 60px;\\n left: 0;\\n z-index: 99999999;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.play-workout-timer-wrapper {\\n position: absolute;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background-color: #FFFFFF;\\n}\\n.play-workout-timer-wrapper .play-workout-timer-inner-wrapper {\\n width: 350px;\\n height: 350px;\\n max-height: 100%;\\n max-width: 100%;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/pages/play-workout/play-workout.page.scss\"],\"names\":[],\"mappings\":\"AACA;EACE,WAAA;EACA,mDAAA;EACA,kBAAA;EACA,cAAA;AAAF;;AAGA;EACE,YAAA;AAAF;;AAGA;EACE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,kBAAA;AAAF;;AAEA;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,UAAA;EACA,yBAAA;AACF;AAAE;EACE,WAAA;EACA,YAAA;EACA,iBAAA;AAEJ;;AACA;EACE,YAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,UAAA;EACA,yBAAA;AAEF;AADE;EACE,WAAA;EACA,YAAA;AAGJ;;AACA;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;AAEF;;AACA;EACE,eAAA;EACA,gBAAA;EACA,SAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;AAEF;;AAAA;EACE,aAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,oCAAA;EACA,UAAA;AAGF;;AADA;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,aAAA;EACA,sEAAA;EACA,UAAA;EACA,gBAAA;AAIF;;AAFA;EACE,UAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;AAKF;AAJE;EACE,WAAA;EACA,YAAA;AAMJ;;AAHA;EACE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,MAAA;EACA,oCAAA;AAMF;;AAJA;EACE,kBAAA;EACA,MAAA;EACA,eAAA;EACA,WAAA;EACA,yBAAA;EACA,UAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;AAOF;AANE;EACE,mBAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,YAAA;EACA,aAAA;EACA,qCAAA;EACA,0BAAA;EACA,kCAAA;AAQJ;;AALA;EACE,+DAAA;AAQF;;AALA;EACE,mBAAA;AAQF;;AANA;EACE,YAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,iBAAA;EACA,iEAAA;AASF;;AAPA;EACE,0BAAA;EACA,WAAA;EACA,kBAAA;EACA,SAAA;EACA,OAAA;EACA,iBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;AAUF;;AANA;EACE,kBAAA;EACA,WAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,yBAAA;AASF;AARE;EACE,YAAA;EACA,aAAA;EACA,gBAAA;EACA,eAAA;AAUJ\",\"sourcesContent\":[\"\\n.video-wrapper {\\n width: 100%;\\n background-color: var(--color-set-input-background);\\n position: relative;\\n display: block;\\n}\\n\\n.video-wrapper-landscape {\\n height: 100%;\\n}\\n\\n.video-wrapper-portrait {\\n aspect-ratio: 16 / 9;\\n max-width: 600px;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n.initial-image-wrapper {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n z-index: 2;\\n background-color: #000000;\\n img {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n }\\n}\\n.spinner-wrapper {\\n opacity: 0.3;\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n z-index: 3;\\n background-color: #000000;\\n img {\\n width: 100%;\\n height: 100%;\\n }\\n}\\n\\n#next-btn {\\n z-index: 1;\\n color: red;\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n}\\n\\n.video {\\n max-width: 100%;\\n max-height: 100%;\\n height: 0;\\n width: 100%;\\n margin-left: auto;\\n margin-right: auto;\\n display: block;\\n}\\n.full-video-backdrop {\\n display: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0,0,0,0.7);\\n z-index: 2;\\n}\\n#top-controls-wrapper {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100px;\\n background: linear-gradient(180deg, #000000 0%, #00000000 100%);\\n z-index: 3;\\n overflow: hidden;\\n}\\n.full-screen-btn {\\n z-index: 1;\\n position: absolute;\\n top: 0;\\n right: 0;\\n img {\\n width: 20px;\\n height: 20px;\\n }\\n}\\n#full-screen-input-wrapper {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 1;\\n top: 0;\\n background-color: rgba(0, 0, 0, 0.7);\\n}\\n#full-screen-timer-wrapper {\\n position: absolute;\\n top: 0;\\n margin: 0 0 0 0;\\n width: 100%;\\n height: calc(100% - 80px);\\n z-index: 2;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n #full-screen-timer-inner-wrapper {\\n border-radius: 20px;\\n margin: 20px 0 0 0;\\n max-width: 100%;\\n max-height: 100%;\\n width: 400px;\\n height: 400px;\\n background: rgba(255, 255, 255, 0.25);\\n backdrop-filter: blur(4px);\\n -webkit-backdrop-filter: blur(4px);\\n }\\n}\\n.colored-bg {\\n --background: linear-gradient(135deg, #A4E033 0%, #00B3CA 100%);\\n}\\n\\n.white-bg {\\n --background: white;\\n}\\n.time-based-animation-timer-wrapper {\\n height: 80px;\\n width: 80px;\\n border-radius: 50%;\\n position: absolute;\\n top: 5px;\\n left: 5px;\\n z-index: 99999999;\\n background: radial-gradient(rgba(0,0,0,0.3), rgba(0,0,0,0));\\n}\\n.between-supersets-break-wrapper {\\n height: calc(100% - 120px);\\n width: 100%;\\n position: absolute;\\n top: 60px;\\n left: 0;\\n z-index: 99999999;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n\\n.play-workout-timer-wrapper {\\n position: absolute;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background-color: #FFFFFF;\\n .play-workout-timer-inner-wrapper {\\n width: 350px;\\n height: 350px;\\n max-height: 100%;\\n max-width: 100%;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#large-skip-btn {\\n position: absolute;\\n left: calc(50% - 40px);\\n top: calc(50% - 40px);\\n width: 80px;\\n height: 80px;\\n font-size: 50px;\\n --padding-end: 0;\\n --padding-start: 0;\\n --color: #ffffff;\\n}\\n\\n.page-footer {\\n height: 50px;\\n overflow-y: visible;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n box-shadow: 0 0 20px 3px #d0d0d0;\\n background-color: white;\\n}\\n.page-footer ion-button {\\n --box-shadow: none;\\n height: 30px;\\n --padding-start: 7px;\\n --padding-end: 7px;\\n margin: 0 5px 0 5px;\\n}\\n.page-footer ion-button ion-label {\\n font-family: Montserrat-Semi-Bold;\\n font-size: 11px;\\n margin-left: 10px;\\n}\\n.page-footer ion-button ion-icon {\\n font-size: 11px;\\n}\\n\\n.action-btn {\\n --background: linear-gradient(135deg, #A4E033 0%, #00B3CA 100%);\\n}\\n\\n.inactive-btn {\\n opacity: 0.3;\\n}\\n\\n.break-btn-wrapper {\\n display: flex;\\n flex-direction: column;\\n width: 100px;\\n position: absolute;\\n bottom: 0;\\n align-items: center;\\n justify-content: flex-end;\\n}\\n.break-btn-wrapper ion-button {\\n width: 45px;\\n height: 45px;\\n --color: #ffffff;\\n color: #ffffff;\\n}\\n.break-btn-wrapper ion-button img {\\n width: 20px;\\n height: 20px;\\n}\\n.break-btn-wrapper ion-label {\\n font-family: Montserrat-Semi-Bold;\\n font-size: 11px;\\n color: #47C788;\\n}\\n\\n.center {\\n left: calc(50% - 50px);\\n}\\n\\n.left {\\n left: 20px;\\n}\\n\\n.keyboard-footer {\\n height: auto;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/pages/play-workout/portrait-styles.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAA;EACA,sBAAA;EACA,qBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;AACF;;AACA;EACE,YAAA;EACA,mBAAA;EACA,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,gCAAA;EACA,uBAAA;AAEF;AADE;EAEE,kBAAA;EACA,YAAA;EACA,oBAAA;EACA,kBAAA;EACA,mBAAA;AAEJ;AADI;EACE,iCAAA;EACA,eAAA;EACA,iBAAA;AAGN;AADI;EACE,eAAA;AAGN;;AACA;EACE,+DAAA;AAEF;;AAAA;EACE,YAAA;AAGF;;AADA;EACE,aAAA;EACA,sBAAA;EACA,YAAA;EACA,kBAAA;EAEA,SAAA;EACA,mBAAA;EACA,yBAAA;AAGF;AAFE;EACE,WAAA;EACA,YAAA;EACA,gBAAA;EACA,cAAA;AAIJ;AAHI;EACE,WAAA;EACA,YAAA;AAKN;AAFE;EACE,iCAAA;EACA,eAAA;EACA,cAAA;AAIJ;;AADA;EACE,sBAAA;AAIF;;AAFA;EACE,UAAA;AAKF;;AAHA;EACE,YAAA;AAMF\",\"sourcesContent\":[\"#large-skip-btn {\\n position: absolute;\\n left: calc(50% - 40px);\\n top: calc(50% - 40px);\\n width: 80px;\\n height: 80px;\\n font-size: 50px;\\n --padding-end: 0;\\n --padding-start: 0;\\n --color: #ffffff;\\n}\\n.page-footer {\\n height: 50px;\\n overflow-y: visible;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n box-shadow: 0 0 20px 3px #d0d0d0;\\n background-color: white;\\n ion-button {\\n\\n --box-shadow: none;\\n height: 30px;\\n --padding-start: 7px;\\n --padding-end: 7px;\\n margin: 0 5px 0 5px;\\n ion-label {\\n font-family: Montserrat-Semi-Bold;\\n font-size: 11px;\\n margin-left: 10px;\\n }\\n ion-icon {\\n font-size: 11px;\\n }\\n }\\n}\\n.action-btn {\\n --background: linear-gradient(135deg, #A4E033 0%, #00B3CA 100%);\\n}\\n.inactive-btn {\\n opacity: 0.3;\\n}\\n.break-btn-wrapper {\\n display: flex;\\n flex-direction: column;\\n width: 100px;\\n position: absolute;\\n\\n bottom: 0;\\n align-items: center;\\n justify-content: flex-end;\\n ion-button {\\n width: 45px;\\n height: 45px;\\n --color: #ffffff;\\n color: #ffffff;\\n img {\\n width: 20px;\\n height: 20px;\\n }\\n }\\n ion-label {\\n font-family: Montserrat-Semi-Bold;\\n font-size: 11px;\\n color: #47C788;\\n }\\n}\\n.center {\\n left: calc(50% - 50px);\\n}\\n.left {\\n left: 20px;\\n}\\n.keyboard-footer {\\n height: auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n"],"names":["NgModule","PreloadAllModules","RouterModule","MainGuardService","QuestionsGuardService","LoginGuardService","routes","path","canActivate","loadChildren","then","m","TabsPageModule","ProfilePageModule","AddWorkoutPageModule","AddSimplePostPageModule","AddRoutinePageModule","PublicProfilePageModule","EditProfilePageModule","AdminExercisePageModule","AdminAllPostsPageModule","DataGenerationPageModule","TimePeriodPageModule","QuestionairyHashtagsPageModule","QuestionairyFriendsPageModule","Question3PageModule","QuestionairyProfilePageModule","Question5PageModule","CommentsPageModule","FriendsPageModule","WorkoutListWithDatePageModule","ChatPageModule","NewsPageModule","MixedPostsListPageModule","PlayWorkoutPageModule","PartnerSignUpPageModule","PayPalConnectedSuccessfullyPageModule","HandlePayPalResponseWebPageModule","HandlePayPalResponseMobilePageModule","PartnerSignUpOverviewPageModule","TermsAndConditionsPageModule","TermsOfUsePageModule","DataProtectionPageModule","PrivacyPolicyPageModule","HelpCenterPageModule","FirebaseLoginPageModule","AppRoutingModule","__decorate","imports","forRoot","preloadingStrategy","useHash","exports","Component","enableProdMode","HostListener","Inject","NgZone","RendererFactory2","StatusBar","Platform","App","environment","LogService","install","register","Capacitor","Router","initializeApp","FirebaseAuthentication","AppComponent","_class","constructor","cacheService","websocketService","logService","platform","zone","router","globalDataService","rendererFactory","_this","pushLine","name","overwriteConsoleMethods","firebaseConfig","addListener","_ref","_asyncToGenerator","event","firebaseUser","next","user","_x","apply","arguments","window","ResizeObserver","shaka","polyfill","installAll","ready","screenDimensions","width","height","addGlobalScrollBarStyle","addResumeAndPauseListeners","setApplicationStartTime","Date","getTime","is","setOverlaysWebView","overlay","production","addDeepLinkListener","defaultConsoleErrorRef","console","error","printer","args","length","Error","consoleLog","message","stack","join","_this2","resume","subscribe","resumeEvent","reconnectIfNoMoreConnected","pause","data","url","includes","paramName1","splitIndex1","indexOf","secondParamStartIndex","extractedCode","substring","run","navigate","state","onResize","screenWidth","target","innerWidth","screenHeight","innerHeight","beforeUnloadHandler","releaseWebsocket","isNativePlatform","renderer2","createRenderer","style","addClass","document","body","selector","template","__NG_CLI_RESOURCE__0","CUSTOM_ELEMENTS_SCHEMA","BrowserModule","RouteReuseStrategy","IonicModule","IonicRouteStrategy","HTTP_INTERCEPTORS","HttpClientModule","NgxEchartsModule","BrowserAnimationsModule","CordovaSQLiteDriver","Drivers","IonicStorageModule","TimestampToDayMonthPipe","TimePrettyPrintPipe","SizedUrlPixelBasedPipe","SizedUrlPixelBasedFromBucketPipe","AvailableTrackingOptionsPipe","ErrorHandlerInterceptor","AppModule","declarations","echarts","driverOrder","_driver","IndexedDB","providers","provide","useClass","multi","bootstrap","schemas","Input","ModalController","WorkoutTimeCorrecterComponent","modalController","ngOnInit","correctedTimeInMillis","timeRange","_min","_max","setCorrectedTime","correctedTime","dismiss","time","Injectable","catchError","throwError","AlertController","alertController","intercept","request","handle","pipe","status","showInfoDialog","alert","create","header","subHeader","buttons","present","SET_CONTAINER_SPECIFIC_TRACKING_OPTION","LEFT_RIGHT_OPTION","WorkoutSessionConverter","convertDTOToWorkoutSession","workoutSessionDTO","id","timestamp","userWeight","setContainer","map","a","convertDTOToSetContainer","setContainerDTO","exercise","exerciseId","setContainerSpecificTrackingType","getFromValue","spentTimeOnExercise","distance","sets","supersetOrder","exerciseInSupersetOrder","exerciseInWorkoutId","leftRightOption","convertWorkoutSessionToDTO","workoutSession","convertSetContainerToDTO","enumValue","providedIn","WorkoutToDtoConverter","convertWorkoutToDTO","workout","description","previewImageUrl","imageUrl","previewImage","creator","days","convertDayToDTO","savedFromCurrentUser","isSavedFromCurrentUser","likedFromCurrentUser","isLikedFromCurrentUser","calendarDTOs","workoutType","privateWorkout","isPrivate","day","orderInWorkout","supersets","convertSupersetToDTO","thumbnailEnding","workoutContentDTOS","workoutContent","imageWidths","superset","exercises","convertExerciseToDTO","order","idInWorkout","image","timerTime","enduranceValue","mobilityValue","caloriesValue","muscleTargets","repetitionsPerMinuteValue","breakTimeBetweenSets","breakTimeAfterExercise","suggestedWorkoutTime","suggestedSetDTOS","isBreakInVideoIncluded","breakInVideoIncluded","timeFrom","timeTo","animationVideo","isAnimationVideo","specificTrackingDTO","convertTrackingTypeToDTO","specificTracking","contentId","specificTrackingType","availableTrackingTypes","CONTENT_TYPE","getAllTypes","allTypes","SAME_SAME","WEIGHT_AND_REPS","option","find","TRACKING_OPTIONS","KPI_METADATA","iconsBlack","iconsGreen","iconsWhite","mainType","hasWeight","value1labels","value2label","kpiMetadata","TIME_BASED","ENTER_TIME","ENTER_TIME_AND_DISTANCE","REPETITIONS","REPETITIONS_WEIGHT","REPETITIONS_RESISTANCE_BAND","REPETITIONS_SUPPORTING_WEIGHT","HOLDING_TIME","HOLDING_TIME_WEIGHT","TIME","DISTANCE","REPETITIONS_AND_WEIGHT","WEIGHT","RESISTANCE_BAND","HOLDING_TIME_AND_WEIGHT","SPECIFIC_TRACKING_OPTION","userVideoText","animationVideoText","supersetable","setContainerType","isSetBased","WORKOUT_TYPE","ONLY_USER_VIDEO","AT_LEAST_ONE_ANIMATION_VIDEO","CacheKey","stringRepresentation","LIKED_SIMPLE_POST_IDS","LIKED_WORKOUT_POST_IDS","CALENDAR_WORKOUTS","MUSCLE_TARGETS","EQUIPMENT_GROUPS","EXERCISES","CREATED_WORKOUTS","BOOKMARKED_WORKOUTS","REST_DAY","CREATED_SIMPLE_POSTS","BOOKMARKED_SIMPLE_POSTS","POSTS_FOR_HOME_PAGE","SUGGESTED_WORKOUTS","SUGGESTED_FRIENDS","DAYS","USER","SESSION_CONTAINER","REPORTED_SIMPLE_POST_IDS","REPORTED_WORKOUT_POST_IDS","kpiName","barChartLegendName","imagePath","imagePathGreen","imagePathWhite","postfix","SPEED","CALORIES","EXERCISE","SETS","WORKOUT_COUNT","GAIN","MonthName","longName","shortName","getAllMonths","allMonths","JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER","getMonthById","RoutineCreationService","httpClient","workoutTypes","cleanService","workoutPlan","saveRoutine","getWorkoutType","uploadWorkoutPlan","hasAnimationWorkout","DomSanitizer","Camera","SimplePostCreationService","sanitizer","simplePostFiles","camera","_activeSwiperIndex","showSpinner","currentUser","activeSwiperIndex","value","getShowSpinner","simplePostDTO","handleFirstFileInput","handleFileInput","imageFile","files","fileType","type","fileAsResourceUrl","getContentType","VIDEO","bypassSecurityTrustResourceUrl","URL","createObjectURL","push","imagePosition","x","y","croppingData","movableAxis","loadFirstGallery","options","quality","destinationType","DestinationType","FILE_URI","sourceType","PictureSourceType","PHOTOLIBRARY","encodingType","EncodingType","JPEG","mediaType","MediaType","ALLMEDIA","getPicture","handleMobileFileInput","err","log","loadGallery","_ref2","_x2","_this3","fileSrc","convertFileSrc","resp","fetch","blob","myBlob","IMAGE","ANIMATED_IMAGE","File","setSimplePostDTO","setSimplePostFiles","getSimplePostDTO","getSimplePostFiles","filter","getFilePath","setNewPosition","handleDeleteImageEvent","index","splice","moveElement","backwards","element","resetSimplePostFileIds","setDuration","videoDuration","simplePostFileId","i","WorkoutCreationServiceInterface","showWrongDimensionsMessage","_showWrongDimensionsMessage","showWrongDimensionsMessageTimeout","_showWrongDimensionsMessageTimeout","_workout","editMode","_editMode","createContentDTOs","videos","getVideoEntities","createContentDTOsByPureExerciseIds","Promise","success","allExercises","flatMap","uniqueExerciseIds","Set","getCacheSubject","forEach","workoutContentDTO","contentUrl","b","animationVideoUrl","timeLength","WorkoutCreationService","cacheServiceSubClass","allPureExercises","userSubscription","initialize","videoUrl","setWorkoutType","file","addVideos","isVideo","showWrongDimensionPopUp","timeStamp","undefined","unsubscribe","videoFile","safeResourceUrl","video","duration","deleteAllExercises","addExercise","newSuperset","getVideosAsSafeResourceUrls","workoutExercise","pureExercise","createTimeStamp","now","addVideoCutData","videoTimeData","setContentDTOs","dividingPointIndex","dividingPoints","totalDuration","durationToSubtract","point","deleteVideo","foo","getPreviewImageUrl","getInputTypeSVGs","exerciseInputType","workoutHasVideos","getBorderClass","svgCount","transformTime","timeInMs","hours","Math","floor","timeLeft","minutes","seconds","checkVideoDimensions","clearTimeout","setTimeout","ending","setCustomPreviewImage","customPreviewImage","getCustomPreviewImage","isRestDay","ChangeDetectorRef","ElementRef","ViewChild","ViewChildren","AndroidFullScreen","NativeAudio","BreakTimerService","KeyboardBaseService","VideoService","WorkoutTimeService","SupersetTimeService","first","Subscription","PlayWorkoutShakaService","AdmobService","ScreenOrientation","PlayWorkoutPage","playWorkoutService","statisticsInitializerService","workoutCreationService","timerService","androidFullscreen","changeDetectorReference","keyboardService","workoutSessionConverter","videoService","workoutTimeService","supersetTimeService","shakaService","admobService","afterVideoPortraitOverlay","overlayDisplay","fullScreenMode","showInput","isPaused","endOfSupersetPause","showBetweenSupersetsBreak","isMobile","muted","showInitialImage","videoIsLooped","subs","playerIsInitialized","TRACKING_OPTIONS_ENUM","sub","add","ionViewWillEnter","setCurrentVideoIndexInSuperset","setCurrentSuperset","isInitialized","allVideos","getAllVideos","getDay","backButton","subscribeWithPriority","getKeyBoardIsOpen","openCloseKeyboard","navigateHome","configure","fade","focus","preload","assetId","assetPath","audioChannelNum","isUrl","registerScreenOrientation","setWorkoutStartTime","lock","orientation","ionViewDidEnter","resizeObserver","entries","entry","elementWidth","offsetWidth","videoPlayerReferences","get","nativeElement","shakaData","videoElement","videoUri","isLoaded","isCurrentlyLoading","initAll","videoContainerRef","widths","totalTime","startWorkout","playCurrentVideo","pausePlay","showInterstitial","observe","ngOnDestroy","disconnect","destroyAll","ionViewWillLeave","buffer","idle","videoCanPlay","showOverlay","overlayTimeout","unlock","hide","detectChanges","isSupported","isImmersiveModeSupported","immersiveMode","catch","showSystemUI","triggerFullScreen","doAfterSupersetAction","getCurrentSuperset","playSuperset","editWorkout","pauseCurrentVideo","pauseTime","continueTime","timeUpdate","totalTimeOfSupersetVideos","getSupersetVideoTimeLength","currentTimeInSupersetVideos","getSpentTime","videoEnded","urlIndexOfSecondExerciseInSuperset","getNextVideoIndexInSuperset","getCurrentVideoIndexInSuperset","playVideo","isVideoLooped","hasAnimationVideos","saveAndEndWorkout","saveSets","getAllWorkoutSessions","workoutSessionDTOS","sessionsContainer","initializeService","rewardVideo","cleanWorkout","nonEmptySetContainer","setTimeSpentInExercise","getWorkoutSession","totalWorkoutTime","expectedTimeRange","getExpectedTimeRange","timeIsInRange","getWorkoutSessionDTOCleanedForSaving","presentWorkoutTimeCorrecter","correctedTotalTime","_this4","component","cssClass","componentProps","modal","onDidDismiss","returnData","playOrContinueSuperset","closeKeyboard","presentEndOfWorkoutAlert","_this5","inputs","label","checked","text","role","handler","JSON","stringify","nonEmptySetContainers","getNonEmptySetContainer","cleanedWorkoutSession","dayId","setInitialStartTime","startTimer","stopTimer","videoUrlIndex","getSupersetsFirstVideoIndex","hideAllPlayers","player","currentTime","play","urlIndex","playNextSuperset","endOfSuperset","read","TimeRange","min","max","timerObject","timerInterval","showTimer","inProgress","timerStartTime","startTimeToCountBackFrom","alreadyPlayedTime","getTimerObject","addTimerTime","subtractTimerTime","startTime","withBell","resolve","reject","setInterval","round","clearInterval","isPlaying","pauseTimer","timeNow","resumeTimer","triggerTimerView","keyBoardIsOpen","open","getKeyBoardService","FIELD_TO_SET","MIN_SEC","NEXT_ACTION","PlayWorkoutService","startTimeOfSuperset","currentSupersetOrder","selectedDay","currentUserWeight","creatorId","startTimeOfWorkout","addNonPresentSetContainers","continueWorkout","flat","ex","getSupersets","workoutConverter","currentVideoIndexInSuperset","getSetContainer","getSetContainers","getCreatorId","editValuesOfSetContainerDTO","setContainerToChange","addSet","lastSetContainerDTO","getLastSetContainer","setLength","set","orderOfSetEntry","weight","repetitions","holdingTime","breakTime","repetitionsLeft","repetitionsRight","weightLeft","weightRight","holdingTimeLeft","holdingTimeRight","sessionContainer","getSessionContainer","workoutSessionContainer","reduce","given","concat","lastSetContainer","container","sort","setContainsData","exerciseSetDTO","assignedTime","setBasedSetContainers","totalExpectedTimeFromSetBasedContainers","getExpectedTime","addTimeToSetContainers","setContainersToSave","setContainers","timeToDivide","expectedTime","changeTrackingType","fileServerUrl","fileserverUrl","shakaPlayers","wrapperWidth","videoWidths","minMaxWidth","getMinMaxWidth","init","promise","unload","destroy","Player","isBrowserSupported","initPlayer","onError","addEventListener","abr","restrictions","minWidth","maxWidth","loadUri","manifestEnding","getManifestEnding","load","support","probeSupport","manifest","mpd","sortedWidths","sizeBefore","sizesAfter","index1","findIndex","index2","exercisesOfSuperset","getTimeLengthOfVideosAtSpecificPositionsInVideoList","videoCountInExercise","position","BaseTimeService","spentTime","timerIsInBreak","_isInitialized","timeSinceLastBreak","BehaviorSubject","StatisticsInitializerService","cancelRoute","dataOwnerId","drillDownLevel","getCloseRoute","getDataOwnerId","getIsInitialized","getDrillDownLevel","Pipe","transform","allAvailableTrackingOptions","isInSuperset","containerWidthInPixel","getPreviewImageUrlPixelBasedDirect","closestValue","getNextBiggerWidthToPlatformWidth","lastDotIndex","lastIndexOf","directBucketUrl","availableWidths","widthInPixel","onlyWiderWidths","getPreviewImageUrlPixelBased","timeInSeconds","prettyString","date","getDate","getMonth","AdMob","AdmobConsentStatus","InterstitialAdPluginEvents","RewardAdPluginEvents","httpService","getPlatform","hasPremiumSubscription","Loaded","info","Showed","Dismissed","FailedToLoad","adId","isTesting","prepareInterstitial","failed","Rewarded","rewardItem","amount","prepareRewardVideoAd","showRewardVideoAd","initOptions","testingDevices","initializeForTesting","trackingInfo","trackingAuthorizationStatus","consentInfo","requestConsentInfo","e","requestTrackingAuthorization","authorizationStatus","isConsentFormAvailable","REQUIRED","showConsentForm","getHasPremiumSubscription","isPremium","StorageService","FirebaseGlobalService","AuthGuardCommonService","localStorage","firebaseLoginService","hasQuestionnaireCompleted","questionnaireCompleted","getCurrentUser","getUser","u","storedUser","authGuardCommonService","replaceUrl","result","emailVerified","questionsCompleted","activateQuestions","CacheService","storageService","httpConfigService","allCacheSubjects","update","key","getInstance","instance","valueFromStorage","concatToExisting","cacheSubject","newArray","getValue","forcedReloadFromBackend","reloadIfNotExists","dbFunction","forcedSelectionReloadFromBackend","cacheKeys","cacheKey","oldValue","Array","loadAllCaches","initializeAllCacheSubjects","loadCachesFromLocalStorage","reloadSuggestions","subject","applicationStartTime","getApplicationStartTime","currentUserId","getSuggestedWorkouts","pageDTO","posts","getFriendsSuggestions","friendSuggestions","getAllSimplePostIdsLikedByUser","getAllWorkoutPostIdsLikedByUser","getAllExercises","getRestDay","getCreatedWorkouts","getBookmarkedWorkouts","getMyCreatedSimplePosts","getBookmarkedSimplePosts","getWorkoutsForCalendar","getEquipmentGroups","getAllMuscleTargets","getMyReportedSimplePostIds","getMyReportedWorkoutIds","getJwtToken","getIdToken","token","logout","signOut","ReplaySubject","Subject","GlobalDataService","_isNative","_screenDimensions","_MAX_WIDTH_FOR_MOBILE_VIEW","_currentUser","_firebaseUser","_resumeEvent","isNative","MAX_WIDTH_FOR_MOBILE_VIEW","accessToken","_accessToken","HttpClient","HttpHeaders","HttpParams","HttpRequest","Observable","HttpRealService","getListingObjects","params","endpoint","endpointURL","apiUrl","getRequest","postRequest","userToGetDataFrom","append","getCalendarData","saveCalendarData","calendarDTO","uploadProfile","formData","postWithEventRequest","createUser","getAllWorkoutsOfUser","userDTO","profileImage","getAllWorkoutsOfHashtag","hashtagId","getAllSimplePostsOfHashtag","follow","followsId","unfollow","String","followHashtag","dayIds","FormData","uploadWorkout","uploadSimplePost","getFilteredWorkoutsCount","getFilteredWorkouts","bookmarkWorkout","workoutId","likeWorkout","bookmarkSimplePost","simplePostId","likeSimplePost","likeStatisticsPost","statisticsId","setStatisticsPrivacy","statisticsIsPublic","saveComment","commentsDTO","getComments","postId","postType","getReplies","commentId","getUsersCreatedSimplePosts","userId","excludedIds","excludeWorkoutId","excludedUserIds","pageSize","findFriends","searchString","findHashtags","excludedId","getUserByCognitoUsername","cognitoUsername","likeComment","loadLikeUsersOfComment","commentDTO","loadLikeUsersOfPost","checkIfUsernameIsTaken","username","getAllChatListUsers","pageLimit","getChatListUsersForStatsAccessManagement","getAllChatListUsersSearch","searchTerm","getChatListUsersSearchForStatsAccessManagement","getAllMessagesOfConversation","otherUserId","getPostsFromChat","chatUserId","createEndpoint","getAllNews","getUnreadMessagesCount","getUnreadNewsCount","setMessagesFromUserAsChecked","chatPartnerId","getSinglePost","valueOf","deleteNewsEntry","newsId","dayDTO","postWithEventRequest2","getAllExerciseGroups","deleteWorkout","deleteSimplePost","removeWorkoutFromAllMyLists","removeSimplePostFromAllMyLists","getFollowers","userToGetFollowersFrom","getFollows","userToGetFollowsFrom","savePayPalUser","payPalUser","createSetContainers","statsData","deleteStatisticData","deleteRequest","getWorkoutsForAdmin","getSimplePostsForAdmin","reportSimplePost","reportWorkout","adminDeleteWorkout","adminDeleteSimplePost","getReportedWorkoutsForAdmin","getReportedSimplePostsForAdmin","dayInWorkoutId","httpParams","deleteAccountRequest","endpointUrl","observer","bearer","headers","page","post","response","res","delete","req","reportProgress","responseType","logText","serviceInitTime","className","line","d","newLines","getMilliseconds","getHours","getMinutes","getSeconds","Storage","storage","defineDriver","keys","Client","SockJS","WebsocketService","incomingChatMessage","incomingNews","sendToSpecificUser","chatMessage","stompClient","connected","connectedVersion","publish","destination","connectToWebsocket","webSocketFactory","connectHeaders","debug","str","reconnectDelay","heartbeatIncoming","heartbeatOutgoing","websocketEventHandling","activate","getIncomingChatMessage","getIncomingNews","onConnect","fram","stompSubscription","msg","parse","chatMessageDTO","newsDTO","onStompError","frame","onWebSocketClose","onWebSocketError","_ref3","forceDisconnect","deactivate","active","toString","reason","envName","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","platformBrowserDynamic","bootstrapModule"],"sourceRoot":"webpack:///","x_google_ignoreList":[49]}