diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index bef5d7d92..8c6df9839 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + @@ -40,10 +39,15 @@ - + + + + + + diff --git a/capacitor.config.json b/capacitor.config.json index ae8649dcb..1a26a08dc 100644 --- a/capacitor.config.json +++ b/capacitor.config.json @@ -1,6 +1,6 @@ { "server": { - "url": "http://192.168.0.57:8101", - "originalUrl": "http://192.168.0.95:8100" + "url": "http://192.168.1.3:8101", + "originalUrl": "http://192.168.1.3:8100" } } diff --git a/ios/App/Podfile b/ios/App/Podfile index 76eb460d3..0dd9bad1e 100644 --- a/ios/App/Podfile +++ b/ios/App/Podfile @@ -19,13 +19,16 @@ def capacitor_pods pod 'CapacitorFilesystem', :path => '../../node_modules/@capacitor/filesystem' pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics' pod 'CapacitorKeyboard', :path => '../../node_modules/@capacitor/keyboard' - pod 'CapacitorLocalNotifications', :path => '../../node_modules/@capacitor/local-notifications' pod 'CapacitorNetwork', :path => '../../node_modules/@capacitor/network' pod 'CapacitorPushNotifications', :path => '../../node_modules/@capacitor/push-notifications' pod 'CapacitorShare', :path => '../../node_modules/@capacitor/share' pod 'CapacitorStorage', :path => '../../node_modules/@capacitor/storage' + pod 'CapawesomeCapacitorFilePicker', :path => '../../node_modules/@capawesome/capacitor-file-picker' pod 'SentryCapacitor', :path => '../../node_modules/@sentry/capacitor' + pod 'TeamhiveCapacitorVideoRecorder', :path => '../../node_modules/@teamhive/capacitor-video-recorder' + pod 'CapacitorVideoPlayer', :path => '../../node_modules/capacitor-video-player' pod 'CapacitorVoiceRecorder', :path => '../../node_modules/capacitor-voice-recorder' + pod 'SendIntent', :path => '../../node_modules/send-intent' pod 'CordovaPlugins', :path => '../capacitor-cordova-ios-plugins' pod 'CordovaPluginsResources', :path => '../capacitor-cordova-ios-plugins' end diff --git a/package-lock.json b/package-lock.json index 771ad1b68..17cb8590e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -147,7 +147,6 @@ "ionic2-calendar": "^0.6.6", "ionicons": "^5.5.3", "jest-puppeteer": "^7.0.1", - "jetifier": "^1.6.8", "lite-server": "^2.6.1", "minisearch": "^6.0.1", "moment": "^2.29.3", @@ -168,6 +167,7 @@ "send-intent": "^5.0.0", "sharp": "^0.30.7", "socket.io-client": "^2.3.0", + "swiper": "^11.0.5", "tinymce": "^6.6.0", "ts-jest": "^27.0.3", "ts-jest-puppeteer": "^0.0.5", @@ -186,7 +186,7 @@ "@angular/compiler": "^12.1.2", "@angular/compiler-cli": "^12.1.2", "@angular/language-service": "^12.1.2", - "@capacitor/cli": "^4.6.1", + "@capacitor/cli": "^4.8.1", "@ionic/angular-toolkit": "^6.1.0", "@ionic/lab": "3.1.7", "@types/core-js": "^2.5.7", @@ -217,6 +217,7 @@ "jest-environment-jsdom": "^27.5.1", "jest-jasmine2": "^29.4.3", "jest-preset-angular": "^9.0.4", + "jetifier": "^2.0.0", "karma": "^6.3.20", "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~3.0.2", @@ -3722,15 +3723,15 @@ } }, "node_modules/@capacitor/cli": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-4.6.1.tgz", - "integrity": "sha512-iFMK83B67RXEQyWi1kOzQmRdCFc/pPD924mjAXG7yFLVyMvVRGAwwf8LzWFzHyQDoKK+auPMHycVfzm9T6Iyyg==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-4.8.1.tgz", + "integrity": "sha512-Ssxh+YaMuP+ZHJYaRJ78NCxS5L+u3X3XWK+NGhe+aluRZDigK5LJIiqjp+K3Xx1zQBG62gWWCEZoDvXJvafPIw==", "dev": true, "dependencies": { - "@ionic/cli-framework-output": "^2.2.5", - "@ionic/utils-fs": "^3.1.6", - "@ionic/utils-subprocess": "^2.1.11", - "@ionic/utils-terminal": "^2.3.3", + "@ionic/cli-framework-output": "2.2.5", + "@ionic/utils-fs": "3.1.6", + "@ionic/utils-subprocess": "2.1.11", + "@ionic/utils-terminal": "2.3.3", "commander": "^9.3.0", "debug": "^4.3.4", "env-paths": "^2.2.0", @@ -3743,7 +3744,7 @@ "semver": "^7.3.7", "tar": "^6.1.11", "tslib": "^2.4.0", - "xml2js": "^0.4.23" + "xml2js": "^0.5.0" }, "bin": { "cap": "bin/capacitor", @@ -3908,6 +3909,28 @@ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, + "node_modules/@capacitor/cli/node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@capacitor/cli/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/@capacitor/core": { "version": "5.4.2", "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-5.4.2.tgz", @@ -24649,9 +24672,10 @@ } }, "node_modules/jetifier": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", - "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-2.0.0.tgz", + "integrity": "sha512-J4Au9KuT74te+PCCCHKgAjyLlEa+2VyIAEPNCdE5aNkAJ6FAJcAqcdzEkSnzNksIa9NkGmC4tPiClk2e7tCJuQ==", + "dev": true, "bin": { "jetifier": "bin/jetify", "jetifier-standalone": "bin/jetifier-standalone", @@ -35202,6 +35226,24 @@ "node": ">= 10" } }, + "node_modules/swiper": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.0.5.tgz", + "integrity": "sha512-rhCwupqSyRnWrtNzWzemnBLMoyYuoDgGgspAm/8iBD3jCvAWycPLH4Z3TB0O5520DHLzMx94yUMH/B9Efpa48w==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", @@ -46115,15 +46157,15 @@ "requires": {} }, "@capacitor/cli": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-4.6.1.tgz", - "integrity": "sha512-iFMK83B67RXEQyWi1kOzQmRdCFc/pPD924mjAXG7yFLVyMvVRGAwwf8LzWFzHyQDoKK+auPMHycVfzm9T6Iyyg==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-4.8.1.tgz", + "integrity": "sha512-Ssxh+YaMuP+ZHJYaRJ78NCxS5L+u3X3XWK+NGhe+aluRZDigK5LJIiqjp+K3Xx1zQBG62gWWCEZoDvXJvafPIw==", "dev": true, "requires": { - "@ionic/cli-framework-output": "^2.2.5", - "@ionic/utils-fs": "^3.1.6", - "@ionic/utils-subprocess": "^2.1.11", - "@ionic/utils-terminal": "^2.3.3", + "@ionic/cli-framework-output": "2.2.5", + "@ionic/utils-fs": "3.1.6", + "@ionic/utils-subprocess": "2.1.11", + "@ionic/utils-terminal": "2.3.3", "commander": "^9.3.0", "debug": "^4.3.4", "env-paths": "^2.2.0", @@ -46136,7 +46178,7 @@ "semver": "^7.3.7", "tar": "^6.1.11", "tslib": "^2.4.0", - "xml2js": "^0.4.23" + "xml2js": "^0.5.0" }, "dependencies": { "@ionic/utils-object": { @@ -46252,6 +46294,22 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true + }, + "xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true } } }, @@ -62416,9 +62474,10 @@ } }, "jetifier": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", - "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-2.0.0.tgz", + "integrity": "sha512-J4Au9KuT74te+PCCCHKgAjyLlEa+2VyIAEPNCdE5aNkAJ6FAJcAqcdzEkSnzNksIa9NkGmC4tPiClk2e7tCJuQ==", + "dev": true }, "joi": { "version": "17.7.1", @@ -70509,6 +70568,11 @@ } } }, + "swiper": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.0.5.tgz", + "integrity": "sha512-rhCwupqSyRnWrtNzWzemnBLMoyYuoDgGgspAm/8iBD3jCvAWycPLH4Z3TB0O5520DHLzMx94yUMH/B9Efpa48w==" + }, "symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", diff --git a/package.json b/package.json index c5851fd79..0f93c0b98 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,6 @@ "ionic2-calendar": "^0.6.6", "ionicons": "^5.5.3", "jest-puppeteer": "^7.0.1", - "jetifier": "^1.6.8", "lite-server": "^2.6.1", "minisearch": "^6.0.1", "moment": "^2.29.3", @@ -182,6 +181,7 @@ "send-intent": "^5.0.0", "sharp": "^0.30.7", "socket.io-client": "^2.3.0", + "swiper": "^11.0.5", "tinymce": "^6.6.0", "ts-jest": "^27.0.3", "ts-jest-puppeteer": "^0.0.5", @@ -200,7 +200,7 @@ "@angular/compiler": "^12.1.2", "@angular/compiler-cli": "^12.1.2", "@angular/language-service": "^12.1.2", - "@capacitor/cli": "^4.6.1", + "@capacitor/cli": "^4.8.1", "@ionic/angular-toolkit": "^6.1.0", "@ionic/lab": "3.1.7", "@types/core-js": "^2.5.7", @@ -231,6 +231,7 @@ "jest-environment-jsdom": "^27.5.1", "jest-jasmine2": "^29.4.3", "jest-preset-angular": "^9.0.4", + "jetifier": "^2.0.0", "karma": "^6.3.20", "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~3.0.2", diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 989bd9022..d2564ab3d 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -10,6 +10,7 @@ import { ThemeService } from 'src/app/services/theme.service'; import { environment } from 'src/environments/environment'; import { Storage } from '@ionic/storage'; import { ChatController } from './controller/chat'; +import { register } from 'swiper/element/bundle'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { parse: { @@ -22,7 +23,7 @@ const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { monthYearA11yLabel: "MMMM YYYY" } } - +register(); @Component({ selector: 'app-root', diff --git a/src/app/app.module.ts b/src/app/app.module.ts index abff36d1b..fc7a5413b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -88,6 +88,7 @@ import { CreateProcessPage } from './modals/create-process/create-process.page'; import { LoggingInterceptorService } from './services/logging-interceptor.service'; import { PopupQuestionPipe } from './modals/popup-question.pipe'; import '@teamhive/capacitor-video-recorder'; +import { tokenInterceptor } from './interceptors/token.interceptors'; // import { ServiceWorkerModule } from '@angular/service-worker'; @@ -214,7 +215,7 @@ import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */ FileOpener, DocumentViewer, { provide: HTTP_INTERCEPTORS, useClass: LoggingInterceptorService, multi: true }, - + tokenInterceptor ], bootstrap: [AppComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA] diff --git a/src/app/interceptors/token.interceptors.ts b/src/app/interceptors/token.interceptors.ts new file mode 100644 index 000000000..cd2ff4bfa --- /dev/null +++ b/src/app/interceptors/token.interceptors.ts @@ -0,0 +1,105 @@ +import { Injectable } from "@angular/core"; +import { + HttpRequest, + HttpHandler, + HttpEvent, + HttpInterceptor, + HttpErrorResponse, + HTTP_INTERCEPTORS, + HttpClient, +} from "@angular/common/http"; +import { AuthService } from '../services/auth.service'; +import { Observable, throwError, BehaviorSubject, of } from "rxjs"; +import { catchError, filter, take, switchMap, tap } from "rxjs/operators"; +import { SessionStore } from '../store/session.service'; +import { environment } from "src/environments/environment"; + +@Injectable() +export class TokenInterceptor implements HttpInterceptor { + private isRefreshing = false; + private refreshTokenSubject: BehaviorSubject = new BehaviorSubject( + null + ); + + constructor(private http: HttpClient) { } + + + intercept( + request: HttpRequest, + next: HttpHandler + ): Observable> { + if (SessionStore.user.Authorization) { + request = this.addToken(request, SessionStore.user.Authorization); + } + + return next.handle(request).pipe( + catchError((error) => { + if (error instanceof HttpErrorResponse && error.status === 401) { + return this.handle401Error(request, next); + } else { + return throwError(error); + } + }) + ); + } + + private addToken(request: HttpRequest, token: string) { + return request.clone({ + setHeaders: { + Authorization: `Bearer ${token}`, + }, + }); + } + + private handle401Error(request: HttpRequest, next: HttpHandler) { + if (!this.isRefreshing) { + this.isRefreshing = true; + this.refreshTokenSubject.next(null); + + return this.refreshToken().pipe( + switchMap((token: any) => { + this.isRefreshing = false; + this.refreshTokenSubject.next(token['result'].accessToken); + return next.handle(this.addToken(request, token['result'].accessToken)); + }) + ); + } else { + return this.refreshTokenSubject.pipe( + filter((token) => token != null), + take(1), + switchMap((jwt) => { + return next.handle(this.addToken(request, jwt)); + }) + ); + } + } + + + //this method refresh token is declared here temporary beacouse a circular error + refreshToken() { + + return this.http + .put(environment.apiURL + "UserAuthentication/RefreshToken", { + refreshToken: SessionStore.user.RefreshToken, + },) + .pipe( + tap((tokens) => { + console.log(tokens) + SessionStore.user.Authorization = tokens.Authorization; + SessionStore.user.RefreshToken = tokens.refreshToken; + + }), + catchError((error) => { + /* this.logoutUser(); */ + return of(false); + }) + ); + } + +} + +export const tokenInterceptor = { + provide: HTTP_INTERCEPTORS, + useClass: TokenInterceptor, + multi: true +}; \ No newline at end of file diff --git a/src/app/modals/preview-camera/preview-camera.page.ts b/src/app/modals/preview-camera/preview-camera.page.ts index dc787c116..69e412722 100644 --- a/src/app/modals/preview-camera/preview-camera.page.ts +++ b/src/app/modals/preview-camera/preview-camera.page.ts @@ -1,5 +1,5 @@ import { Component, OnInit, ViewChild } from '@angular/core'; -import { IonSlides, ModalController, NavParams } from '@ionic/angular'; +import { ModalController, NavParams } from '@ionic/angular'; import { ImageCroppedEvent } from 'ngx-image-cropper'; import { PublicationsService } from 'src/app/services/publications.service'; import { GroupIconsPage } from '../group-icons/group-icons.page'; @@ -22,7 +22,7 @@ export class PreviewCameraPage implements OnInit { public ThemeService: ThemeService,) { } -@ViewChild(IonSlides) slides : IonSlides +/* @ViewChild(IonSlides) slides : IonSlides */ image: any; name: string _updatedAt: string @@ -47,13 +47,13 @@ ngOnInit() { } ionViewDidEnter(){ - this.slides.update() + /* this.slides.update() */ } async zoom(zoomIn: boolean){ - const slider = await this.slides.getSwiper() //is swipper =! + /* const slider = await this.slides.getSwiper() //is swipper =! const zoom = slider.zoom - zoomIn ? zoom.in(): zoom.out() + zoomIn ? zoom.in(): zoom.out() */ } close(){ diff --git a/src/app/modals/profile/profile.page.ts b/src/app/modals/profile/profile.page.ts index e0aa5897b..7d6191631 100644 --- a/src/app/modals/profile/profile.page.ts +++ b/src/app/modals/profile/profile.page.ts @@ -56,7 +56,8 @@ export class ProfilePage implements OnInit { private processesService: ProcessesService, private eventsService: EventsService, private storageService: StorageService, - public NotificationHolderService: NotificationHolderService + public NotificationHolderService: NotificationHolderService, + private authservice: AuthService ) { window['e'] = () => { @@ -377,6 +378,7 @@ export class ProfilePage implements OnInit { } logout() { + this.authservice.logoutUser(); SessionStore.setInativity(false) SessionStore.setUrlBeforeInactivity(this.router.url); this.logoutOut == false diff --git a/src/app/models/publication.ts b/src/app/models/publication.ts index f2fa18227..64c328a1c 100644 --- a/src/app/models/publication.ts +++ b/src/app/models/publication.ts @@ -8,7 +8,7 @@ export class Publication{ Message: string; DatePublication: Date | string; OriginalFileName?: string; - FileBase64?:string = ""; + Files:any = []; FileExtension?: string; OrganicEntityId?: number; } \ No newline at end of file diff --git a/src/app/models/user.model.ts b/src/app/models/user.model.ts index f6c29e42d..0a7fd6fb1 100644 --- a/src/app/models/user.model.ts +++ b/src/app/models/user.model.ts @@ -97,4 +97,5 @@ export class UserSession { UrlBeforeInactivity: string; UserPermissions: any; UserPhoto: string; + RefreshToken: string } \ No newline at end of file diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts index 6c4ea5fc1..f7e4d9b11 100644 --- a/src/app/pages/login/login.page.ts +++ b/src/app/pages/login/login.page.ts @@ -122,7 +122,7 @@ export class LoginPage implements OnInit { const loader = this.toastService.loading() let attempt = await this.authService.login(this.userattempt, { saveSession: false }) - const data = await this.authService.loginContenteProduction(this.userattempt, { saveSession: true }) + /* const data = await this.authService.loginContenteProduction(this.userattempt, { saveSession: true }) */ loader.remove() @@ -131,7 +131,7 @@ export class LoginPage implements OnInit { if (attempt.UserId == SessionStore.user.UserId) { await this.authService.SetSession(attempt, this.userattempt); - CPSession.save(data) + /* CPSession.save(data) */ this.changeProfileService.run(); if (attempt.ChatData) { @@ -165,7 +165,7 @@ export class LoginPage implements OnInit { this.storage.clear(); await this.authService.SetSession(attempt, this.userattempt); - CPSession.save(data) + /* CPSession.save(data) */ this.changeProfileService.run(); diff --git a/src/app/pages/publications/new-publication/new-publication.page.html b/src/app/pages/publications/new-publication/new-publication.page.html index 9f7d0d9bb..46069685b 100644 --- a/src/app/pages/publications/new-publication/new-publication.page.html +++ b/src/app/pages/publications/new-publication/new-publication.page.html @@ -27,20 +27,20 @@ -
+
Fotografia Anexada
- - @@ -64,20 +64,20 @@
-
-
- image + +
75 Kb
-
-
+
-->
diff --git a/src/app/pages/publications/new-publication/new-publication.page.ts b/src/app/pages/publications/new-publication/new-publication.page.ts index 6e40b2968..567ff042e 100644 --- a/src/app/pages/publications/new-publication/new-publication.page.ts +++ b/src/app/pages/publications/new-publication/new-publication.page.ts @@ -136,6 +136,11 @@ export class NewPublicationPage implements OnInit { this.publicationType = this.navParams.get('publicationType'); this.folderId = this.navParams.get('folderId'); this.publication = this.navParams.get('publication'); + if (this.publication) { + this.seletedContent = this.publication.Files; + this.filecontent = true; + } + console.log('Edit', this.publication) this.publicationTitle = 'Nova Publicação'; this.intent = this.navParams.get('intent'); @@ -144,30 +149,7 @@ export class NewPublicationPage implements OnInit { } ngOnInit() { - if (this.intent) { - this.filecontent = true - console.log(this.intent) - if (this.checkFileType.checkFileType(this.intent.type) == 'image') { - this.fileType = 'image' - let resultUrl = decodeURIComponent(this.intent.url); - Filesystem.readFile({ path: resultUrl }).then(async (content) => { - this.capturedImage = 'data:image/jpeg;base64,' + content.data; - console.log(this.capturedImage) - }) - } else if (this.checkFileType.checkFileType(this.intent.type) == 'video') { - this.fileType = 'video' - let resultUrl = decodeURIComponent(this.intent.url); - Filesystem.readFile({ path: resultUrl }).then(async (content) => { - this.capturedVideo = "data:video/mp4;base64," + content.data; - console.log(this.capturedVideo) - }) - - } else { - this.httpErrorHandle.validationMessagge('filetype'); - } - - - } + this.reciveSharedContent(); this.setTitle(); Filesystem.mkdir({ @@ -193,9 +175,10 @@ export class NewPublicationPage implements OnInit { source: CameraSource.Camera }); + console.log(capturedImage) + this.capturedImage = 'data:image/jpeg;base64,' + capturedImage.base64String; this.capturedImageTitle = 'foto'; - this.fileType = "image" const compressedImage = await this.compressImageBase64( this.capturedImage, @@ -203,10 +186,15 @@ export class NewPublicationPage implements OnInit { 800, // maxHeight 0.9 // quality ).then((picture) => { - console.log('taked: ', picture) + console.log('take picture', this.removeTextBeforeSlash(picture, ','),) this.filecontent = true; - this.capturedImage = picture this.photoOrVideo = false; + let fileObject = { + FileBase64: this.removeTextBeforeSlash(picture, ','), + FileExtension: capturedImage.format + } + this.seletedContent.push(fileObject) + }); } @@ -236,57 +224,34 @@ export class NewPublicationPage implements OnInit { async startVideoRecording() { try { let options: CaptureImageOptions = { limit: 5 } - const data = await this.mediaCapture.captureVideo(options) + const data: any = await this.mediaCapture.captureVideo(options) this.video = data[0]; console.log(data) - const savedFile = await Filesystem.copy({ - from: data[0].fullPath, // directory prop removed, Capacitor parses filename for us - to: "video.mp4", - toDirectory: FilesystemDirectory.Data + data.forEach(async element => { + + const savedFile = await Filesystem.copy({ + from: element.fullPath, // directory prop removed, Capacitor parses filename for us + to: "video.mp4", + toDirectory: FilesystemDirectory.Data + }); + console.log(savedFile.uri) + Filesystem.readFile({ path: savedFile.uri }) + + .then(async (content) => { + this.filecontent = true; + let fileObject = { + FileBase64: content.data, + FileExtension: 'mp4' + } + this.seletedContent.push(fileObject) + }) + .catch((err) => console.error(err)); }); - console.log(savedFile.uri) - Filesystem.readFile({ path: savedFile.uri }) - - .then(async (content) => { - console.log(content) - this.filecontent = true; - this.fileType = "video" - this.capturedVideo = content.data; - console.log(this.capturedVideo) - }) - .catch((err) => console.error(err)); - - - - - } catch (error) { console.log('record video error: ', error) } } - mediaFileToBase64(mediaFile) { - return new Promise((resolve, reject) => { - // Create a FileReader - const reader = new FileReader(); - - // Set the callback for when the file is loaded - reader.onloadend = () => { - resolve(reader.result); - }; - - // Set the callback for errors - reader.onerror = (error) => { - reject(error); - }; - - // Read the file as Data URL (base64) - reader.readAsDataURL(mediaFile); - }); - } - - - async loadVideo() { const result = await FilePicker.pickMedia @@ -295,27 +260,22 @@ export class NewPublicationPage implements OnInit { }); result.files.forEach(element => { - let resultUrl = decodeURIComponent(element.path); - this.fileType = element.mimeType - Filesystem.readFile({ path: resultUrl }) + if (this.checkFileType.checkFileType(element.mimeType) == 'image' || this.checkFileType.checkFileType(element.mimeType) == 'video') { + let resultUrl = decodeURIComponent(element.path); + Filesystem.readFile({ path: resultUrl }) - .then(async (content) => { - console.log(result) - console.log(content) - this.filecontent = true; - let fileObject = { - base64: content.data, - fileType: this.fileType - } - this.seletedContent.push(fileObject) - - if (this.fileType == "video") { - this.capturedVideo = "data:video/mp4;base64," + content.data; - } else if (this.fileType == "image") { - this.capturedVideo = "data:image/jpg;base64," + content.data; - } - }) - .catch((err) => console.error(err)); + .then(async (content) => { + console.log(result) + console.log(content) + this.filecontent = true; + let fileObject = { + FileBase64: content.data, + FileExtension: this.removeTextBeforeSlash(element.mimeType, '/') + } + this.seletedContent.push(fileObject) + }) + .catch((err) => console.error(err)); + } }); }; @@ -405,35 +365,8 @@ export class NewPublicationPage implements OnInit { if (this.publicationType == '3') { const loader = this.toastService.loading() - // has captured image - if (this.capturedImage != '' && this.capturedVideo == '') { - this.publication = { - DateIndex: this.publication.DateIndex, - DocumentId: this.publication.DocumentId, - ProcessId: this.publication.ProcessId, - Title: this.pub.Title, - Message: this.pub.Message, - DatePublication: this.publication.DatePublication, - OriginalFileName: this.publication.OriginalFileName || 'foto', - FileBase64: this.capturedImage, - FileExtension: 'jpeg', - } - - } else if (this.capturedVideo != '' && this.capturedImage == '') { - this.publication = { - DateIndex: this.publication.DateIndex, - DocumentId: this.publication.DocumentId, - ProcessId: this.publication.ProcessId, - Title: this.pub.Title, - Message: this.pub.Message, - DatePublication: this.publication.DatePublication, - OriginalFileName: this.publication.OriginalFileName || 'video', - FileBase64: this.capturedVideo, - FileExtension: 'mp4', - } - } - // no file names - else if (!this.PublicationFolderService.PublicationHasImage(this.publication) && this.capturedVideo == '') { + // has file + if (this.PublicationFolderService.PublicationHasImage(this.publication)) { this.publication = { DateIndex: this.publication.DateIndex, DocumentId: this.publication.DocumentId, @@ -442,8 +375,33 @@ export class NewPublicationPage implements OnInit { Message: this.pub.Message, DatePublication: this.publication.DatePublication, OriginalFileName: this.publication.OriginalFileName, - FileBase64: "data:image/png;base64,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", - FileExtension: 'jpeg', + Files: this.seletedContent, + } + + /* } else if (this.capturedVideo != '' && this.capturedImage == '') { + this.publication = { + DateIndex: this.publication.DateIndex, + DocumentId: this.publication.DocumentId, + ProcessId: this.publication.ProcessId, + Title: this.pub.Title, + Message: this.pub.Message, + DatePublication: this.publication.DatePublication, + OriginalFileName: this.publication.OriginalFileName || 'video', + Files: this.seletedContent, + FileExtension: 'mp4', + } + } */ + // no names + } else if (!this.PublicationFolderService.PublicationHasImage(this.publication)) { + this.publication = { + DateIndex: this.publication.DateIndex, + DocumentId: this.publication.DocumentId, + ProcessId: this.publication.ProcessId, + Title: this.pub.Title, + Message: this.pub.Message, + DatePublication: this.publication.DatePublication, + OriginalFileName: this.publication.OriginalFileName, + Files: this.seletedContent, } @@ -487,33 +445,33 @@ export class NewPublicationPage implements OnInit { const date = formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss') - if (this.capturedImage != '') { - this.publication = { - DateIndex: date, - DocumentId: null, - ProcessId: this.folderId, - Title: this.pub.Title, - Message: this.pub.Message, - DatePublication: date, - OriginalFileName: this.capturedImageTitle || 'foto', - FileBase64: this.capturedImage || "data:image/png;base64,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", - FileExtension: 'jpeg', - } - - } else if (this.capturedVideo != '') { - this.publication = { - DateIndex: date, - DocumentId: null, - ProcessId: this.folderId, - Title: this.pub.Title, - Message: this.pub.Message, - DatePublication: date, - OriginalFileName: this.capturedImageTitle || 'video', - FileBase64: this.capturedVideo || "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgMAAAIJCAIAAAC3IqlmAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAABSKSURBVHhe7d1ncuNGo4bRu/8lfh5F5qToBdyWNJbHDYgAmETqPVXnh4PAhKp+iMDu/3v9+28AkikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEcHYen56Wq9VkOr25vfvfX7/Kv1Z/AIelBPDNnp6fV+v1dDa7u7//69dVGfor682m2gQOSwngpF5eX9ebh9l8cT8aXV1fV4N+q/liUT0IHJYSwHE9PD7OF8vReHJ9c1sN8T2NJ9PqMeGwlAAO6eMUfxm7b27vWk/17ODu/r56FjgsJYDdfZ7iv727/3XV61TPDq6ub15eX6unhgNSAujr+eVlvdnM5vP70ej65qYar4/K7UMclRLAlzYPv0/xH/BUz27KkUf12uCAlAB+K9+7F8u3U/xHPdWzm9nc7UMckRIQ6uMU/2Q6u7sfXV2f9FTPDspxSfX64YCUgAh/nOIf39zefu+pnh2Uw5TqHcEBKQE/0+bhYb5YjCeTMzzVs4PyFkrMqvcIh6IE/AQfp/gn0+lFnOrZzcPjY/Wu4VCUgMvzz138l3qq50/ly36p12w2r/5703K1qj4HOBQl4Nz9c4p/MRpPbu/uLv1Uz83t3XgyLcP6nz8RWK7W1Z81lfJ9/j0clhJwXl5eX99P8S9/xqme8vrLgct8sShvqnqnf3p4fKw2bBqNx9VWcChKwDd7eHybqGc6m5UR8/rm4k/13N7dl/eyWq+fnp+rd7pF6V9n88rBRLUVHIoScFIfp/h/xqme92/8t+WNLJbL/S/nlgOg6vEr5encPsSRKAFH9HGK/yed6nm7ujuflzd18CnhykdUPV3T9lNMsDMl4GA+TvH/sFM9ZYB+v7o74FTPbsqBRfUCmhZLtw9xFErA7h4en95P9cw/5mi79FM95S38c3X3G+7cX28eqpfUVBJbbQUHoQT09fT8/HGqZzyZ3t3fX/qpnuubt1M9H1d3z+H8e/l4q1fYVEJVbQUHoQS0K4Pj5uFhsfz3VE81Kl2Wq+u3Uz2lYe9Xd890rv/OuJa9UG0CB6EEvHl5ff15p3rKG3m/uvtw8Ku7R1KKW72RSnlfg25OhZ6UINfPOtVzez8aTaaz5WrYjfxnpXSrel9NZa9VW8H+lCBXnxkOztP73Zxvp3pKyb7l6u6RlGOy6p02lbdcbQX7U4JcfS5RnoP3uzl/n+pZrTc/+NdVD49P1Xtvmkyn1VawPyWIVo0y5+D9G//t/Wg8nc3eb+QPWsn95fW1+jSa7u5H1VawPyWIdg6Xhd9P9YzKV933Uz0Xc3X3SDrv0SofV7UJ7E8JopUhuBpoju39VM/9eDKZzRergdO0JRiNJ9Un1hR1nMRpKEG0aY8FUvZRvsK+3805Lk+0XK2sutWpHBhVn2HTau32IQ5MCaKtN5tqlNnT9fuMDZPpbLF8O9Vj7syhyodWfaRN88Wi2gr2pATRykhdjTKDvF3bff/hbhmbSlSctdjf03P3HikfeLUV7EkJ0lWjzBb/nOp5u5tzuVo/PD6GX909kupjbyr1rTaBPSlBuvK9vhpoKmX0XyxXTvWcTJ/bhzSYw1KCdJ1z3RTVJhzVeNJ9+5Br7xyWEqSbLxbVKNPkG+gp9VmyZrVeV1vBPpQgXZ+bVcrfVFtxPOX7fvX5N83m82or2IcSpOszw8Fs7rbF03l57b5oPBpPqq1gH0pA97hjqawTqz7/ptu7u2oT2IcS0H2zyq+r62qTQWazOYPc3N5Vu6BS9ki1yQFVu48ESkCvm1WqTQa5vbuvHo1zVu0+EigBvW5W2WeqOCW4LNXuI4ES0OtmleVq99sWleCyVLuPBErAm2osaNpnqSwluCzV7iOBEvDmV9eSNTe3u9+sogSXpdp9JFAC3nQO1n/9uqo26U8JLku1+0igBLyZTGfVcNBUbdKfElyWaveRQAl4s1ytq+GgafOw46xnSnBZqt1HAiXgzdPzczUcNO28VJYSXJZq95FACfitGg6adp5zQgkuS7X7SKAE/Na5ZE35g2qTnpTgslS7jwRKwG9396NqRGiqNumpTwmqTTgS+4JWSsBv09m8GhGadptzwuhzPuwLWikBv603m2pEaNptqSyjz/mwL2ilBPz2/PJSjQhNk+ms2qoPo8/5sC9opQT8qxoRmso4Um3Sh9HnfNgXtFIC/nWkJWuMPufDvqCVEvCv+9G4GhSaqk36MPqcD/uCVkrAv+aLRTUoND08Dp5zwuhzPuwLWikB/9o8PFSDQtN8say26rTz6NPn9dDqq+WIlYBWSsC/Xl5fq0GhaTQePOeEEpyeEjCIEvAfPZasua026aQEp6cEDKIE/MfN7V01LlR2WLJGCU5PCRhECfiP8WRSjQtNzy8v1VbbKcHpKQGDKAH/sVguq3GhabXeVFttpwSnpwQMogT8x8PjYzUuNE1nw+acUILTUwIGUQJq1bjQdHc/qjbZ7vQl+HV1PRqPZ/P5erN5fn4pyj+Ufy3/sfOS+M+gBAyiBNQOvmTNiUtwPxo/Pj1VD/Wp/K8+P6W+dErAIEpA7e7+wIPFKUuwWPb64VufyyEXTQkYRAmoTabTamhoenj88kt308lKMGjN/T5Ta1wuJWAQJaC2XK2qoaGp51fvD6cpwQ4/eSubVA/yYygBgygBtcenp2poaBpPJtVWW5ymBOvNsHtbiz7LtF0oJWAQJaBFNTQ0lQGl2mSLE5Tgq4GvU9mweqifQQkYRAlocdgla05Qgt0WWC7Wm2GXIi6FEjCIEtCiz32W/eecOEEJnp6fq217enl9/evXVfVoP4ASMIgS0GLa45xJ//Pyxy7BoAOUpj53zV4cJWAQJaDFat19KbXUotrqK8cuQXn8asNBvvdSwfXNbZ/PZyglYBAloMXzy0s1OjTdj/ouWXPsEux5THCMgbin8so/VwMtY3fnlOD9KQGDKAHtyiBVDRCV/vfvH7sExZbpJbb7xusE5XnXm4fq9ZQwdM720YcSMIgS0O6AS9acoAR73Dv0bT8p+Oo193/XWygBgygB7Ubj7iVren4TP0EJvhr4OpUNq4c6jcVyVb2SPy1X6+rvh1ICBlEC2s3m3dPybB/OPp2gBMXnCff++izGcAx95kfac1okJWAQJaBdn1F4Mp1WW7U6TQmubwbPO9T5A7pj6H/P1WQ6q7btTwkYRAlo9/L6Wg0QTT2XrDlNCYqeZfrQZ8rVgxv0Cos+5+haKQGDKAFfOtSSNScrQXFze9f54+fyBwe8X7O/MqxXr6SPPp9ekxIwiBLwpT4/vi2HDtVWTacsQVEKtWXS7PK/vuW20fvRsCU/Pz09P1/fDL6vVAkYRAn40njSff6keUd804lL8KEcr5TBdzqbr9brovxD+deD3Kq/g/IJ9EnmVx4eH4fWSwkYRAn4Up8lHmfz7ttgvqUE5+P65nbnCfI+9Zn/409KwCBKwJf63GTZZ8ma5BKUo5Cdf/9cGbT2shIwiBKwTTVGNJWRpdqkKbYEJQTlLVRvah+zed/fwSkBgygB2xxkyZrYEuywoGanPhdvCiVgECVgmz5L1nSe/cgswXLV6wfYO7i7H1XP1aQEDKIEbDOddf/MtXPICyzBlttY9/fy+tp5rKYEDKIEbFNG+WqYaOqcPiGtBH3up9pTOQ7bfl+pEjCIErBNGXGqYaKpc8maqBKUo6jqXRzJ9g9HCRhECejQuWRN59RvOSUYT4ZNK7SnLZNXKwGDKAEdbu+6l6zZ/gPakBL0X87zgL6avFoJGEQJ6NBnOswyZFdb/SmhBHf3e62qv4/W+0qVgEGUgA59fs00X2y7VebHl6DPBKhH1byvVAkYRAnosFp3r6S4fdr9n12C65ub/acV2l91X6kSMIgS0KEMc9VI0bR9yZofXIJfV9c7rJp5DE/PL3/eV6oEDKIEdNtzyZofXIJNj0m5T+bPGQOVgEGUgG59pjfYcobkp5ZgtV5XL/jbfZ7KUwIGUQK69Vnyd8uw+CNLsFgea1qhPX3cV6oEDKIEdJsv9lqy5ueVoIy21Us9K6XcSsAgSkC39aZ7RN6yXPsPK0HnPEvnQAkYRAno9vL6un2+s+L27q7a6tNPKsH2+2XPnxLQSgnoZZ8la769BOUFDFr68StbjnsuhRLQSgnopc+SNZuH9jvrv7cEn79/fn557XMT1Fe2/2biUigBrZSAXvZZsua7SlCetzkJRHmRnbOrNpWH2j7L3qVQAlopAb30W7KmfWr+bynB9qmQRuPuQ5xP1ze3T+WAovEgl0gJaKUE9PLn71e/8tW0zCcuQXm6PgP3ar25ue24+FFcXd90LtR8QZSAVkpAX50nVb5asuaUJRh6p/9kOttyW1T5X19d/LhQSkArJaCvPkvWtM45cZoS3N2XQ4Fd5gRdbx6+upK83myqP750SkArJaCvPkvWtA6dxy5BKdD+P/otj1BNtPfVBfCLpgS0UgL6ms3bF0r8U+t12qOWoHydP9TyAA+Pj+PJ79ottl5wvlxKQCsloK+dl6w5UgkOcijQVA4FZvMLmE9iN0pAKyWgr8enp2rIaGr9+dUxSnA/OtihQBQloJUSMMBuS9YctgTlObb/VoAtlIBWSsAAfWZraN59f8AS3I/Gj08OBXanBLRSAgbYbcmag5SgHAoslg4F9qUEtFICBthtyZr9SzAaT37SD32/kRLQSgkYYL3ZVKNGU3Pq5n1KcHV9c7brRF4iJaCVEjDA0/PzX8OXrNmnBG4QOiwloJUSMEyfJWuquaCNPufDvqCVEjDMDkvWGH3Oh31BKyVgmB2WrDH6nA/7glZKwDBllK8GjqY/l6x5en42+pwP+4JWSsAwm4deS9aUYIwn05vbjomsP1XPwpEoAa2UgGGeX147l6zZQfUsHIkS0EoJGKxzyZodVE/BkSgBrZSAwfosWTNU9RQciRLQSgkYrM+SNUNVT8GRKAGtlIDB+ixZM1T1FByJEtBKCRisz5I1Q1VPwZEoAa2UgF10LlkzVPX4HIkS0EoJ2EWfJWsGqR6fI1ECWikBu+izZM0g1eNzJEpAKyVgF32WrBmkjFCcRvXJN1X7mgRKwC76LFnz4a9fV31GH85Hta9JoATsYsuSNdc3t+PJZLFcPjz+Xm9SCS7L514mhxKwo48la35dXd/dj2bzeTlKeHl9rf7mgxJclmr3kUAJ2NHjU991JZXgslS7jwRKwNEpwWWpdh8JlICjU4LLUu0+EigBR6cEl6XafSRQAo5OCS5LtftIoAQcnRJclmr3kUAJODoluCzV7iOBEnB0SnBZqt1HAiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQDSKQFAOiUASKcEAOmUACCdEgCkUwKAdEoAkE4JANIpAUA6JQBIpwQA6ZQAIJ0SAKRTAoB0SgCQTgkA0ikBQDolAEinBADplAAgnRIApFMCgHRKAJBOCQCy/f33/wPavQjXs/ARnQAAAABJRU5ErkJggg==", - FileExtension: 'mp4', - } + /* if (this.capturedImage != '') { */ + this.publication = { + DateIndex: date, + DocumentId: null, + ProcessId: this.folderId, + Title: this.pub.Title, + Message: this.pub.Message, + DatePublication: date, + OriginalFileName: this.capturedImageTitle, + Files: this.seletedContent, + /* FileExtension: 'jpeg', */ } + /* } else if (this.capturedVideo != '') { + this.publication = { + DateIndex: date, + DocumentId: null, + ProcessId: this.folderId, + Title: this.pub.Title, + Message: this.pub.Message, + DatePublication: date, + OriginalFileName: this.capturedImageTitle || 'video', + Files: this.seletedContent, + FileExtension: 'mp4', + } + } */ + const loader = this.toastService.loading() @@ -522,7 +480,7 @@ export class NewPublicationPage implements OnInit { await this.publications.CreatePublication(this.folderId, this.publication).toPromise(); this.close(); this.httpErrorHandle.httpsSucessMessagge('Criar publicação') - + window["sharedContent"] = null; this.close(); } catch (error) { @@ -545,7 +503,7 @@ export class NewPublicationPage implements OnInit { clear() { this.capturedImageTitle = null; - this.capturedImage = null; + this.seletedContent = []; } setTitle() { @@ -582,7 +540,7 @@ export class NewPublicationPage implements OnInit { deletePublicationImage() { - this.publication.FileBase64 = "" + this.seletedContent = [] } async compressImageBase64(base64String: string, maxWidth: number, maxHeight: number, quality: number): Promise { @@ -695,7 +653,45 @@ export class NewPublicationPage implements OnInit { } } + removeTextBeforeSlash(inputString, controlString) { + if (inputString.includes(controlString)) { + const parts = inputString.split(controlString); + return parts.length > 1 ? parts[1] : inputString; + } else { + return inputString; + } + } + reciveSharedContent() { + if (this.intent) { + this.filecontent = true + console.log(this.intent) + let filesArray = []; + let fistFile = { + title: this.intent.title, + type: this.intent.type, + url: this.intent.url + } + filesArray = this.intent?.additionalItems; + filesArray.push(fistFile) + filesArray.forEach(element => { + let FileExtension = this.removeTextBeforeSlash(element.title, '.') + if (this.checkFileType.checkFileType(FileExtension) == 'image' || this.checkFileType.checkFileType(FileExtension) == 'video') { + let resultUrl = decodeURIComponent(element.url); + Filesystem.readFile({ path: resultUrl }).then(async (content) => { + console.log('shared base',content.data) + let fileObject = { + FileBase64: this.removeTextBeforeSlash(content.data, ','), + FileExtension: FileExtension + } + this.seletedContent.push(fileObject) + }) + } else { + this.httpErrorHandle.validationMessagge('filetype'); + } + }); + } + } } diff --git a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html index 436e25726..ed174b945 100644 --- a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html +++ b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html @@ -23,19 +23,29 @@
-
- - -
-
+ + +
+ + + + +
+
+
+
{{publication.Message}}
+ +
diff --git a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.scss b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.scss index 1646c95bf..d64009620 100644 --- a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.scss +++ b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.scss @@ -76,4 +76,4 @@ ion-toolbar { .font-14-rem { font-size: rem(14) !important; -} +} \ No newline at end of file diff --git a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.ts b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.ts index adcda5cfd..45c69ccff 100644 --- a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.ts +++ b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.ts @@ -11,6 +11,7 @@ import { RouteService } from 'src/app/services/route.service'; import { PermissionService } from 'src/app/services/permission.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { PublicationFolderService } from 'src/app/store/publication-folder.service'; +import { checkFileTypeService } from 'src/app/services/checkFileType.service'; @@ -37,7 +38,8 @@ export class PublicationDetailPage implements OnInit { public ThemeService: ThemeService, public p:PermissionService, private httpErrorHandle: HttpErrorHandle, - public publicationFolderService: PublicationFolderService + public publicationFolderService: PublicationFolderService, + public checkFileType: checkFileTypeService ) { } @@ -65,7 +67,7 @@ export class PublicationDetailPage implements OnInit { Message: '', /* image: null, */ DatePublication: null, - FileBase64: '', + Files: [], OriginalFileName: '', FileExtension: '', }; @@ -85,7 +87,7 @@ export class PublicationDetailPage implements OnInit { this.showLoader = true; - this.publications.GetPublicationById(this.DocumentId).subscribe(res => { + this.publications.GetPublicationWithArrayOfFilesById(this.DocumentId).subscribe(res => { /* this.publication = res; */ this.publication = { @@ -95,7 +97,7 @@ export class PublicationDetailPage implements OnInit { Title:res.Title, Message: res.Message, DatePublication: res.DatePublication, - FileBase64: "data:video/mp4;base64," +res.FileBase64, + Files: res.Files, OriginalFileName: res.OriginalFileName, FileExtension: res.FileExtension, } diff --git a/src/app/pages/publications/view-publications/view-publications.page.html b/src/app/pages/publications/view-publications/view-publications.page.html index 4b6454a06..216655fa8 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.html +++ b/src/app/pages/publications/view-publications/view-publications.page.html @@ -43,18 +43,27 @@ -
- + + + + +
+ -
+ -
- - - -
+
+ + + +
diff --git a/src/app/pages/publications/view-publications/view-publications.page.scss b/src/app/pages/publications/view-publications/view-publications.page.scss index 968bafdc7..91eba0b3c 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.scss +++ b/src/app/pages/publications/view-publications/view-publications.page.scss @@ -1,196 +1,293 @@ -@import '~src/function.scss'; +@import "~src/function.scss"; -:host{ +:host { background: transparent; - padding: 0!important; + padding: 0 !important; } - ion-content{ - --background: transparent; - --border-radius: 30px; - } - ion-toolbar{ - --border-width: 0 !important; - --border-style: none; - --padding-top: 0px !important; - --padding-start: 0px !important; - --padding-right: 0px !important; - --padding-end: 0px !important; - } - - .div-top-header{ - width: 400px; - margin: 0 auto; - background-color: #0782c9; - padding-top: 15px; - border: 0!important; - } - .div-search{ - font-size: rem(45); - float: left; - margin: 0 0 0 10px - } - .div-logo{ - background: transparent; - width: 140px; - margin: 5px 0 0px 71px; - float: left; - } - .div-logo img{ - width: 100%; - } - .div-profile{ - font-size: rem(45); - float: right; - margin-right: 10px; - } - .main-header{ - width: 100%; /* 400px */ - height: 100%; - font-family: Roboto; - background-color: #fff; - overflow:hidden; - padding: 25px 20px 0px 20px; - color:#000; - } - .main-content{ - width: 100%; /* 400px */ - height: 100%; - font-family: Roboto; - margin: 0 auto; - background-color: #fff; - padding: 15px 20px 0 20px; - } - .content-top{ - background: #f3f2f2; - height: 20px; - margin: 0 auto; - border-top-left-radius: 25px; - border-top-right-radius: 25px; - transform: translate3d(0, 1px, 0); +ion-content { + --background: transparent; + --border-radius: 30px; } - .content-container{ - width: 100%; - margin:0 auto; - border-top-left-radius: 25px; - border-top-right-radius: 25px; - background: #ffffff; - height: 100%; - box-shadow: 0px 0px 18px rgba(0, 0, 0, 0.6); - padding: 25px 0px 0 0px; - overflow: auto; - } - .title-content{ - margin: 0px auto; - overflow: auto; - padding: 0 !important; - } - - .back-icon{ - - float: left; - font-size: rem(35); - - - } - .div-title{ - /* padding: 0!important; */ - float: left; - margin: 2.5px 0 0 5px; - color: #000 !important; - } - .title{ - color: #000 !important; - } - - .actions-icon{ - float: right; - } - .actions-icon ion-icon{ - margin-left: 10px; - float: right; - } - .item-content-date{ - color: #797979; - } - .item-content-detail{ - color: #000000; - } - .post-item{ - width: 100%; - overflow: auto; - margin: 0 auto; - border-radius: 0px; - padding: 0!important; - } - .post-img{ - width: 100%; - height: 100%; - - max-height: 400px; - min-height: 350px; - min-width: 350px; - - margin: 5px auto; - - border-radius: 0px !important; - overflow: hidden; - background-color: white; - display: flex; - justify-content: center; - align-items: center; - background: black; - - } - .post-video{ - width: 100%; - height: 100%; - - max-height: 400px; - min-height: 350px; - min-width: 350px; - - margin: 5px auto; - - border-radius: 0px !important; - overflow: hidden; - background-color: white; - display: flex; - justify-content: center; - background: black; - - } - video{ - max-width: -webkit-fill-available; - } - .post-img img{ - height: 100%; - max-height: 420px; - } - .post-content{ - margin: 0 auto; - margin-bottom: 35px; - } - .post-title-time{ - width: 100%; - overflow: auto; - margin-top: 10px; - } - .post-title{ - width: 60%; - float: left; - color: #0d89d1; - } -.post-data{ - width: 40%; - float: left; - color: #797979; - text-align: right; +ion-toolbar { + --border-width: 0 !important; + --border-style: none; + --padding-top: 0px !important; + --padding-start: 0px !important; + --padding-right: 0px !important; + --padding-end: 0px !important; } - .post-description{ - color: #000; - } +.div-top-header { + width: 400px; + margin: 0 auto; + background-color: #0782c9; + padding-top: 15px; + border: 0 !important; +} +.div-search { + font-size: rem(45); + float: left; + margin: 0 0 0 10px; +} +.div-logo { + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; +} +.div-logo img { + width: 100%; +} +.div-profile { + font-size: rem(45); + float: right; + margin-right: 10px; +} +.main-header { + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + background-color: #fff; + overflow: hidden; + padding: 25px 20px 0px 20px; + color: #000; +} +.main-content { + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + padding: 15px 20px 0 20px; +} +.content-top { + background: #f3f2f2; + height: 20px; + margin: 0 auto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + transform: translate3d(0, 1px, 0); +} +.content-container { + width: 100%; + margin: 0 auto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background: #ffffff; + height: 100%; + box-shadow: 0px 0px 18px rgba(0, 0, 0, 0.6); + padding: 25px 0px 0 0px; + overflow: auto; +} +.title-content { + margin: 0px auto; + overflow: auto; + padding: 0 !important; +} + +.back-icon { + float: left; + font-size: rem(35); +} +.div-title { + /* padding: 0!important; */ + float: left; + margin: 2.5px 0 0 5px; + color: #000 !important; +} +.title { + color: #000 !important; +} + +.actions-icon { + float: right; +} +.actions-icon ion-icon { + margin-left: 10px; + float: right; +} +.item-content-date { + color: #797979; +} +.item-content-detail { + color: #000000; +} +.post-item { + width: 100%; + overflow: auto; + margin: 0 auto; + border-radius: 0px; + padding: 0 !important; +} +.post-img { + width: 100%; + height: 100%; + + max-height: 400px; + min-height: 350px; + min-width: 350px; + + margin: 5px auto; + + border-radius: 0px !important; + overflow: hidden; + background-color: white; + display: flex; + justify-content: center; + align-items: center; + background: black; +} +.post-video { + width: 100%; + height: 100%; + + max-height: 400px; + min-height: 350px; + min-width: 350px; + + margin: 5px auto; + + border-radius: 0px !important; + overflow: hidden; + background-color: white; + display: flex; + justify-content: center; + background: black; +} +video { + max-width: -webkit-fill-available; +} +.post-img img { + height: 100%; + max-height: 420px; +} +.post-content { + margin: 0 auto; + margin-bottom: 35px; +} +.post-title-time { + width: 100%; + overflow: auto; + margin-top: 10px; +} +.post-title { + width: 60%; + float: left; + color: #0d89d1; +} +.post-data { + width: 40%; + float: left; + color: #797979; + text-align: right; +} +.post-description { + color: #000; +} .font-13-em { font-size: 0.8125em !important; } + +.numbertext { + color: #f2f2f2; + font-size: 12px; + padding: 8px 12px; + position: absolute; + top: 0; +} + +.prev, +.next { + cursor: pointer; + position: absolute; + top: 50%; + width: auto; + margin-top: -22px; + padding: 16px; + color: white; + font-weight: bold; + font-size: 18px; + transition: 0.6s ease; + border-radius: 0 3px 3px 0; + user-select: none; +} + +/* Position the "next button" to the right */ +.next { + right: 0; + border-radius: 3px 0 0 3px; +} + +/* On hover, add a black background color with a little bit see-through */ +.prev:hover, +.next:hover { + background-color: rgba(0, 0, 0, 0.8); +} + +.dot { + cursor: pointer; + height: 15px; + width: 15px; + margin: 0 2px; + background-color: #bbb; + border-radius: 50%; + display: inline-block; + transition: background-color 0.6s ease; +} + +.active, +.dot:hover { + background-color: #717171; +} + +swiper-container { + width: 100%; + height: 100%; +} + +swiper-slide { + text-align: center; + font-size: 18px; + background: #ffff; + display: flex; + justify-content: center; + align-items: center; +} + +swiper-slide img { + width: 100%; + height: 100%; + + max-height: 400px; + min-height: 350px; + min-width: 350px; + + margin: 5px auto; + + border-radius: 0px !important; + overflow: hidden; + background-color: white; + display: flex; + justify-content: center; + align-items: center; + background: black; +} + +swiper-slide video { + width: 100%; + height: 100%; + + max-height: 400px; + min-height: 350px; + min-width: 350px; + + margin: 5px auto; + + border-radius: 0px !important; + overflow: hidden; + background-color: white; + display: flex; + justify-content: center; + background: black; +} diff --git a/src/app/pages/publications/view-publications/view-publications.page.ts b/src/app/pages/publications/view-publications/view-publications.page.ts index eef8dd532..25aed5f5a 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.ts +++ b/src/app/pages/publications/view-publications/view-publications.page.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; -import { ModalController } from '@ionic/angular'; +import { ModalController,IonicSlides } from '@ionic/angular'; import { Publication } from 'src/app/models/publication'; import { PublicationFolder } from 'src/app/models/publicationfolder'; import { PublicationPipe } from 'src/app/pipes/publication.pipe'; @@ -15,6 +15,7 @@ import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { Storage } from '@ionic/storage'; import { PublicationFolderService } from 'src/app/store/publication-folder.service'; import { CapacitorVideoPlayer } from 'capacitor-video-player'; +import { checkFileTypeService } from 'src/app/services/checkFileType.service'; @Component({ @@ -31,13 +32,23 @@ export class ViewPublicationsPage implements OnInit { folderId: string; id: string; error: any; + arrayOfFile: any = []; publicationPipe = new PublicationPipe() publicationDitails: any; getpublication = []; private videoplayer: any; private videoUrl: any; - + slideOpts = { + initialSlide: 0, + speed: 400, + loop: true, + pagination : { + el: '.swiper-pagination', + clickable: true + } + }; + swiperModules = [IonicSlides]; constructor( private modalController: ModalController, @@ -50,7 +61,8 @@ export class ViewPublicationsPage implements OnInit { public p: PermissionService, private httpErroHandle: HttpErrorHandle, private storage: Storage, - public publicationFolderService: PublicationFolderService,) { + public publicationFolderService: PublicationFolderService, + public checkFileType: checkFileTypeService) { this.createPublicationList() @@ -68,7 +80,7 @@ export class ViewPublicationsPage implements OnInit { } ngOnInit() { - + this.videoplayer = CapacitorVideoPlayer; if (typeof (this.folderId) == 'object') { this.folderId = this.folderId['ProcessId'] @@ -209,7 +221,8 @@ export class ViewPublicationsPage implements OnInit { async loadPublication(publicationId, folderId) { let Publication = await this.publications.GetPublicationWithArrayOfFilesById(publicationId).toPromise(); - console.log('Publications with array of file: ', Publication) + console.log('Publications with array of file: ', Publication.Files) + this.arrayOfFile = Publication.Files let publicationDetails: Publication = this.publicationPipe.itemList(Publication) const findIndex = this.publicationFindIndex(publicationId, folderId) diff --git a/src/app/pipes/publication.pipe.ts b/src/app/pipes/publication.pipe.ts index f8bfcab94..cde336178 100644 --- a/src/app/pipes/publication.pipe.ts +++ b/src/app/pipes/publication.pipe.ts @@ -19,7 +19,7 @@ export class PublicationPipe implements PipeTransform { "Message": element.Message, "DatePublication": element.DatePublication, /* image:itemImage, */ - "FileBase64": "data:image/jpg;base64," + element.FileBase64, + "Files": element.Files, "OriginalFileName": element.OriginalFileName, "FileExtension": element.FileExtension, "OrganicEntityId": element.OrganicEntityId, diff --git a/src/app/services/attachments.service.ts b/src/app/services/attachments.service.ts index f44e1390e..9d973afd8 100644 --- a/src/app/services/attachments.service.ts +++ b/src/app/services/attachments.service.ts @@ -33,7 +33,7 @@ export class AttachmentsService { setHeader() { this.loggeduser = SessionStore.user this.headers = new HttpHeaders();; - this.headers = this.headers.set('Authorization', SessionStore.user.BasicAuthKey); + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); } uploadFile(formData: any) { diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 7c10fa3d6..4992452b3 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -3,7 +3,7 @@ import { StorageService } from './storage.service'; import { HttpClient, HttpHeaders, HttpEventType } from '@angular/common/http'; import { LoginUserRespose, UserForm, UserSession } from '../models/user.model'; import { environment } from 'src/environments/environment'; -import { BehaviorSubject } from 'rxjs'; +import { BehaviorSubject, of } from 'rxjs'; import { AlertController } from '@ionic/angular'; import { SessionStore } from '../store/session.service'; import { AESEncrypt } from '../services/aesencrypt.service'; @@ -21,6 +21,7 @@ import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { captureException } from '@sentry/angular'; import { CPSession } from '../store/documentManagement'; +import { catchError, tap } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) @@ -80,17 +81,24 @@ export class AuthService { } async login(user: UserForm, { saveSession = true }): Promise { - user.BasicAuthKey = 'Basic ' + btoa(user.username + ':' + this.aesencrypt.encrypt(user.password, user.username)); + user.BasicAuthKey = btoa(user.username + ':' + this.aesencrypt.encrypt(user.password, user.username)); this.headers = this.headers.set('Authorization', user.BasicAuthKey); + this.opts = { - headers: this.headers, + /* headers: this.headers, */ + "Content-Type": "application/json", + "Accept": "application/json", + } + let body = { + "Auth": user.BasicAuthKey, + "ChannelId": 1 } let response: any; try { - response = await this.http.post(environment.apiURL + "UserAuthentication/Login", '', this.opts).toPromise(); + response = await this.http.post(environment.apiURL + "UserAuthentication/Login", body, this.opts).toPromise(); if (saveSession) { @@ -117,7 +125,7 @@ export class AuthService { let response: any; try { - response = await this.http.post(environment.apiURL + "UserAuthentication/LoginJwt", '', this.opts).toPromise(); + response = await this.http.post(environment.apiURL + "UserAuthentication/Login", '', this.opts).toPromise(); console.log('JWT', response) if (saveSession) { @@ -169,7 +177,7 @@ export class AuthService { if (SessionStore.user.ChatData?.data) { this.RochetChatConnectorService.connect(); this.RochetChatConnectorService.login().then((message: any) => { - console.log('Chat login',message ) + console.log('Chat login', message) SessionStore.user.RochetChatUserId = message.result.id SessionStore.save() @@ -293,4 +301,46 @@ export class AuthService { await alert.present(); } + + async logoutUser() { + + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); + + this.opts = { + headers: this.headers, + } + + let response: any; + try { + response = await this.http.delete(environment.apiURL + "userauthentication/Logout", this.opts).toPromise(); + SessionStore.user.Authorization = ""; + SessionStore.user.RefreshToken = ""; + } catch (error) { + this.errorHandler.handleError(error); + this.httpErroHandle.loginHttpStatusHandle(error) + captureException(error); + } finally { + return response + } + } + + refreshToken() { + + return this.http + .put(environment.apiURL + "UserAuthentication/RefreshToken", { + refreshToken: SessionStore.user.RefreshToken, + },) + .pipe( + tap((tokens) => { + console.log(tokens) + SessionStore.user.Authorization = tokens.Authorization; + SessionStore.user.RefreshToken = tokens.refreshToken; + + }), + catchError((error) => { + this.logoutUser(); + return of(false); + }) + ); + } } diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index 974278731..323d75925 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -371,7 +371,7 @@ export class ChatService { async refreshtoken() { if(this.headers && SessionStore.user.ChatData) { - this.headers = this.headers.set('Authorization', SessionStore.user.BasicAuthKey); + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); let options = { headers: this.headers }; diff --git a/src/app/services/contacts.service.ts b/src/app/services/contacts.service.ts index 41bb3674b..717caa573 100644 --- a/src/app/services/contacts.service.ts +++ b/src/app/services/contacts.service.ts @@ -37,7 +37,7 @@ export class ContactsService { setHeader() { this.loggeduser = SessionStore.user; this.headers = new HttpHeaders();; - this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); } getContacts(namefilter:string): Observable{ diff --git a/src/app/services/events.service.ts b/src/app/services/events.service.ts index c5417b975..ccd4d9f4e 100644 --- a/src/app/services/events.service.ts +++ b/src/app/services/events.service.ts @@ -99,7 +99,7 @@ export class EventsService { this.headerSharedOficial= new HttpHeaders();; this.headerSharedPessoal= new HttpHeaders();; - this.headers = this.headers.set('Authorization', SessionStore.user.BasicAuthKey); + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.usersCalendarIds = []; this.calendarNames = {} @@ -137,7 +137,7 @@ export class EventsService { this.hasOwnOficial = true - this.headersMdOficial = this.headersMdOficial.set('Authorization', SessionStore.user.BasicAuthKey); + this.headersMdOficial = this.headersMdOficial.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headersMdOficial = this.headersMdOficial.set('CalendarId', calendar.CalendarId); this.headersMdOficial = this.headersMdOficial.set('CalendarRoleId', calendar.CalendarRoleId); } @@ -145,7 +145,7 @@ export class EventsService { this.hasOwnPessoal = true - this.headersMdPessoal = this.headersMdPessoal.set('Authorization', SessionStore.user.BasicAuthKey); + this.headersMdPessoal = this.headersMdPessoal.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headersMdPessoal = this.headersMdPessoal.set('CalendarId', calendar.CalendarId); this.headersMdPessoal = this.headersMdPessoal.set('CalendarRoleId', calendar.CalendarRoleId); @@ -159,7 +159,7 @@ export class EventsService { this.hasSharedOficial = true - this.headersSharedOficial = this.headersSharedOficial.set('Authorization', SessionStore.user.BasicAuthKey); + this.headersSharedOficial = this.headersSharedOficial.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headersSharedOficial = this.headersSharedOficial.set('CalendarId', sharedCalendar.CalendarId); this.headersSharedOficial = this.headersSharedOficial.set('CalendarRoleId', sharedCalendar.CalendarRoleId); } @@ -167,7 +167,7 @@ export class EventsService { this.hasSharedPessoal = true - this.headersSharedPessoal = this.headersSharedPessoal.set('Authorization', SessionStore.user.BasicAuthKey); + this.headersSharedPessoal = this.headersSharedPessoal.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headersSharedPessoal = this.headersSharedPessoal.set('CalendarId', sharedCalendar.CalendarId); this.headersSharedPessoal = this.headersSharedPessoal.set('CalendarRoleId', sharedCalendar.CalendarRoleId); } @@ -183,7 +183,7 @@ export class EventsService { this.hasOwnOficial = true - this.headersPrOficial = this.headersPrOficial.set('Authorization', SessionStore.user.BasicAuthKey); + this.headersPrOficial = this.headersPrOficial.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headersPrOficial = this.headersPrOficial.set('CalendarId', calendar.CalendarId); this.headersPrOficial = this.headersPrOficial.set('CalendarRoleId', calendar.CalendarRoleId); } @@ -191,7 +191,7 @@ export class EventsService { this.hasOwnPessoal = true - this.headersPrPessoal = this.headersPrPessoal.set('Authorization', SessionStore.user.BasicAuthKey); + this.headersPrPessoal = this.headersPrPessoal.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headersPrPessoal = this.headersPrPessoal.set('CalendarId', calendar.CalendarId); this.headersPrPessoal = this.headersPrPessoal.set('CalendarRoleId', calendar.CalendarRoleId); @@ -216,7 +216,7 @@ export class EventsService { this.hasOwnOficial = true - this.headerOwnOficial = this.headerOwnOficial.set('Authorization', SessionStore.user.BasicAuthKey); + this.headerOwnOficial = this.headerOwnOficial.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headerOwnOficial = this.headerOwnOficial.set('CalendarId', calendar.CalendarId); this.headerOwnOficial = this.headerOwnOficial.set('CalendarRoleId', calendar.CalendarRoleId); this.headerOwnOficial = this.headerOwnOficial.set('CalendarName', calendar.CalendarName); @@ -225,7 +225,7 @@ export class EventsService { this.hasOwnPessoal = true - this.headerOwnPessoal = this.headerOwnPessoal.set('Authorization', SessionStore.user.BasicAuthKey); + this.headerOwnPessoal = this.headerOwnPessoal.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headerOwnPessoal = this.headerOwnPessoal.set('CalendarId', calendar.CalendarId); this.headerOwnPessoal = this.headerOwnPessoal.set('CalendarRoleId', calendar.CalendarRoleId); this.headerOwnPessoal = this.headerOwnPessoal.set('CalendarName', calendar.CalendarName); @@ -248,7 +248,7 @@ export class EventsService { if (sharedCalendar.CalendarName == 'Oficial') { this.hasSharedOficial = true - this.headerSharedOficial = this.headerSharedOficial.set('Authorization',SessionStore.user.BasicAuthKey); + this.headerSharedOficial = this.headerSharedOficial.set('Authorization','Bearer ' + SessionStore.user.Authorization); this.headerSharedOficial = this.headerSharedOficial.set('CalendarId', sharedCalendar.CalendarId); this.headerSharedOficial = this.headerSharedOficial.set('CalendarRoleId', sharedCalendar.CalendarRoleId); this.headerSharedOficial = this.headerSharedOficial.set('CalendarName', sharedCalendar.CalendarName); @@ -257,7 +257,7 @@ export class EventsService { this.hasSharedPessoal = true - this.headerSharedPessoal = this.headerSharedPessoal.set('Authorization',SessionStore.user.BasicAuthKey); + this.headerSharedPessoal = this.headerSharedPessoal.set('Authorization','Bearer ' + SessionStore.user.Authorization); this.headerSharedPessoal = this.headerSharedPessoal.set('CalendarId', sharedCalendar.CalendarId); this.headerSharedPessoal = this.headerSharedPessoal.set('CalendarRoleId', sharedCalendar.CalendarRoleId); this.headerSharedPessoal = this.headerSharedPessoal.set('CalendarName', sharedCalendar.CalendarName); @@ -378,7 +378,7 @@ export class EventsService { makeHeader(calendar: calendarInterface) { let header = new HttpHeaders();; - header = header.set('Authorization', SessionStore.user.BasicAuthKey); + header = header.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); header = header.set('CalendarId', calendar.CalendarId); header = header.set('CalendarRoleId', calendar.CalendarRoleId); header = header.set('CalendarName', calendar.CalendarName); @@ -616,7 +616,7 @@ export class EventsService { for(let agendasCalendar of agendasCalendars) { var header = new HttpHeaders();; - header = header.set('Authorization', SessionStore.user.BasicAuthKey); + header = header.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); header = header.set('CalendarId', agendasCalendar.CalendarId); header = header.set('CalendarRoleId', agendasCalendar.CalendarRoleId); header = header.set('CalendarName', agendasCalendar.CalendarName); @@ -649,7 +649,7 @@ export class EventsService { for (let sharedCalendar of SessionStore.user.SharedCalendars) { var header = new HttpHeaders();; - header = header.set('Authorization', SessionStore.user.BasicAuthKey); + header = header.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); header = header.set('CalendarId', sharedCalendar.CalendarId); header = header.set('CalendarRoleId', sharedCalendar.CalendarRoleId); header = header.set('CalendarName', sharedCalendar.CalendarName); diff --git a/src/app/services/organic-entity.service.ts b/src/app/services/organic-entity.service.ts index aa51be383..311887847 100644 --- a/src/app/services/organic-entity.service.ts +++ b/src/app/services/organic-entity.service.ts @@ -32,7 +32,7 @@ export class OrganicEntityService { setHeader() { this.loggeduser = SessionStore.user; this.headers = new HttpHeaders();; - this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); } getOrganicEntity(): Observable{ diff --git a/src/app/services/processes.service.ts b/src/app/services/processes.service.ts index d653e51ab..397e75ce2 100644 --- a/src/app/services/processes.service.ts +++ b/src/app/services/processes.service.ts @@ -46,11 +46,11 @@ export class ProcessesService { this.headers = new HttpHeaders();; - this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); this.headers2 = new HttpHeaders();; - this.headers2 = this.headers2.set('Authorization', "Bearer " + CPSession.AuthorizationJwt); + this.headers2 = this.headers2.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); } diff --git a/src/app/services/publications.service.ts b/src/app/services/publications.service.ts index 60d62a34b..36e6e1b3b 100644 --- a/src/app/services/publications.service.ts +++ b/src/app/services/publications.service.ts @@ -37,7 +37,7 @@ export class PublicationsService { setHeader () { this.loggeduser = SessionStore.user; this.headers = new HttpHeaders();; - this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); } GetPublicationFolderList(){ @@ -218,7 +218,8 @@ GetIdsPublicationNext(id:any){ //my last tries CreatePublication(folderId:any,body:any){ - const geturl = environment.apiURL + 'presidentialActions/'+folderId+'/posts'; + console.log('body publi', body) + const geturl = environment.apiURL + 'presidentialActions/'+folderId+'/v2/posts'; let params = new HttpParams(); params = params.set("folderId", folderId); let options = { diff --git a/src/app/services/search.service.ts b/src/app/services/search.service.ts index 76ce90440..47713c2c3 100644 --- a/src/app/services/search.service.ts +++ b/src/app/services/search.service.ts @@ -38,7 +38,7 @@ export class SearchService { setHeader() { this.loggeduser = SessionStore.user; this.headers = new HttpHeaders();; - this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); + this.headers = this.headers.set('Authorization', 'Bearer ' + SessionStore.user.Authorization); } diff --git a/src/app/shared/publication/new-publication/new-publication.page.html b/src/app/shared/publication/new-publication/new-publication.page.html index ab9fc9e81..236ea3868 100644 --- a/src/app/shared/publication/new-publication/new-publication.page.html +++ b/src/app/shared/publication/new-publication/new-publication.page.html @@ -1,117 +1,134 @@
-
{{ publicationTitle }}
- Campos marcados com * são obrigatórios + Campos marcados com * são obrigatórios
-
- +
+ -
- -
+
+ +
-
-
-
- -
-
- +
+
+
+ +
+
+ +
-
- - - - -
- Fotografia Anexada -
-
- - - - - - - - - - - -

{{capturedImageTitle}}

- -
-
- -
-
- -
-
- + +
+ Fotografia Anexada
-
- - +
+ + + + + + + - + + + + +

mais {{ seletedContent.length - displayLimit }}

+
+ -

{{publication.OriginalFileName}}.{{publication.FileExtension}}

+

{{capturedImageTitle}}

-
-
- - -
- -
- - -
-
- Tirar Fotografia + + + + + + +
+ +
+ + +
+
+ Tirar Fotografia +
-
+
-
- -
- - -
-
- Anexar Fotografia -
-
+
+ +
+ + +
+
+ Anexar Fotografia +
+
+
-
@@ -127,6 +144,6 @@ Cancelar - + - + \ No newline at end of file diff --git a/src/app/shared/publication/new-publication/new-publication.page.ts b/src/app/shared/publication/new-publication/new-publication.page.ts index fc7d1f27d..0aa12b550 100644 --- a/src/app/shared/publication/new-publication/new-publication.page.ts +++ b/src/app/shared/publication/new-publication/new-publication.page.ts @@ -13,6 +13,7 @@ import { PublicationFolderService } from 'src/app/store/publication-folder.servi import { FilePicker } from '@capawesome/capacitor-file-picker'; import { Directory, Encoding, Filesystem } from '@capacitor/filesystem'; import { utf8Encode } from '@angular/compiler/src/util'; +import { checkFileTypeService } from 'src/app/services/checkFileType.service'; @Component({ selector: 'app-new-publication', @@ -49,6 +50,8 @@ export class NewPublicationPage implements OnInit { fileType: string; filecontent: boolean; captureContent: any; + seletedContent: any[] = [] + displayLimit = 4; constructor( public photoService: PhotoService, @@ -56,15 +59,33 @@ export class NewPublicationPage implements OnInit { private toastService: ToastService, public ThemeService: ThemeService, private httpErroHandle: HttpErrorHandle, - public PublicationFolderService: PublicationFolderService + public PublicationFolderService: PublicationFolderService, + public checkFileType: checkFileTypeService ) { this.publicationTitle = 'Nova Publicação'; - + + if (this.publication) { + this.seletedContent = this.publication.Files; + this.filecontent = true; + } + } ngOnInit() { + this.publication = { + DateIndex: "", + DocumentId: 0, + ProcessId: "", + Title: "", + Message: "", + DatePublication: "", + Files: [], + OriginalFileName: "", + } + this.pub = this.publication; + this.setTitle(); this.setData() } @@ -84,10 +105,10 @@ export class NewPublicationPage implements OnInit { getPublicationDetail() { - + console.log('edit 1', this.publicationType) if (this.publicationType != '2') { this.showLoader = true; - this.publications.GetPublicationById(this.documentId).subscribe(res => { + this.publications.GetPublicationWithArrayOfFilesById(this.documentId).subscribe(res => { this.publication = { DateIndex: res.DateIndex, DocumentId: res.DocumentId, @@ -95,13 +116,16 @@ export class NewPublicationPage implements OnInit { Title: res.Title, Message: res.Message, DatePublication: res.DatePublication, - FileBase64: "data:image/jpg;base64," + res.FileBase64, + Files: res.Files, OriginalFileName: res.OriginalFileName, FileExtension: res.FileExtension, } + console.log('edit',this.publication) this.pub = this.publication; + this.seletedContent = this.publication.Files; this.showLoader = false; - }, () => { + }, (error) => { + console.log(error) this.showLoader = false; this.goBack() }); @@ -127,8 +151,11 @@ export class NewPublicationPage implements OnInit { 800, // maxHeight 0.9 // quality ).then((picture) => { - console.log('taked: ', picture) - this.capturedImage = picture + let fileObject = { + FileBase64: picture, + FileExtension: this.removeTextBeforeSlash('jpeg') + } + this.seletedContent.push(fileObject) }); } @@ -150,8 +177,11 @@ export class NewPublicationPage implements OnInit { 800, // maxHeight 0.9 // quality ).then((picture) => { - console.log('Selected: ', picture) - this.capturedImage = picture + let fileObject = { + FileBase64: picture, + FileExtension: this.removeTextBeforeSlash('jpeg') + } + this.seletedContent.push(fileObject) }); } @@ -162,20 +192,25 @@ export class NewPublicationPage implements OnInit { ({ multiple: true, }); - console.log(this.fileType) - this.fileType = result.files[0].mimeType - this.convertBlobToBase64(result.files[0].blob).then((value) => { + result.files.forEach(async element => { + if(this.checkFileType.checkFileType(element.mimeType) == 'image') { + this.convertBlobToBase64(element.blob).then((value) => { - this.filecontent = true; - if (this.fileType.includes("video") && this.fileType.indexOf("video") < this.fileType.indexOf("/")) { - this.fileType = "video" - this.captureContent = value; + console.log(element.mimeType) + let fileObject = { + FileBase64: value, + FileExtension: this.removeTextBeforeSlash(element.mimeType) + } + this.seletedContent.push(fileObject) + this.filecontent = true; + + }) } else { - this.fileType = "image" - this.captureContent = value; + this.httpErroHandle.validationMessagge('filetype'); } + + }); - }) }; @@ -222,7 +257,7 @@ export class NewPublicationPage implements OnInit { const loader = this.toastService.loading() - if (this.fileType == 'image') { + if (this.seletedContent.length > 0) { this.publication = { DateIndex: this.publication.DateIndex, @@ -232,23 +267,30 @@ export class NewPublicationPage implements OnInit { Message: this.pub.Message, DatePublication: this.publication.DatePublication, OriginalFileName: this.publication.OriginalFileName || 'foto', - FileBase64: this.captureContent, - FileExtension: 'jpeg', + Files: this.seletedContent, } - } else if (this.fileType == 'video') { - this.publication = { - DateIndex: this.publication.DateIndex, - DocumentId: this.publication.DocumentId, - ProcessId: this.publication.ProcessId, - Title: this.pub.Title, - Message: this.pub.Message, - DatePublication: this.publication.DatePublication, - OriginalFileName: this.publication.OriginalFileName || 'video', - FileBase64: this.captureContent, - FileExtension: 'mp4', + try { + + const response = await this.publications.UpdatePublication(this.publication.ProcessId, this.publication).toPromise() + + this.httpErroHandle.httpsSucessMessagge('Editar publicação') + console.log({ response }) + + this.goBack(); + + } catch (error) { + this.httpErroHandle.httpStatusHandle(error) + if (error.status == 404) { + this.PublicationFolderService.deletePost(this.publication.ProcessId, this.publication.DocumentId) + this.goBack(); + } + } finally { + loader.remove() } - } + + } else { + }/* else if (!this.PublicationFolderService.PublicationHasImage(this.publication)) { // this.publication = { @@ -259,7 +301,7 @@ export class NewPublicationPage implements OnInit { Message: this.pub.Message, DatePublication: this.publication.DatePublication, OriginalFileName: this.publication.OriginalFileName, - FileBase64: "data:image/png;base64,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", + Files: "data:image/png;base64,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", FileExtension: 'jpeg', } @@ -272,36 +314,17 @@ export class NewPublicationPage implements OnInit { Message: this.pub.Message, DatePublication: this.publication.DatePublication, OriginalFileName: this.publication.OriginalFileName, - FileBase64: this.publication.FileBase64, + Files: this.publication.Files, FileExtension: this.publication.FileExtension, } - } - - try { - - const response = await this.publications.UpdatePublication(this.publication.ProcessId, this.publication).toPromise() - - this.httpErroHandle.httpsSucessMessagge('Editar publicação') - console.log({ response }) - - this.goBack(); - - } catch (error) { - this.httpErroHandle.httpStatusHandle(error) - if (error.status == 404) { - this.PublicationFolderService.deletePost(this.publication.ProcessId, this.publication.DocumentId) - this.goBack(); - } - } finally { - loader.remove() - } + } */ } else { let time = new Date() - if (this.fileType == "image") { + if (this.seletedContent.length > 0) { this.publication = { DateIndex: time, DocumentId: null, @@ -310,43 +333,28 @@ export class NewPublicationPage implements OnInit { Message: this.pub.Message, DatePublication: time, OriginalFileName: this.capturedImageTitle || 'foto', - FileBase64: this.captureContent || "data:image/png;base64,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", - FileExtension: 'jpeg', - } - } else if (this.fileType == "video") { - this.publication = { - DateIndex: time, - DocumentId: null, - ProcessId: this.folderId, - Title: this.pub.Title, - Message: this.pub.Message, - DatePublication: time, - OriginalFileName: this.capturedImageTitle || 'video', - FileBase64: this.captureContent || "data:image/png;base64,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", - FileExtension: 'mp4', - } - } - - - const loader = this.toastService.loading() - - try { - - await this.publications.CreatePublication(this.publication.ProcessId, this.publication).toPromise() - if (this.publicationTitle == '1') { - - } else if (this.publicationTitle == '2') { - this.httpErroHandle.httpsSucessMessagge('Criar publicação') - } else if (this.publicationTitle == '3') { - this.httpErroHandle.httpsSucessMessagge('Editar publicação') + Files: this.seletedContent, } + const loader = this.toastService.loading() - this.goBackToViewPublications.emit(); - } catch (error) { - this.httpErroHandle.httpStatusHandle(error) - } finally { - loader.remove() + try { + + await this.publications.CreatePublication(this.publication.ProcessId, this.publication).toPromise() + if (this.publicationTitle == '1') { + + } else if (this.publicationTitle == '2') { + this.httpErroHandle.httpsSucessMessagge('Criar publicação') + } else if (this.publicationTitle == '3') { + this.httpErroHandle.httpsSucessMessagge('Editar publicação') + } + + this.goBackToViewPublications.emit(); + } catch (error) { + this.httpErroHandle.httpStatusHandle(error) + } finally { + loader.remove() + } } } @@ -358,13 +366,12 @@ export class NewPublicationPage implements OnInit { clear() { this.capturedImageTitle = ''; - this.capturedImage = ''; - this.captureContent = "" + this.seletedContent = []; } deletePublicationImage() { - this.publication.FileBase64 = "" + this.publication.Files = [] } setTitle() { @@ -438,5 +445,14 @@ export class NewPublicationPage implements OnInit { }) } + removeTextBeforeSlash(inputString) { + if (inputString.includes('/')) { + const parts = inputString.split('/'); + return parts.length > 1 ? parts[1] : inputString; + } else { + return inputString; + } + } + } diff --git a/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.html b/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.html index d460434cf..4a0a5c0f3 100644 --- a/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.html +++ b/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.html @@ -32,16 +32,23 @@
-
- image - - -
-
+ + +
+ image + + + +
+
+
+
{{publication.Message}}
diff --git a/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.scss b/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.scss index ab52136dd..c8a77e703 100644 --- a/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.scss +++ b/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.scss @@ -98,3 +98,38 @@ margin: 0 auto; margin-bottom: 35px; } + +swiper-slide img { + display: block; + width: 100%; + height: 100%; + + max-height: 1000px; + max-width: 868px; + + min-height: 350px; + min-width: 468px; + object-fit: cover; + text-align: center; + display: flex; + justify-content: center; + align-items: center; +} + +swiper-slide video { + display: block; + width: 100%; + height: 100%; + + max-height: 1000px; + max-width: 868px; + + min-height: 350px; + min-width: 468px; + object-fit: cover; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + +} diff --git a/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.ts b/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.ts index 927f3332b..b2657bb6f 100644 --- a/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.ts +++ b/src/app/shared/publication/view-publications/publication-detail/publication-detail.page.ts @@ -10,6 +10,7 @@ import { PermissionService } from 'src/app/services/permission.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { PublicationFolderService } from 'src/app/store/publication-folder.service'; import { PublicationPipe } from 'src/app/pipes/publication.pipe'; +import { checkFileTypeService } from 'src/app/services/checkFileType.service'; @Component({ selector: 'app-publication-detail-shared', templateUrl: './publication-detail.page.html', @@ -34,6 +35,7 @@ export class PublicationDetailPage implements OnInit { public p:PermissionService, private httpErrorHandle: HttpErrorHandle, public publicationFolderService: PublicationFolderService, + public checkFileType: checkFileTypeService ) { /* this.folderId = this.navParams.get('folderIdId'); */ @@ -45,7 +47,7 @@ export class PublicationDetailPage implements OnInit { Message: '', /* image: null, */ DatePublication: null, - FileBase64: '', + Files: [], OriginalFileName: '', FileExtension: '', }; @@ -80,7 +82,7 @@ export class PublicationDetailPage implements OnInit { console.log('API res') this.showLoader = true; - this.publications.GetPublicationById(this.publicationId).subscribe(res => { + this.publications.GetPublicationWithArrayOfFilesById(this.publicationId).subscribe(res => { this.publication = this.publicationPipe.itemList(res) diff --git a/src/app/shared/publication/view-publications/view-publications.page.html b/src/app/shared/publication/view-publications/view-publications.page.html index 74bdb9b30..26dab601a 100644 --- a/src/app/shared/publication/view-publications/view-publications.page.html +++ b/src/app/shared/publication/view-publications/view-publications.page.html @@ -28,27 +28,32 @@
- + -
+

{{publicationFolderService.FolderDetails[folderId].Detail}}

-
- -
-
- -
+ + +
+ + + +
+
+
diff --git a/src/app/shared/publication/view-publications/view-publications.page.scss b/src/app/shared/publication/view-publications/view-publications.page.scss index 883d1571c..f79e29c5c 100644 --- a/src/app/shared/publication/view-publications/view-publications.page.scss +++ b/src/app/shared/publication/view-publications/view-publications.page.scss @@ -234,8 +234,6 @@ ion-fab-button:hover{ } - - ion-card{ width: fit-content; max-width: calc(468px + 16px + 16px); @@ -244,3 +242,52 @@ ion-card{ margin-bottom: 20px; } + +swiper-container { + width: 100%; + height: 100%; +} + +swiper-slide { + text-align: center; + font-size: 18px; + background: #ffff; + display: flex; + justify-content: center; + align-items: center; +} + +swiper-slide img { + display: block; + width: 100%; + height: 100%; + + max-height: 500px; + max-width: 468px; + + min-height: 350px; + min-width: 468px; + object-fit: cover; + text-align: center; + display: flex; + justify-content: center; + align-items: center; +} + +swiper-slide video { + display: block; + width: 100%; + height: 100%; + + max-height: 500px; + max-width: 468px; + + min-height: 350px; + min-width: 468px; + object-fit: fill; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + +} diff --git a/src/app/shared/publication/view-publications/view-publications.page.ts b/src/app/shared/publication/view-publications/view-publications.page.ts index 61e860d45..379de203a 100644 --- a/src/app/shared/publication/view-publications/view-publications.page.ts +++ b/src/app/shared/publication/view-publications/view-publications.page.ts @@ -1,5 +1,5 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { ModalController } from '@ionic/angular'; +import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core'; +import { IonicSlides, ModalController } from '@ionic/angular'; import { Publication } from 'src/app/models/publication'; import { PublicationFolder } from 'src/app/models/publicationfolder'; import { PublicationsService } from 'src/app/services/publications.service'; @@ -14,6 +14,7 @@ import { PermissionService } from 'src/app/services/permission.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { PublicationFolderService } from 'src/app/store/publication-folder.service'; import { AskModalPage } from 'src/app/modals/ask-modal/ask-modal.page'; +import { checkFileTypeService } from 'src/app/services/checkFileType.service'; @Component({ selector: 'app-view-publications', @@ -28,31 +29,37 @@ export class ViewPublicationsPage implements OnInit { oldpublicationIds = [] @Input() folderId: any; - @Output() addNewPublication = new EventEmitter(); - @Output() editPublication = new EventEmitter(); - @Output() openPublicationDetails= new EventEmitter(); + @Output() addNewPublication = new EventEmitter(); + @Output() editPublication = new EventEmitter(); + @Output() openPublicationDetails = new EventEmitter(); @Output() goBackToViewPublications = new EventEmitter(); - @Output() closeDesktopComponent = new EventEmitter(); + @Output() closeDesktopComponent = new EventEmitter(); @Output() goBacktoPublicationDetails = new EventEmitter(); - @Output() getActions= new EventEmitter(); + @Output() getActions = new EventEmitter(); publicationPipe = new PublicationPipe() + swiperModules = [IonicSlides]; + @ViewChild('myVideo') myVideo: any; + public lastScrollTop = 0; + public isHidden = false; + constructor( private modalController: ModalController, private publications: PublicationsService, public ThemeService: ThemeService, private toastService: ToastService, private storage: Storage, - public p:PermissionService, + public p: PermissionService, private httpErrorHandle: HttpErrorHandle, - public publicationFolderService: PublicationFolderService - ) { - this.createPublicationList() - } + public publicationFolderService: PublicationFolderService, + public checkFileType: checkFileTypeService + ) { + this.createPublicationList() + } ngOnInit() { - if(typeof(this.folderId) == 'object') { + if (typeof (this.folderId) == 'object') { this.folderId = this.folderId['ProcessId'] } @@ -69,11 +76,11 @@ export class ViewPublicationsPage implements OnInit { ngOnChanges(changes: any): void { - if(typeof(this.folderId) == 'object') { + if (typeof (this.folderId) == 'object') { this.folderId = this.folderId['ProcessId'] } - if(!this.publicationFolderService.publicationList[this.folderId]) { + if (!this.publicationFolderService.publicationList[this.folderId]) { this.publicationFolderService.FolderDetails[this.folderId] = new PublicationFolder(); } @@ -89,16 +96,16 @@ export class ViewPublicationsPage implements OnInit { createPublicationList(folderId = this.folderId) { - if(!this.publicationFolderService.publicationList[this.folderId]) { + if (!this.publicationFolderService.publicationList[this.folderId]) { this.publicationFolderService.publicationList[this.folderId] = [] } - if(!this.publicationFolderService.FolderDetails[this.folderId]) { + if (!this.publicationFolderService.FolderDetails[this.folderId]) { this.publicationFolderService.FolderDetails[this.folderId] = new PublicationFolder(); } } - doRefresh =(event) => { + doRefresh = (event) => { this.getPublicationDetail(); this.getPublicationsIds(); @@ -110,11 +117,11 @@ export class ViewPublicationsPage implements OnInit { getPublicationDetail() { const folderId = this.folderId - this.publications.GetPresidentialAction(folderId).subscribe(res=>{ + this.publications.GetPresidentialAction(folderId).subscribe(res => { // PublicationDetailsModel.create(res) this.publicationFolderService.FolderDetails[folderId] = res - this.storage.set(folderId+"name", res) + this.storage.set(folderId + "name", res) }, (error) => { this.showLoader = false; // this.httpErroHandle.httpStatusHandle(error) @@ -133,7 +140,7 @@ export class ViewPublicationsPage implements OnInit { let loadLater = [] for (let publicationId of publicationIds) { - if(!this.publicationIsPresent(publicationId, folderId)) { + if (!this.publicationIsPresent(publicationId, folderId)) { await this.loadPublication(publicationId, folderId) } else { @@ -141,15 +148,15 @@ export class ViewPublicationsPage implements OnInit { } } - for( let publicationId of loadLater) { + for (let publicationId of loadLater) { await this.loadPublication(publicationId, folderId) } - for(let localPublication of this.publicationFolderService.publicationList[folderId]) { + for (let localPublication of this.publicationFolderService.publicationList[folderId]) { const apiPublication = publicationIds.includes(localPublication.DocumentId) - if(!apiPublication) { + if (!apiPublication) { this.publicationFolderService.deletePost(folderId, localPublication.DocumentId) } } @@ -159,7 +166,7 @@ export class ViewPublicationsPage implements OnInit { this.storage.set(folderId, this.publicationFolderService.publicationList[folderId]); this.oldpublicationIds = publicationIds - } catch(error) { + } catch (error) { this.showLoader = false; } @@ -167,27 +174,27 @@ export class ViewPublicationsPage implements OnInit { _deletePublication = (folderId, publicationId) => { - this.publicationFolderService.publicationList[folderId] = this.publicationFolderService.publicationList[folderId].filter( e => e.DocumentId != publicationId) + this.publicationFolderService.publicationList[folderId] = this.publicationFolderService.publicationList[folderId].filter(e => e.DocumentId != publicationId) } publicationIsPresent(publicationId, folderId) { - return this.publicationFolderService.publicationList[folderId].find( e => e.DocumentId == publicationId ) + return this.publicationFolderService.publicationList[folderId].find(e => e.DocumentId == publicationId) } publicationFind(publicationId, folderId) { - return this.publicationFolderService.publicationList[folderId].find( e => e.DocumentId == publicationId ) + return this.publicationFolderService.publicationList[folderId].find(e => e.DocumentId == publicationId) } publicationFindIndex(publicationId, folderId) { - return this.publicationFolderService.publicationList[folderId].findIndex( e => e.DocumentId == publicationId ) + return this.publicationFolderService.publicationList[folderId].findIndex(e => e.DocumentId == publicationId) } async loadPublication(publicationId, folderId) { - let Publication = await this.publications.GetPublicationById(publicationId).toPromise(); + let Publication = await this.publications.GetPublicationWithArrayOfFilesById(publicationId).toPromise(); let publicationDetails: Publication = this.publicationPipe.itemList(Publication) const findIndex = this.publicationFindIndex(publicationId, folderId) const found = this.publicationIsPresent(publicationId, folderId) - if(!found) { + if (!found) { this.publicationFolderService.publicationList[folderId].push(publicationDetails) } else { this.publicationFolderService.publicationList[folderId][findIndex] = publicationDetails @@ -202,12 +209,12 @@ export class ViewPublicationsPage implements OnInit { } - async AddPublication(publicationType:any, folderId:any) { + async AddPublication(publicationType: any, folderId: any) { - if( window.innerWidth < 701) { + if (window.innerWidth < 701) { const modal = await this.modalController.create({ component: NewPublicationPage, - componentProps:{ + componentProps: { publicationType: publicationType, folderId: folderId, }, @@ -215,7 +222,7 @@ export class ViewPublicationsPage implements OnInit { backdropDismiss: false }); - modal.onDidDismiss().then(()=>{ + modal.onDidDismiss().then(() => { this.doRefresh(event); }); @@ -229,9 +236,9 @@ export class ViewPublicationsPage implements OnInit { } - async openEditPublication(folderId?:any){ + async openEditPublication(folderId?: any) { - if( window.innerWidth < 701) { + if (window.innerWidth < 701) { const modal = await this.modalController.create({ component: EditActionPage, componentProps: { @@ -251,7 +258,7 @@ export class ViewPublicationsPage implements OnInit { } } - async deletePublication(folderId?:any) { + async deletePublication(folderId?: any) { const modal = await this.modalController.create({ component: AskModalPage, @@ -264,7 +271,7 @@ export class ViewPublicationsPage implements OnInit { }); modal.onDidDismiss().then((res) => { - if(res.data == 'Yes') { + if (res.data == 'Yes') { const loader = this.toastService.loading(); try { this.publications.DeletePresidentialAction(folderId).toPromise(); @@ -284,10 +291,25 @@ export class ViewPublicationsPage implements OnInit { } - async viewPublicationDetail(DocumentId:string, ProcessId: string) { + async viewPublicationDetail(DocumentId: string, ProcessId: string) { - this.openPublicationDetails.emit({DocumentId, ProcessId}); + this.openPublicationDetails.emit({ DocumentId, ProcessId }); } + stopVideo() { + this.myVideo.nativeElement.pause(); + this.myVideo.nativeElement.currentTime = 0; + } + + public onScroll(event): void { + if(this.lastScrollTop < event.detail.scrollTop) { + console.log("scrolling down") + } else { + console.log("scrolling up") + } + + this.lastScrollTop = event.detail.scrollTop; + } + } diff --git a/src/app/store/publication-folder.service.ts b/src/app/store/publication-folder.service.ts index af5ece9ef..b8aca81a4 100644 --- a/src/app/store/publication-folder.service.ts +++ b/src/app/store/publication-folder.service.ts @@ -203,11 +203,11 @@ export class PublicationFolderService { PublicationHasImage(Publication: Publication) { - return Publication.FileBase64 != '' && Publication.FileBase64 != "data:image/jpg;base64,null" + return Publication.Files[0].FileBase64 != '' && Publication.Files[0].FileBase64 != "data:image/jpg;base64,null" } hasCapturedImage(Publication: Publication) { - return Publication.FileBase64 != '' && Publication.FileBase64 != "data:image/jpg;base64,null" + return Publication.Files[0].FileBase64 != '' && Publication.Files[0].FileBase64 != "data:image/jpg;base64,null" } } diff --git a/src/environments/suport/dev.ts b/src/environments/suport/dev.ts index 402a1ff96..849380ede 100644 --- a/src/environments/suport/dev.ts +++ b/src/environments/suport/dev.ts @@ -3,7 +3,7 @@ import { Environment } from './../../app/models/envarioment' export const DevProd: Environment = { id:'3', - apiURL: 'https://gdapi-dev.dyndns.info/api/', + apiURL: 'https://gdapi-dev.dyndns.info/jwt/api/', apiChatUrl: 'https://gdchat-dev.dyndns.info/api/v1/', apiWsChatUrl: 'wss://gdchat-dev.dyndns.info/websocket', apiPCURL: 'https://gdcmapi-dev.dyndns.info/api/', @@ -47,7 +47,7 @@ export const DevProd: Environment = { export const DevDev: Environment = { id:'3', - apiURL: 'https://gdapi-dev.dyndns.info/api/', + apiURL: 'https://gdapi-dev.dyndns.info/jwt/api/', apiChatUrl: 'https://gdchat-dev.dyndns.info/api/v1/', apiWsChatUrl: 'wss://gdchat-dev.dyndns.info/websocket', apiPCURL: 'https://gdcmapi-dev.dyndns.info/api/',