@chat21/chat21-ionic 3.0.81-rc.1 → 3.0.81-rc.3

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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # chat21-ionic ver 3.0
2
2
 
3
+ ### 3.0.81-rc.3
4
+ - bug-fixed: if window width is less then 991px, move 'Close detail' icon to right
5
+ - changed: removed segment from index.html and loaded dynamically only if in not production
6
+
7
+ ### 3.0.81-rc.2
8
+ - changed: canned loader
9
+ - bug-fixed: if search for a string that not correspond with an existing canned, was shown loader ever
10
+
3
11
  ### 3.0.81-rc.1
4
12
  - added: remove bubble-message background if is image or iframe and no text is in message
5
13
  - added: new sound if unassigned request arrive
package/angular.json CHANGED
@@ -24,6 +24,7 @@
24
24
  "src/chat-config-mqtt.json",
25
25
  "src/chat-config-pre-test.json",
26
26
  "src/chat-config-mqtt-localhost.json",
27
+ "src/chat-config-native-mqtt.json",
27
28
  "src/firebase-messaging-sw.js",
28
29
  "src/manifest.json",
29
30
  {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
3
  "author": "Tiledesk SRL",
4
- "version": "3.0.81-rc.1",
4
+ "version": "3.0.81-rc.3",
5
5
  "license": "MIT License",
6
6
  "homepage": "https://tiledesk.com/",
7
7
  "repository": {
@@ -1,3 +1,5 @@
1
+ @import '../variables.scss';
2
+
1
3
  .split-pane-md.split-pane-visible > .split-pane-side {
2
4
  min-width: 360px; //312px;
3
5
  display: block; // Safari bug fix
@@ -39,7 +39,7 @@ import { LoginPage } from './pages/authentication/login/login.page';
39
39
  import { ConversationListPage } from './pages/conversations-list/conversations-list.page';
40
40
 
41
41
  // utils
42
- import { checkPlatformIsMobile, isGroup, getParameterByName, searchIndexInArrayForUid, compareValues } from '../chat21-core/utils/utils';
42
+ import { checkPlatformIsMobile, isGroup, getParameterByName, searchIndexInArrayForUid, compareValues, stripTags } from '../chat21-core/utils/utils';
43
43
  import { STORAGE_PREFIX, PLATFORM_MOBILE, PLATFORM_DESKTOP, CHAT_ENGINE_FIREBASE, AUTH_STATE_OFFLINE, AUTH_STATE_ONLINE } from '../chat21-core/utils/constants';
44
44
  import { environment } from '../environments/environment';
45
45
  import { UserModel } from '../chat21-core/models/user';
@@ -340,6 +340,7 @@ export class AppComponent implements OnInit {
340
340
 
341
341
 
342
342
  this.initializeApp('oninit');
343
+ this.initSegment()
343
344
  this.listenToPostMsgs();
344
345
  }
345
346
 
@@ -1343,6 +1344,20 @@ export class AppComponent implements OnInit {
1343
1344
  }
1344
1345
  }
1345
1346
 
1347
+ private initSegment(){
1348
+ if(!isDevMode()){
1349
+ var head = document.getElementsByTagName('head')[0];
1350
+ var script = document.createElement('script');
1351
+ script.type="text/javascript";
1352
+ script.text =`!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="qaTU0wG6VH6xPAhOzD2kneI70Txg1fTB";;analytics.SNIPPET_VERSION="4.15.3";
1353
+ analytics.load("qaTU0wG6VH6xPAhOzD2kneI70Txg1fTB");
1354
+ analytics.page();
1355
+ }}();`
1356
+ console.log('initttttt segmentttt', script)
1357
+ head.appendChild(script);
1358
+ }
1359
+ }
1360
+
1346
1361
  private segmentSignIn(){
1347
1362
  let user = this.tiledeskAuthService.getCurrentUser()
1348
1363
  try {
@@ -47,7 +47,8 @@
47
47
  background: linear-gradient(to right, rgba(226, 232, 239, 0) 128px, rgb(226, 232, 239) 128px);
48
48
 
49
49
  &.close{
50
- right: 0px;
50
+ right: var(--padding-conversation-detail);
51
+ border-top-right-radius: var(--border-radius-content);
51
52
  &:not(.mobile){
52
53
  top: calc(60px + var(--padding-conversation-detail));
53
54
  }
@@ -166,7 +167,7 @@ ion-item {
166
167
  background-color: var(--bubble-blue);
167
168
  color: var(--col-msg-sent);
168
169
  margin: 0px 0px 0px 0px;
169
- max-width: calc(100% - 70px);
170
+ max-width: calc(100% - 85px);
170
171
  min-width: 14px;
171
172
  border-top-right-radius: 8px;
172
173
  border-bottom-right-radius: 0px;
@@ -235,7 +236,7 @@ ion-item {
235
236
  background-color: var(--bck-msg-received);
236
237
  color: var(--col-msg-received);
237
238
  // max-width: 260px;
238
- max-width: calc(100% - 70px);
239
+ max-width: calc(100% - 85px);
239
240
  min-width: 14px;
240
241
  margin: 0 0px 0px 10px;
241
242
  height: fit-content;
@@ -273,8 +274,8 @@ ion-item {
273
274
 
274
275
  .btn-add-msg {
275
276
  border-radius: 50%;
276
- --padding-end: 7px;
277
- --padding-start: 7px;
277
+ --padding-end: 5px;
278
+ --padding-start: 5px;
278
279
  box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.13);
279
280
  display: none;
280
281
  align-self: center;
@@ -28,6 +28,7 @@ export class IonConversationDetailComponent extends ConversationContentComponent
28
28
  @Input() areVisibleCAR: boolean;
29
29
  @Input() supportMode: boolean;
30
30
  @Input() isMobile: boolean;
31
+ @Input() openInfoConversation: boolean;
31
32
  @Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>();
32
33
  @Output() onAddUploadingBubble = new EventEmitter<boolean>();
33
34
  @Output() onOpenCloseInfoConversation = new EventEmitter<boolean>();
@@ -37,7 +38,7 @@ export class IonConversationDetailComponent extends ConversationContentComponent
37
38
  public fileType: any
38
39
  public browserLang: string;
39
40
  public addAsCannedResponseTooltipText: string;
40
- public openInfoConversation: boolean = true;
41
+ // public openInfoConversation: boolean = true;
41
42
  isImage = isImage;
42
43
  isFile = isFile;
43
44
  isFrame = isFrame;
@@ -18,15 +18,16 @@
18
18
  <label class="add-canned-response-label" >{{translationMap?.get('AddNewCannedResponse')}}</label>
19
19
  </ion-item>
20
20
  </div>
21
- <!-- -->
22
- <div class="loader" *ngIf="tagsCannedFilter.length === 0">
21
+ <!-- LOADER -->
22
+ <div class="loader" *ngIf="tagsCannedFilter.length === 0">
23
23
  <div class="box">
24
- <div class="container">
24
+ <!-- <div class="container">
25
25
  <span class="circle" [ngStyle]="{'background-color': stylesMap?.get('themeColor')}"></span>
26
26
  <span class="circle" [ngStyle]="{'background-color': stylesMap?.get('themeColor')}"></span>
27
27
  <span class="circle" [ngStyle]="{'background-color': stylesMap?.get('themeColor')}"></span>
28
28
  <span class="circle" [ngStyle]="{'background-color': stylesMap?.get('themeColor')}"></span>
29
- </div>
29
+ </div> -->
30
+ <div class="spinner" [ngStyle]="{'border-top-color': stylesMap?.get('themeColor')}"></div>
30
31
  <div class="label">{{translationMap.get('LABEL_LOADING')}}</div>
31
32
  </div>
32
33
  </div>
@@ -204,6 +204,22 @@ ion-item {
204
204
  animation: grow 500ms linear 0s infinite reverse;
205
205
  }
206
206
  }
207
+
208
+ }
209
+
210
+ .spinner {
211
+ margin: auto;
212
+ border: 8px solid #EAF0F6;
213
+ border-radius: 50%;
214
+ border-top: 8px solid var(--basic-blue);
215
+ width: 50px;
216
+ height: 50px;
217
+ animation: spinner 1s linear infinite;
218
+ }
219
+
220
+ @keyframes spinner {
221
+ 0% { transform: rotate(0deg); }
222
+ 100% { transform: rotate(360deg); }
207
223
  }
208
224
 
209
225
  .label{
@@ -163,7 +163,7 @@ export class CannedResponseComponent implements OnInit {
163
163
  canned.text = this.replacePlaceholderInCanned(canned.text);
164
164
  canned.disabled = true
165
165
  });
166
- if (this.tagsCannedCount === 0) {
166
+ if (this.tagsCannedFilter && this.tagsCannedFilter.length === 0) {
167
167
  // const button = this.renderer.createElement('button');
168
168
  // const buttonText = this.renderer.createText('Click me');
169
169
  // this.renderer.appendChild(button, buttonText);
@@ -137,6 +137,7 @@
137
137
  [supportMode]= "supportMode"
138
138
  [isMobile]="isMobile"
139
139
  [isTypings]="isTypings"
140
+ [openInfoConversation]="openInfoConversation"
140
141
  [idUserTypingNow]="idUserTypingNow"
141
142
  [nameUserTypingNow]="nameUserTypingNow"
142
143
  [translationMap]="translationsContentMap"
@@ -720,14 +720,10 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
720
720
  this.logger.log('[CONVS-DETAIL] - initConversationHandler (else) - this.messages: ', this.messages)
721
721
  this.logger.log('[CONVS-DETAIL] - initConversationHandler (else) - this.showMessageWelcome: ', this.showMessageWelcome)
722
722
  }
723
- this.logger.log('[CONVS-DETAIL] - initConversationHandler (else) - message ', this.messages, ' showIonContent', this.showIonContent)
724
723
  }
725
724
 
726
725
  initGroupsHandler() {
727
- if (
728
- this.conversationWith.startsWith('support-group') ||
729
- this.conversationWith.startsWith('group-')
730
- ) {
726
+ if (this.conversationWith.startsWith('support-group') || this.conversationWith.startsWith('group-')) {
731
727
  this.groupService.initialize(this.tenant, this.loggedUser.uid)
732
728
  this.logger.log('[CONVS-DETAIL] - initGroupsHandler - tenant', this.tenant, ' loggedUser UID', this.loggedUser.uid)
733
729
  }
@@ -949,37 +945,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
949
945
  let subscription: any
950
946
  let subscriptionKey: string
951
947
 
952
- // subscriptionKey = 'BSConversationsChanged'
953
- // subscription = this.subscriptions.find((item) => item.key === subscriptionKey)
954
- // if (!subscription) {
955
- // subscription = this.conversationsHandlerService.conversationChanged.subscribe((data: ConversationModel) => {
956
- // this.logger.log('[CONVS-DETAIL] subscribe BSConversationsChanged data ', data, ' this.loggedUser.uid:', this.loggedUser.uid)
957
-
958
- // if (data && data.sender !== this.loggedUser.uid) {
959
- // this.logger.log('[CONVS-DETAIL] subscribe to BSConversationsChange data sender ', data.sender)
960
- // this.logger.log('[CONVS-DETAIL] subscribe to BSConversationsChange this.loggedUser.uid ', this.loggedUser.uid)
961
- // this.logger.log('[CONVS-DETAIL] subscribe to BSConversationsChange is_new ', data.is_new)
962
- // this.logger.log('[CONVS-DETAIL] subscribe to BSConversationsChange showButtonToBottom ', this.showButtonToBottom)
963
- // // UPDATE THE CONVERSATION TO 'READ' IF IT IS ME WHO WRITES THE LAST MESSAGE OF THE CONVERSATION
964
- // // AND IF THE POSITION OF THE SCROLL IS AT THE END
965
- // if (!this.showButtonToBottom && data.is_new) {
966
- // // ARE AT THE END
967
- // this.updateConversationBadge()
968
- // }
969
- // if(data.uid === this.conversationWith){
970
- // this.conversationAvatar = setConversationAvatar(
971
- // data.conversation_with,
972
- // data.conversation_with_fullname,
973
- // data.channel_type,
974
- // )
975
- // }
976
-
977
- // }
978
- // })
979
- // const subscribe = { key: subscriptionKey, value: subscription }
980
- // this.subscriptions.push(subscribe)
981
- // }
982
-
983
948
  subscriptionKey = 'messageAdded'
984
949
  subscription = this.subscriptions.find((item) => item.key === subscriptionKey)
985
950
  if (!subscription) {
@@ -27,5 +27,9 @@
27
27
  "baseImageUrl": "https://console.native.tiledesk.com/api/",
28
28
  "dashboardUrl": "https://console.native.tiledesk.com/dashboard/",
29
29
  "testsiteBaseUrl":"https://console.native.tiledesk.com/widget/assets/twp/index.html",
30
- "authPersistence": "LOCAL"
30
+ "authPersistence": "LOCAL",
31
+ "supportMode": true,
32
+ "archivedButton": true,
33
+ "writeToButton": true,
34
+ "wsUrl":"wss://console.native.tiledesk.com/mqws/ws"
31
35
  }
package/src/index.html CHANGED
@@ -33,15 +33,6 @@
33
33
  <!-- <script src="https://unpkg.com/mqtt@4.1.0/dist/mqtt.min.js"></script> -->
34
34
  <!-- <script src="./assets/js/watchToConnectionAtStartUp.js"></script> -->
35
35
 
36
-
37
- <!-- segment analytics -->
38
- <script>
39
- !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="qaTU0wG6VH6xPAhOzD2kneI70Txg1fTB";;analytics.SNIPPET_VERSION="4.15.3";
40
- analytics.load("qaTU0wG6VH6xPAhOzD2kneI70Txg1fTB");
41
- analytics.page();
42
- }}();
43
- </script>
44
-
45
36
  <!-- add to homescreen for ios -->
46
37
  <meta name="apple-mobile-web-app-capable" content="yes" />
47
38
  <meta name="apple-mobile-web-app-status-bar-style" content="black" />