@chat21/chat21-ionic 3.0.60 → 3.0.61-rc11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -0
- package/README.md +2 -0
- package/angular.json +3 -0
- package/config.xml +5 -5
- package/deploy_pre.sh +10 -10
- package/deploy_prod.sh +5 -1
- package/env.sample +3 -1
- package/package.json +12 -7
- package/resources/{Android → android}/icon/drawable-hdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-ldpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-mdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xxhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xxxhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-hdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-ldpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-mdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xxxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-hdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-ldpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-mdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xxxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash.png +0 -0
- package/src/app/app-routing.module.ts +10 -0
- package/src/app/app.component.html +14 -4
- package/src/app/app.component.scss +18 -1
- package/src/app/app.component.ts +50 -16
- package/src/app/app.module.ts +7 -1
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +7 -2
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +103 -12
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +39 -36
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +5 -1
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +147 -65
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +3 -3
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +12 -2
- package/src/app/components/ddp-header/ddp-header.component.html +20 -6
- package/src/app/components/ddp-header/ddp-header.component.scss +4 -0
- package/src/app/components/ddp-header/ddp-header.component.ts +104 -10
- package/src/app/components/project-item/project-item.component.html +8 -7
- package/src/app/components/project-item/project-item.component.scss +6 -1
- package/src/app/components/project-item/project-item.component.ts +15 -2
- package/src/app/components/sidebar/sidebar.component.html +274 -0
- package/src/app/components/sidebar/sidebar.component.scss +79 -0
- package/src/app/components/sidebar/sidebar.component.spec.ts +24 -0
- package/src/app/components/sidebar/sidebar.component.ts +493 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +110 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +318 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.spec.ts +24 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +486 -0
- package/src/app/pages/conversation-detail/conversation-detail.module.ts +2 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.html +7 -5
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +1285 -790
- package/src/app/pages/conversations-list/conversations-list.module.ts +2 -1
- package/src/app/pages/conversations-list/conversations-list.page.html +18 -9
- package/src/app/pages/conversations-list/conversations-list.page.scss +9 -1
- package/src/app/pages/conversations-list/conversations-list.page.ts +753 -428
- package/src/app/pages/create-requester/create-requester-routing.module.ts +17 -0
- package/src/app/pages/create-requester/create-requester.module.ts +28 -0
- package/src/app/pages/create-requester/create-requester.page.html +67 -0
- package/src/app/pages/create-requester/create-requester.page.scss +30 -0
- package/src/app/pages/create-requester/create-requester.page.spec.ts +24 -0
- package/src/app/pages/create-requester/create-requester.page.ts +137 -0
- package/src/app/pages/create-ticket/create-ticket-routing.module.ts +17 -0
- package/src/app/pages/create-ticket/create-ticket.module.ts +28 -0
- package/src/app/pages/create-ticket/create-ticket.page.html +171 -0
- package/src/app/pages/create-ticket/create-ticket.page.scss +52 -0
- package/src/app/pages/create-ticket/create-ticket.page.spec.ts +24 -0
- package/src/app/pages/create-ticket/create-ticket.page.ts +423 -0
- package/src/app/pages/loader-preview/loader-preview.page.ts +226 -166
- package/src/app/pages/profile-info/profile-info.page.html +2 -2
- package/src/app/pages/profile-info/profile-info.page.scss +1 -1
- package/src/app/pages/profile-info/profile-info.page.ts +23 -21
- package/src/app/services/tiledesk/tiledesk.service.ts +181 -0
- package/src/app/shared/shared.module.ts +13 -0
- package/src/app/utils/scrollbar-theme.directive.ts +58 -24
- package/src/assets/i18n/de.json +55 -13
- package/src/assets/i18n/en.json +48 -6
- package/src/assets/i18n/es.json +47 -5
- package/src/assets/i18n/fr.json +50 -8
- package/src/assets/i18n/it.json +47 -5
- package/src/assets/i18n/pt.json +47 -5
- package/src/assets/i18n/ru.json +48 -6
- package/src/assets/i18n/sr.json +251 -0
- package/src/assets/i18n/tr.json +47 -5
- package/src/assets/images/default-avatar-x-select.png +0 -0
- package/src/assets/images/language_flag/ar.png +0 -0
- package/src/assets/images/language_flag/bg.png +0 -0
- package/src/assets/images/language_flag/ca.png +0 -0
- package/src/assets/images/language_flag/cs.png +0 -0
- package/src/assets/images/language_flag/da.png +0 -0
- package/src/assets/images/language_flag/de.png +0 -0
- package/src/assets/images/language_flag/el.png +0 -0
- package/src/assets/images/language_flag/en.png +0 -0
- package/src/assets/images/language_flag/es.png +0 -0
- package/src/assets/images/language_flag/fa.png +0 -0
- package/src/assets/images/language_flag/fi.png +0 -0
- package/src/assets/images/language_flag/fr.png +0 -0
- package/src/assets/images/language_flag/he.png +0 -0
- package/src/assets/images/language_flag/hi.png +0 -0
- package/src/assets/images/language_flag/hr.png +0 -0
- package/src/assets/images/language_flag/hu.png +0 -0
- package/src/assets/images/language_flag/id.png +0 -0
- package/src/assets/images/language_flag/it.png +0 -0
- package/src/assets/images/language_flag/ja.png +0 -0
- package/src/assets/images/language_flag/ko.png +0 -0
- package/src/assets/images/language_flag/ml-IN.png +0 -0
- package/src/assets/images/language_flag/ne-NP.png +0 -0
- package/src/assets/images/language_flag/nl.png +0 -0
- package/src/assets/images/language_flag/no.png +0 -0
- package/src/assets/images/language_flag/pl.png +0 -0
- package/src/assets/images/language_flag/pt-BR.png +0 -0
- package/src/assets/images/language_flag/pt.png +0 -0
- package/src/assets/images/language_flag/ro.png +0 -0
- package/src/assets/images/language_flag/ru.png +0 -0
- package/src/assets/images/language_flag/sk.png +0 -0
- package/src/assets/images/language_flag/sl.png +0 -0
- package/src/assets/images/language_flag/sr.png +0 -0
- package/src/assets/images/language_flag/sv-SE.png +0 -0
- package/src/assets/images/language_flag/ta.png +0 -0
- package/src/assets/images/language_flag/th.png +0 -0
- package/src/assets/images/language_flag/tr.png +0 -0
- package/src/assets/images/language_flag/uk.png +0 -0
- package/src/assets/images/language_flag/vi.png +0 -0
- package/src/assets/images/language_flag/zh-CN.png +0 -0
- package/src/assets/images/language_flag/zh-TW.png +0 -0
- package/src/assets/images/no_image_user.png +0 -0
- package/src/assets/images/priority_icons/high.svg +3 -0
- package/src/assets/images/priority_icons/high_v2.svg +14 -0
- package/src/assets/images/priority_icons/low.svg +10 -0
- package/src/assets/images/priority_icons/low_v2.svg +14 -0
- package/src/assets/images/priority_icons/medium.svg +16 -0
- package/src/assets/images/priority_icons/medium_v2.svg +11 -0
- package/src/assets/images/priority_icons/urgent.svg +4 -0
- package/src/assets/images/priority_icons/urgent_v2.svg +16 -0
- package/src/assets/tiledesk-solo-logo.png +0 -0
- package/src/chat-config-pre-test.json +3 -1
- package/src/chat-config-template.json +3 -1
- package/src/chat-config.json +4 -2
- package/src/chat21-core/utils/constants.ts +6 -1
- package/src/global.scss +397 -3
- package/src/index.html +7 -0
- package/publish_pre.sh +0 -33
- package/publish_prod.sh +0 -33
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Component, OnInit, Input, ViewChild, ElementRef, HostListener, AfterViewInit} from '@angular/core'
|
|
3
|
+
import { TYPE_MSG_IMAGE } from 'src/chat21-core/utils/constants'
|
|
4
|
+
import { ModalController } from '@ionic/angular'
|
|
5
|
+
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'
|
|
5
6
|
|
|
6
7
|
// Logger
|
|
7
|
-
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service'
|
|
8
|
-
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance'
|
|
8
|
+
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service'
|
|
9
|
+
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance'
|
|
9
10
|
|
|
10
11
|
@Component({
|
|
11
12
|
selector: 'app-loader-preview',
|
|
@@ -13,103 +14,138 @@ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance'
|
|
|
13
14
|
styleUrls: ['./loader-preview.page.scss'],
|
|
14
15
|
})
|
|
15
16
|
export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
16
|
-
@ViewChild('thumbnailsPreview', { static: false })
|
|
17
|
-
|
|
17
|
+
@ViewChild('thumbnailsPreview', { static: false })
|
|
18
|
+
thumbnailsPreview: ElementRef
|
|
19
|
+
@ViewChild('messageTextArea', { static: false }) messageTextArea: ElementRef
|
|
18
20
|
@ViewChild('imageCaptionTexarea', { static: false }) imageCaptionTexarea: any
|
|
19
21
|
// @Output() eventSendMessage = new EventEmitter<object>();
|
|
20
|
-
@Input() files: [any]
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
public
|
|
25
|
-
public
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
public
|
|
31
|
-
|
|
22
|
+
@Input() files: [any]
|
|
23
|
+
@Input() enableBackdropDismiss: any
|
|
24
|
+
@Input() msg: string
|
|
25
|
+
|
|
26
|
+
public arrayFiles = []
|
|
27
|
+
public fileSelected: any
|
|
28
|
+
public messageString: string
|
|
29
|
+
public heightPreviewArea = '183'
|
|
30
|
+
private selectedFiles: any
|
|
31
|
+
srcData: SafeResourceUrl
|
|
32
|
+
public file_extension: string
|
|
33
|
+
public file_name: string
|
|
34
|
+
public file_name_ellipsis_the_middle: string
|
|
35
|
+
private logger: LoggerService = LoggerInstance.getInstance()
|
|
32
36
|
|
|
33
37
|
constructor(
|
|
34
38
|
public viewCtrl: ModalController,
|
|
35
|
-
private sanitizer: DomSanitizer
|
|
36
|
-
) {
|
|
39
|
+
private sanitizer: DomSanitizer,
|
|
40
|
+
) {}
|
|
37
41
|
|
|
38
42
|
ngOnInit() {
|
|
39
|
-
this.logger.log('[LOADER-PREVIEW-PAGE] Hello!')
|
|
43
|
+
this.logger.log('[LOADER-PREVIEW-PAGE] Hello!')
|
|
40
44
|
// tslint:disable-next-line: prefer-for-of
|
|
41
|
-
this.selectedFiles = this.files
|
|
45
|
+
this.selectedFiles = this.files
|
|
42
46
|
for (let i = 0; i < this.files.length; i++) {
|
|
43
|
-
this.readAsDataURL(this.files[i])
|
|
47
|
+
this.readAsDataURL(this.files[i])
|
|
44
48
|
//this.fileChange(this.files[i]);
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
ngAfterViewInit() {
|
|
52
|
+
this.logger.log('[LOADER-PREVIEW-PAGE] this.files', this.files)
|
|
53
|
+
this.logger.log(
|
|
54
|
+
'[LOADER-PREVIEW-PAGE] enableBackdropDismiss',
|
|
55
|
+
this.enableBackdropDismiss,
|
|
56
|
+
)
|
|
57
|
+
this.logger.log('[LOADER-PREVIEW-PAGE] msg', this.msg)
|
|
58
|
+
if (this.msg) {
|
|
59
|
+
this.messageString = this.msg
|
|
60
|
+
}
|
|
61
|
+
|
|
48
62
|
if (this.imageCaptionTexarea) {
|
|
49
63
|
setTimeout(() => {
|
|
50
64
|
// this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] set focus on ", this.messageTextArea);
|
|
51
65
|
// Keyboard.show() // for android
|
|
52
|
-
this.logger.log(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
66
|
+
this.logger.log(
|
|
67
|
+
'[CONVS-DETAIL][MSG-TEXT-AREA] ngAfterViewInit this.imageCaptionTexarea ',
|
|
68
|
+
this.imageCaptionTexarea,
|
|
69
|
+
)
|
|
70
|
+
this.imageCaptionTexarea.setFocus()
|
|
71
|
+
}, 1000) //a least 150ms.
|
|
56
72
|
}
|
|
57
73
|
}
|
|
58
74
|
|
|
59
75
|
ionViewDidEnter() {
|
|
60
|
-
this.logger.log(
|
|
61
|
-
|
|
76
|
+
this.logger.log(
|
|
77
|
+
'[LOADER-PREVIEW-PAGE] ionViewDidEnter thumbnailsPreview.nativeElement.offsetHeight',
|
|
78
|
+
this.thumbnailsPreview.nativeElement.offsetHeight,
|
|
79
|
+
)
|
|
80
|
+
this.calculateHeightPreviewArea()
|
|
62
81
|
}
|
|
63
82
|
|
|
64
83
|
readAsDataURL(file: any) {
|
|
65
|
-
this.logger.log('[LOADER-PREVIEW-PAGE] readAsDataURL file', file)
|
|
84
|
+
this.logger.log('[LOADER-PREVIEW-PAGE] readAsDataURL file', file)
|
|
66
85
|
// ---------------------------------------------------------------------
|
|
67
86
|
// USE CASE IMAGE
|
|
68
87
|
// ---------------------------------------------------------------------
|
|
69
|
-
if (file.type.startsWith(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
88
|
+
if (file.type.startsWith('image') && !file.type.includes('svg')) {
|
|
89
|
+
this.logger.log(
|
|
90
|
+
'[LOADER-PREVIEW-PAGE] - readAsDataURL - USE CASE IMAGE file TYPE',
|
|
91
|
+
file.type,
|
|
92
|
+
)
|
|
93
|
+
const reader = new FileReader()
|
|
73
94
|
reader.onloadend = (evt) => {
|
|
74
|
-
const img = reader.result.toString()
|
|
75
|
-
this.logger.log(
|
|
76
|
-
|
|
95
|
+
const img = reader.result.toString()
|
|
96
|
+
this.logger.log(
|
|
97
|
+
'[LOADER-PREVIEW-PAGE] - readAsDataURL - FileReader success ',
|
|
98
|
+
img,
|
|
99
|
+
)
|
|
100
|
+
this.arrayFiles.push(img)
|
|
77
101
|
if (!this.fileSelected) {
|
|
78
|
-
this.fileSelected = img
|
|
102
|
+
this.fileSelected = img
|
|
79
103
|
}
|
|
80
|
-
}
|
|
104
|
+
}
|
|
81
105
|
|
|
82
|
-
reader.readAsDataURL(file)
|
|
106
|
+
reader.readAsDataURL(file)
|
|
83
107
|
// ---------------------------------------------------------------------
|
|
84
|
-
// USE CASE SVG
|
|
108
|
+
// USE CASE SVG
|
|
85
109
|
// ---------------------------------------------------------------------
|
|
86
|
-
} else if (file.type.startsWith(
|
|
110
|
+
} else if (file.type.startsWith('image') && file.type.includes('svg')) {
|
|
87
111
|
// this.previewFiles(file)
|
|
88
112
|
|
|
89
|
-
this.logger.log(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
reader
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
113
|
+
this.logger.log(
|
|
114
|
+
'[LOADER-PREVIEW-PAGE] - readAsDataURL file TYPE',
|
|
115
|
+
file.type,
|
|
116
|
+
)
|
|
117
|
+
this.logger.log('[LOADER-PREVIEW-PAGE] - readAsDataURL file ', file)
|
|
118
|
+
const preview = document.querySelector('#img-preview') as HTMLImageElement
|
|
119
|
+
|
|
120
|
+
const reader = new FileReader()
|
|
121
|
+
const that = this
|
|
122
|
+
reader.addEventListener(
|
|
123
|
+
'load',
|
|
124
|
+
function () {
|
|
125
|
+
// convert image file to base64 string
|
|
126
|
+
// const img = reader.result as string;
|
|
127
|
+
const img = reader.result.toString()
|
|
128
|
+
that.logger.log(
|
|
129
|
+
'FIREBASE-UPLOAD USE CASE SVG LoaderPreviewPage readAsDataURL img ',
|
|
130
|
+
img,
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
// that.fileSelected = that.sanitizer.bypassSecurityTrustResourceUrl(img);
|
|
134
|
+
|
|
135
|
+
that.arrayFiles.push(
|
|
136
|
+
that.sanitizer.bypassSecurityTrustResourceUrl(img),
|
|
137
|
+
)
|
|
138
|
+
if (!that.fileSelected) {
|
|
139
|
+
that.fileSelected = that.sanitizer.bypassSecurityTrustResourceUrl(
|
|
140
|
+
img,
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
false,
|
|
145
|
+
)
|
|
109
146
|
|
|
110
147
|
if (file) {
|
|
111
|
-
|
|
112
|
-
reader.readAsDataURL(file);
|
|
148
|
+
reader.readAsDataURL(file)
|
|
113
149
|
}
|
|
114
150
|
|
|
115
151
|
// ---------------------------------------------------------------------
|
|
@@ -117,13 +153,27 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
|
117
153
|
// ---------------------------------------------------------------------
|
|
118
154
|
// } else if (file.type.startsWith("application") || file.type.startsWith("video") || file.type.startsWith("audio") ) {
|
|
119
155
|
} else {
|
|
120
|
-
this.logger.log(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
156
|
+
this.logger.log(
|
|
157
|
+
'[LOADER-PREVIEW-PAGE] - readAsDataURL - USE CASE FILE - FILE ',
|
|
158
|
+
file,
|
|
159
|
+
)
|
|
160
|
+
this.logger.log(
|
|
161
|
+
'[LOADER-PREVIEW-PAGE] - readAsDataURL - USE CASE FILE - FILE TYPE',
|
|
162
|
+
file.type,
|
|
163
|
+
)
|
|
164
|
+
this.file_extension =
|
|
165
|
+
file.name.substring(file.name.lastIndexOf('.') + 1, file.name.length) ||
|
|
166
|
+
file.name
|
|
167
|
+
this.logger.log(
|
|
168
|
+
'[LOADER-PREVIEW-PAGE] - readAsDataURL - USE CASE FILE - FILE EXTENSION',
|
|
169
|
+
this.file_extension,
|
|
170
|
+
)
|
|
124
171
|
this.file_name = file.name
|
|
125
172
|
this.file_name_ellipsis_the_middle = this.start_and_end(file.name)
|
|
126
|
-
this.logger.log(
|
|
173
|
+
this.logger.log(
|
|
174
|
+
'[LOADER-PREVIEW-PAGE] - readAsDataURL - USE CASE FILE - FILE NAME',
|
|
175
|
+
this.file_name,
|
|
176
|
+
)
|
|
127
177
|
// if (file.type) {
|
|
128
178
|
// const file_type_array = file.type.split('/');
|
|
129
179
|
// this.logger.log('FIREBASE-UPLOAD USE CASE FILE LoaderPreviewPage readAsDataURL file_type_array', file_type_array);
|
|
@@ -132,38 +182,40 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
|
132
182
|
// this.file_type = file.name.substring(file.name.lastIndexOf('.')+1, file.name.length) || file.name;
|
|
133
183
|
|
|
134
184
|
// }
|
|
135
|
-
this.createFile()
|
|
185
|
+
this.createFile()
|
|
136
186
|
}
|
|
137
187
|
}
|
|
138
188
|
|
|
139
189
|
start_and_end(str) {
|
|
140
190
|
if (str.length > 70) {
|
|
141
|
-
return str.substr(0, 20) + '...' + str.substr(str.length - 10, str.length)
|
|
191
|
+
return str.substr(0, 20) + '...' + str.substr(str.length - 10, str.length)
|
|
142
192
|
}
|
|
143
|
-
return str
|
|
193
|
+
return str
|
|
144
194
|
}
|
|
145
195
|
// file-alt-solid.png
|
|
146
196
|
async createFile() {
|
|
147
|
-
let response = await fetch('./assets/images/file-alt-solid.png')
|
|
148
|
-
let data = await response.blob()
|
|
197
|
+
let response = await fetch('./assets/images/file-alt-solid.png')
|
|
198
|
+
let data = await response.blob()
|
|
149
199
|
let metadata = {
|
|
150
|
-
type: 'image/png'
|
|
151
|
-
}
|
|
152
|
-
let file = new File([data],
|
|
153
|
-
this.logger.log('[LOADER-PREVIEW-PAGE] - createFile file - file', file)
|
|
154
|
-
const reader = new FileReader()
|
|
200
|
+
type: 'image/png',
|
|
201
|
+
}
|
|
202
|
+
let file = new File([data], 'test.png', metadata)
|
|
203
|
+
this.logger.log('[LOADER-PREVIEW-PAGE] - createFile file - file', file)
|
|
204
|
+
const reader = new FileReader()
|
|
155
205
|
reader.onloadend = (evt) => {
|
|
156
|
-
const img = reader.result.toString()
|
|
157
|
-
this.logger.log(
|
|
158
|
-
|
|
206
|
+
const img = reader.result.toString()
|
|
207
|
+
this.logger.log(
|
|
208
|
+
'[LOADER-PREVIEW-PAGE] - createFile file - FileReader success img',
|
|
209
|
+
img,
|
|
210
|
+
)
|
|
211
|
+
this.arrayFiles.push(img)
|
|
159
212
|
if (!this.fileSelected) {
|
|
160
|
-
this.fileSelected = img
|
|
213
|
+
this.fileSelected = img
|
|
161
214
|
}
|
|
162
|
-
}
|
|
163
|
-
reader.readAsDataURL(file)
|
|
215
|
+
}
|
|
216
|
+
reader.readAsDataURL(file)
|
|
164
217
|
}
|
|
165
218
|
|
|
166
|
-
|
|
167
219
|
// for svg
|
|
168
220
|
|
|
169
221
|
// previewFiles(file) {
|
|
@@ -174,7 +226,6 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
|
174
226
|
// this.readAndPreview(file, preview)
|
|
175
227
|
// }
|
|
176
228
|
|
|
177
|
-
|
|
178
229
|
// readAndPreview(file, preview) {
|
|
179
230
|
// this.logger.log('LoaderPreviewPage readAsDataURL preview HERE 1');
|
|
180
231
|
// // Make sure `file.name` matches our extensions criteria
|
|
@@ -201,51 +252,52 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
|
201
252
|
|
|
202
253
|
// }
|
|
203
254
|
|
|
204
|
-
|
|
205
|
-
// NOT USED
|
|
255
|
+
// NOT USED
|
|
206
256
|
fileChange(file) {
|
|
207
|
-
this.logger.log('fileChange')
|
|
208
|
-
const that = this
|
|
257
|
+
this.logger.log('fileChange')
|
|
258
|
+
const that = this
|
|
209
259
|
if (file) {
|
|
210
|
-
const nameImg = file.name
|
|
211
|
-
const typeFile = file.type
|
|
212
|
-
this.logger.log('nameImg: ', nameImg)
|
|
213
|
-
this.logger.log('typeFile: ', typeFile)
|
|
214
|
-
|
|
215
|
-
const reader = new FileReader()
|
|
216
|
-
reader.addEventListener(
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
that.
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
260
|
+
const nameImg = file.name
|
|
261
|
+
const typeFile = file.type
|
|
262
|
+
this.logger.log('nameImg: ', nameImg)
|
|
263
|
+
this.logger.log('typeFile: ', typeFile)
|
|
264
|
+
|
|
265
|
+
const reader = new FileReader()
|
|
266
|
+
reader.addEventListener(
|
|
267
|
+
'load',
|
|
268
|
+
function () {
|
|
269
|
+
const img = reader.result.toString()
|
|
270
|
+
that.logger.log('FileReader success')
|
|
271
|
+
that.arrayFiles.push(img)
|
|
272
|
+
if (!that.fileSelected) {
|
|
273
|
+
that.fileSelected = img
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
if (typeFile.indexOf('image') !== -1) {
|
|
277
|
+
const file4Load = new Image()
|
|
278
|
+
file4Load.src = reader.result.toString()
|
|
279
|
+
file4Load.title = nameImg
|
|
280
|
+
file4Load.onload = function () {
|
|
281
|
+
that.logger.log('that.file4Load: ', file4Load)
|
|
282
|
+
//that.arrayFiles.push(file4Load);
|
|
283
|
+
const uid = file4Load.src.substring(file4Load.src.length - 16)
|
|
284
|
+
const metadata = {
|
|
285
|
+
name: file4Load.title,
|
|
286
|
+
src: file4Load.src,
|
|
287
|
+
width: file4Load.width,
|
|
288
|
+
height: file4Load.height,
|
|
289
|
+
type: typeFile,
|
|
290
|
+
uid: uid,
|
|
291
|
+
}
|
|
292
|
+
// const type_msg = 'image';
|
|
293
|
+
// 1 - invio messaggio
|
|
294
|
+
//that.viewCtrl.dismiss({fileSelected: file4Load, messageString: that.messageString});
|
|
295
|
+
//that.addLocalMessage(metadata, type_msg);
|
|
296
|
+
// 2 - carico immagine
|
|
297
|
+
//that.uploadSingle(metadata, type_msg);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/*
|
|
249
301
|
else if (typeFile.indexOf('application') !== -1) {
|
|
250
302
|
const type_msg = 'file';
|
|
251
303
|
const file = that.selectedFiles.item(0);
|
|
@@ -261,29 +313,34 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
|
261
313
|
that.uploadSingle(metadata, type_msg);
|
|
262
314
|
}
|
|
263
315
|
*/
|
|
264
|
-
|
|
316
|
+
},
|
|
317
|
+
false,
|
|
318
|
+
)
|
|
265
319
|
if (file) {
|
|
266
|
-
reader.readAsDataURL(file)
|
|
320
|
+
reader.readAsDataURL(file)
|
|
267
321
|
}
|
|
268
322
|
}
|
|
269
323
|
}
|
|
270
324
|
|
|
271
325
|
calculateHeightPreviewArea() {
|
|
272
|
-
const heightThumbnailsPreview = this.thumbnailsPreview.nativeElement
|
|
273
|
-
|
|
274
|
-
|
|
326
|
+
const heightThumbnailsPreview = this.thumbnailsPreview.nativeElement
|
|
327
|
+
.offsetHeight
|
|
328
|
+
const heightMessageTextArea = this.messageTextArea.nativeElement
|
|
329
|
+
.offsetHeight
|
|
330
|
+
this.heightPreviewArea = (
|
|
331
|
+
heightMessageTextArea + heightThumbnailsPreview
|
|
332
|
+
).toString()
|
|
275
333
|
// this.logger.log('heightThumbnailsPreview', heightThumbnailsPreview);
|
|
276
334
|
// this.logger.log('heightMessageTextArea', this.messageTextArea);
|
|
277
335
|
// this.logger.log('heightPreviewArea', this.heightPreviewArea);
|
|
278
336
|
}
|
|
279
337
|
|
|
280
|
-
uploadImages() {
|
|
281
|
-
|
|
338
|
+
uploadImages() {}
|
|
282
339
|
|
|
283
340
|
/** */
|
|
284
341
|
onChangeTextArea(e: any) {
|
|
285
|
-
this.logger.log('onChangeTextArea', e.target.clientHeight)
|
|
286
|
-
this.calculateHeightPreviewArea()
|
|
342
|
+
this.logger.log('onChangeTextArea', e.target.clientHeight)
|
|
343
|
+
this.calculateHeightPreviewArea()
|
|
287
344
|
// try {
|
|
288
345
|
// let height: number = e.target.offsetHeight;
|
|
289
346
|
// if (height < 37 ) {
|
|
@@ -297,20 +354,18 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
|
297
354
|
|
|
298
355
|
/** */
|
|
299
356
|
onSelectImage(file: any) {
|
|
300
|
-
this.fileSelected = file
|
|
357
|
+
this.fileSelected = file
|
|
301
358
|
}
|
|
302
359
|
|
|
303
360
|
@HostListener('document:keydown', ['$event'])
|
|
304
361
|
handleKeyboardEvent(event: KeyboardEvent) {
|
|
305
362
|
if (event.key === 'Enter') {
|
|
306
|
-
|
|
307
363
|
this.onSendMessage()
|
|
308
364
|
}
|
|
309
|
-
|
|
310
365
|
}
|
|
311
366
|
|
|
312
367
|
pressedOnKeyboard(e: any, text: string) {
|
|
313
|
-
this.logger.log('[LOADER-PREVIEW-PAGE] pressedOnKeyboard - event:: ', e)
|
|
368
|
+
this.logger.log('[LOADER-PREVIEW-PAGE] pressedOnKeyboard - event:: ', e)
|
|
314
369
|
// const message = e.target.textContent.trim();
|
|
315
370
|
// if (e.inputType === 'insertLineBreak' && message === '') {
|
|
316
371
|
// this.messageString = '';
|
|
@@ -322,32 +377,37 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
|
322
377
|
this.onSendMessage()
|
|
323
378
|
}
|
|
324
379
|
|
|
325
|
-
|
|
326
|
-
|
|
327
380
|
/** */
|
|
328
381
|
onSendMessage() {
|
|
329
|
-
this.logger.log(
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
382
|
+
this.logger.log(
|
|
383
|
+
'[LOADER-PREVIEW-PAGE] onSendMessage messageString:',
|
|
384
|
+
this.messageString,
|
|
385
|
+
)
|
|
386
|
+
let file = this.selectedFiles.item(0)
|
|
387
|
+
const file4Load = new Image()
|
|
388
|
+
const nameImg = file.name
|
|
389
|
+
const typeFile = file.type
|
|
390
|
+
|
|
391
|
+
file4Load.src = this.fileSelected
|
|
392
|
+
file4Load.title = nameImg
|
|
393
|
+
const uid = file4Load.src.substring(file4Load.src.length - 16)
|
|
338
394
|
const metadata = {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
}
|
|
346
|
-
this.viewCtrl.dismiss({
|
|
347
|
-
|
|
395
|
+
name: file4Load.title,
|
|
396
|
+
src: file4Load.src,
|
|
397
|
+
width: file4Load.width,
|
|
398
|
+
height: file4Load.height,
|
|
399
|
+
type: typeFile,
|
|
400
|
+
uid: uid,
|
|
401
|
+
}
|
|
402
|
+
this.viewCtrl.dismiss({
|
|
403
|
+
fileSelected: file,
|
|
404
|
+
messageString: this.messageString,
|
|
405
|
+
metadata: metadata,
|
|
406
|
+
type: TYPE_MSG_IMAGE,
|
|
407
|
+
})
|
|
348
408
|
}
|
|
349
409
|
|
|
350
410
|
async onClose() {
|
|
351
|
-
this.viewCtrl.dismiss()
|
|
411
|
+
this.viewCtrl.dismiss()
|
|
352
412
|
}
|
|
353
413
|
}
|
|
@@ -55,13 +55,13 @@
|
|
|
55
55
|
</div>
|
|
56
56
|
|
|
57
57
|
<ion-list *ngIf="loggedUser">
|
|
58
|
-
<ion-item lines="none" class="sidebar-items" (click)="onClickArchivedConversation()">
|
|
58
|
+
<!-- <ion-item lines="none" class="sidebar-items" (click)="onClickArchivedConversation()">
|
|
59
59
|
<div tabindex="0"></div>
|
|
60
60
|
<ion-icon name="archive-outline" class="sidebar-icons"></ion-icon>
|
|
61
61
|
<ion-label class="sidebar-labels">
|
|
62
62
|
<h3>{{ 'LABEL_ARCHIVED' | translate }}</h3>
|
|
63
63
|
</ion-label>
|
|
64
|
-
</ion-item>
|
|
64
|
+
</ion-item> -->
|
|
65
65
|
|
|
66
66
|
<ion-item lines="none" class="sidebar-items" (click)="onLogout()">
|
|
67
67
|
<div tabindex="0"></div>
|
|
@@ -86,16 +86,18 @@ export class ProfileInfoPage implements OnInit {
|
|
|
86
86
|
private setUser() {
|
|
87
87
|
// width and height NON sono obbligatori
|
|
88
88
|
this.loggedUser = this.chatManager.getCurrentUser();
|
|
89
|
-
this.
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
if (this.loggedUser) {
|
|
90
|
+
this.itemAvatar = {
|
|
91
|
+
imageurl: this.imageRepo.getImagePhotoUrl(this.loggedUser.uid),
|
|
92
|
+
avatar: this.loggedUser.avatar,
|
|
93
|
+
color: this.loggedUser.color,
|
|
94
|
+
online: this.loggedUser.online,
|
|
95
|
+
lastConnection: this.loggedUser.lastConnection,
|
|
96
|
+
status: '',
|
|
97
|
+
width: '100px',
|
|
98
|
+
height: '100px'
|
|
99
|
+
};
|
|
100
|
+
}
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
|
|
@@ -121,10 +123,10 @@ export class ProfileInfoPage implements OnInit {
|
|
|
121
123
|
private setSubscriptions() {
|
|
122
124
|
this.presenceService.userIsOnline(this.loggedUser.uid);
|
|
123
125
|
this.presenceService.lastOnlineForUser(this.loggedUser.uid);
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
|
|
127
|
+
|
|
126
128
|
const subscribeBSIsOnline = this.presenceService.BSIsOnline.subscribe((data: any) => {
|
|
127
|
-
|
|
129
|
+
this.logger.log('[PROFILE-INFO-PAGE] setSubscriptions $ubscribe to BSIsOnline - data', data);
|
|
128
130
|
if (data) {
|
|
129
131
|
const userId = data.uid;
|
|
130
132
|
const isOnline = data.isOnline;
|
|
@@ -135,7 +137,7 @@ export class ProfileInfoPage implements OnInit {
|
|
|
135
137
|
});
|
|
136
138
|
|
|
137
139
|
const subscribeBSLastOnline = this.presenceService.BSLastOnline.subscribe((data: any) => {
|
|
138
|
-
|
|
140
|
+
this.logger.log('[PROFILE-INFO-PAGE] setSubscriptions $ubscribe to BSLastOnline - data', data);
|
|
139
141
|
if (data) {
|
|
140
142
|
const userId = data.uid;
|
|
141
143
|
const timestamp = data.lastOnline;
|
|
@@ -150,7 +152,7 @@ export class ProfileInfoPage implements OnInit {
|
|
|
150
152
|
|
|
151
153
|
|
|
152
154
|
userIsOnLine = (userId: string, isOnline: boolean) => {
|
|
153
|
-
|
|
155
|
+
this.logger.log('[PROFILE-INFO-PAGE] userIsOnLine - userId ', userId, ' - isOnline ', isOnline);
|
|
154
156
|
this.itemAvatar.online = isOnline;
|
|
155
157
|
if (isOnline) {
|
|
156
158
|
this.itemAvatar.status = this.translationMap.get('LABEL_AVAILABLE');
|
|
@@ -180,9 +182,9 @@ export class ProfileInfoPage implements OnInit {
|
|
|
180
182
|
|
|
181
183
|
/** */
|
|
182
184
|
private unsubescribeAll() {
|
|
183
|
-
|
|
185
|
+
this.logger.log('unsubescribeAll: ', this.subscriptions);
|
|
184
186
|
this.subscriptions.forEach((subscription: any) => {
|
|
185
|
-
|
|
187
|
+
this.logger.log('unsubescribe: ', subscription);
|
|
186
188
|
// this.events.unsubscribe(subscription, null);
|
|
187
189
|
});
|
|
188
190
|
this.subscriptions = [];
|
|
@@ -207,15 +209,15 @@ export class ProfileInfoPage implements OnInit {
|
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
copyLoggedUserUID() {
|
|
210
|
-
var copyText = document.createElement("input");
|
|
212
|
+
var copyText = document.createElement("input");
|
|
211
213
|
copyText.setAttribute("type", "text");
|
|
212
214
|
copyText.setAttribute("value", this.loggedUser.uid);
|
|
213
|
-
|
|
214
|
-
document.body.appendChild(copyText);
|
|
215
|
+
|
|
216
|
+
document.body.appendChild(copyText);
|
|
215
217
|
copyText.select();
|
|
216
218
|
copyText.setSelectionRange(0, 99999); /*For mobile devices*/
|
|
217
219
|
document.execCommand("copy");
|
|
218
|
-
|
|
220
|
+
this.logger.log("Copied the text: " + copyText.value);
|
|
219
221
|
const tootipElem = <HTMLElement>document.querySelector('.chat-tooltip');
|
|
220
222
|
this.renderer.appendChild(tootipElem, this.renderer.createText('Copied!'))
|
|
221
223
|
|