@chat21/chat21-web-widget 5.1.0-rc1 → 5.1.0-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.
Files changed (51) hide show
  1. package/CHANGELOG.md +43 -2
  2. package/Dockerfile +3 -3
  3. package/angular.json +21 -17
  4. package/deploy_amazon_beta.sh +6 -11
  5. package/deploy_amazon_prod.sh +4 -11
  6. package/deploy_beta.sh +11 -0
  7. package/deploy_prod.sh +12 -3
  8. package/package.json +18 -20
  9. package/src/app/app.component.spec.ts +13 -13
  10. package/src/app/app.module.ts +11 -13
  11. package/src/app/component/conversation-detail/conversation/conversation.component.html +1 -2
  12. package/src/app/component/conversation-detail/conversation/conversation.component.spec.ts +11 -13
  13. package/src/app/component/conversation-detail/conversation/conversation.component.ts +4 -2
  14. package/src/app/component/conversation-detail/conversation-audio-recorder/conversation-audio-recorder.component.scss +1 -0
  15. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +22 -6
  16. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +45 -3
  17. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +60 -8
  18. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.html +2 -2
  19. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.spec.ts +10 -11
  20. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts +0 -1
  21. package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.ts +5 -1
  22. package/src/app/component/home-conversations/home-conversations.component.spec.ts +9 -11
  23. package/src/app/component/message/audio/audio.component.ts +30 -16
  24. package/src/app/component/star-rating-widget/star-rating-widget.component.spec.ts +10 -11
  25. package/src/app/pipe/date-ago.pipe.ts +2 -2
  26. package/src/app/providers/app-config.service.spec.ts +5 -6
  27. package/src/app/providers/global-settings.service.spec.ts +7 -8
  28. package/src/app/providers/global-settings.service.ts +1 -14
  29. package/src/app/providers/star-rating-widget.service.spec.ts +7 -8
  30. package/src/app/providers/translator.service.spec.ts +7 -9
  31. package/src/app/providers/waiting.service.spec.ts +7 -8
  32. package/src/app/sass/_variables.scss +6 -1
  33. package/src/app/sass/animations.scss +1 -0
  34. package/src/app/utils/globals.ts +1 -4
  35. package/src/app/utils/utils.ts +0 -9
  36. package/src/assets/i18n/en.json +3 -1
  37. package/src/assets/twp/chatbot-panel.html +8 -1
  38. package/src/assets/twp/index-dev.html +8 -18
  39. package/src/assets/twp/index.html +13 -3
  40. package/src/build_launch.js +9 -8
  41. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +7 -1
  42. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +8 -1
  43. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.spec.ts +8 -7
  44. package/src/chat21-core/providers/tiledesk/tiledesk-requests.service.spec.ts +10 -6
  45. package/src/chat21-core/utils/constants.ts +2 -0
  46. package/src/chat21-core/utils/utils-message.ts +32 -1
  47. package/src/chat21-core/utils/utils.ts +85 -2
  48. package/src/launch.js +11 -4
  49. package/src/launch_template.js +11 -4
  50. package/src/models/project.ts +4 -1
  51. package/tsconfig.json +1 -2
package/CHANGELOG.md CHANGED
@@ -6,8 +6,49 @@
6
6
  ### **Copyrigth**:
7
7
  *Tiledesk SRL*
8
8
 
9
- # 5.1.0-rc1
10
- - **added**: angular v17
9
+ # 5.1.0-rc11
10
+ - **bug-fixed**: removed private note msgs
11
+
12
+ # 5.1.0-rc10
13
+ - **bug-fixed**: minor fix allowed urls
14
+
15
+ # 5.1.0-rc9
16
+ - **bug-fixed**: minor fix allowed urls
17
+
18
+ # 5.1.0-rc8
19
+ - **added**: ability to filter on urls attached to message textarea
20
+
21
+ # 5.1.0-rc7
22
+ - **added**: ability to allows emoji after message is sent
23
+
24
+ # 5.1.0-rc6
25
+ - **removed**: hideRestartConversationOptionsMenu
26
+
27
+ # 5.1.0-rc5
28
+ # 5.1.0-rc4
29
+ - **bug-fixed**: Dockerfile for angular 18
30
+
31
+ # 5.1.0-rc3
32
+ - **added**: angular 18
33
+
34
+ # 5.1.0-rc2
35
+ - **added**: angular 17
36
+ # 5.0.99
37
+
38
+ # 5.0.99-rc1
39
+ - **bug-fixed**: audio duration not showed in mobile browser
40
+
41
+ # 5.0.98
42
+ - **bug-fixed**: meta info not rendered correctly
43
+
44
+ # 5.0.97
45
+
46
+ # 5.0.96
47
+
48
+ # 5.0.95
49
+ - **bug-fixed**: first message is fired twice ( from /event and from /messages with hiddenMesage)
50
+
51
+ # 5.0.94
11
52
 
12
53
  # 5.0.94-rc7
13
54
  - **added**: touchstart and touchend events for mobile mic footer button
package/Dockerfile CHANGED
@@ -1,7 +1,7 @@
1
1
  ### STAGE 1: Build ###
2
2
 
3
3
  # We label our stage as ‘builder’
4
- FROM node:18.20.8-alpine AS builder
4
+ FROM node:20.12.2-alpine3.19 as builder
5
5
 
6
6
  COPY package.json package-lock.json ./
7
7
 
@@ -15,7 +15,7 @@ COPY . .
15
15
 
16
16
  ## Build the angular app in production mode and store the artifacts in dist folder
17
17
 
18
- RUN npm run ng build -- --configuration="prod" --output-path=dist --base-href="./" --output-hashing=none --build-optimizer=false --vendor-chunk
18
+ RUN npx ng build --configuration="prod" --output-path=dist --base-href=./ --output-hashing=none
19
19
 
20
20
 
21
21
  ### STAGE 2: Setup ###
@@ -29,7 +29,7 @@ COPY nginx.conf /etc/nginx/nginx.conf
29
29
  RUN rm -rf /usr/share/nginx/html/*
30
30
 
31
31
  ## From ‘builder’ stage copy over the artifacts in dist folder to default nginx public folder
32
- COPY --from=builder /ng-app/dist /usr/share/nginx/html
32
+ COPY --from=builder /ng-app/dist/browser /usr/share/nginx/html
33
33
 
34
34
  RUN echo "Chat21 Web Widget Started!!"
35
35
 
package/angular.json CHANGED
@@ -15,13 +15,17 @@
15
15
  },
16
16
  "architect": {
17
17
  "build": {
18
- "builder": "@angular-devkit/build-angular:browser",
18
+ "builder": "@angular-devkit/build-angular:application",
19
19
  "options": {
20
- "outputPath": "dist",
20
+ "outputPath": {
21
+ "base": "dist"
22
+ },
21
23
  "baseHref":"/",
22
24
  "index": "src/index.html",
23
- "main": "src/main.ts",
24
- "polyfills": "src/polyfills.ts",
25
+ "polyfills": [
26
+ "src/polyfills.ts",
27
+ "@angular/localize/init",
28
+ ],
25
29
  "tsConfig": "tsconfig.app.json",
26
30
  "assets": [
27
31
  "src/assets",
@@ -39,7 +43,8 @@
39
43
  "src/environments/real_data/widget-config-mqtt.json",
40
44
  "src/environments/real_data/widget-config-docker.json",
41
45
  "src/environments/real_data/widget-config-native-mqtt.json",
42
- "src/environments/real_data/widget-config-native-prod.json"
46
+ "src/environments/real_data/widget-config-native-prod.json",
47
+ "src/environments/real_data/widget-config-aws-stage.json"
43
48
  ],
44
49
  "styles": [
45
50
  "src/app/sass/styles.scss"
@@ -47,11 +52,8 @@
47
52
  "scripts": [
48
53
  "src/assets/js/mqtt/4.2.6/mqtt.min.js",
49
54
  "node_modules/bootstrap/dist/js/bootstrap.min.js",
50
- "node_modules/popper.js/dist/umd/popper.min.js"
51
55
  ],
52
- "vendorChunk": true,
53
56
  "extractLicenses": false,
54
- "buildOptimizer": false,
55
57
  "allowedCommonJsDependencies": [
56
58
  "rxjs-compat",
57
59
  "idb",
@@ -61,7 +63,13 @@
61
63
  ],
62
64
  "sourceMap": true,
63
65
  "optimization": false,
64
- "namedChunks": true
66
+ "namedChunks": true,
67
+ "browser": "src/main.ts",
68
+ "stylePreprocessorOptions": {
69
+ "includePaths": [
70
+ "."
71
+ ]
72
+ }
65
73
  },
66
74
  "configurations": {
67
75
  "prod": {
@@ -77,8 +85,6 @@
77
85
  "namedChunks": false,
78
86
  "aot": true,
79
87
  "extractLicenses": true,
80
- "vendorChunk": false,
81
- "buildOptimizer": true,
82
88
  "budgets": [
83
89
  {
84
90
  "type": "initial",
@@ -104,8 +110,6 @@
104
110
  "namedChunks": false,
105
111
  "aot": true,
106
112
  "extractLicenses": true,
107
- "vendorChunk": true,
108
- "buildOptimizer": true,
109
113
  "budgets": [
110
114
  {
111
115
  "type": "initial",
@@ -124,13 +128,13 @@
124
128
  },
125
129
  "configurations": {
126
130
  "prod": {
127
- "browserTarget": "widget:build:prod"
131
+ "buildTarget": "widget:build:prod"
128
132
  },
129
133
  "pre": {
130
- "browserTarget": "widget:build:pre"
134
+ "buildTarget": "widget:build:pre"
131
135
  },
132
136
  "development": {
133
- "browserTarget": "widget:build:development"
137
+ "buildTarget": "widget:build:development"
134
138
  }
135
139
  },
136
140
  "defaultConfiguration": "development"
@@ -138,7 +142,7 @@
138
142
  "extract-i18n": {
139
143
  "builder": "@angular-devkit/build-angular:extract-i18n",
140
144
  "options": {
141
- "browserTarget": "widget:build"
145
+ "buildTarget": "widget:build"
142
146
  }
143
147
  },
144
148
  "test": {
@@ -2,14 +2,8 @@
2
2
  version=`node -e 'console.log(require("./package.json").version)'`
3
3
  echo "version $version"
4
4
 
5
- npm i
5
+ ng build --configuration="pre" --aot=true --base-href
6
6
 
7
- ng build --configuration="pre" --aot=true --base-href --build-optimizer=true
8
-
9
- ### SET HASHING : START ###
10
- cp ./src/launch_template.js ./dist/launch.js
11
- node ./src/build_launch.js
12
- ### SET HASHING : END ###
13
7
 
14
8
  # ########## --->>>> NATIVE-MQTT folder START <<<<<------ ########## #
15
9
 
@@ -30,10 +24,11 @@ node ./src/build_launch.js
30
24
 
31
25
  # ########## --->>>> FIREBASE folder START <<<<<------ ########## #
32
26
  cd dist
33
- aws s3 sync . s3://tiledesk-widget-pre/v5/$version/ --cache-control max-age=300 --exclude='launch.js' #7days
34
- aws s3 sync . s3://tiledesk-widget-pre/v5/$version/ --cache-control "no-store,no-cache,private" --exclude='*' --include='launch.js'
35
- aws s3 sync . s3://tiledesk-widget-pre/v5/ --cache-control max-age=300 --exclude='launch.js' #7days
36
- aws s3 sync . s3://tiledesk-widget-pre/v5/ --cache-control "no-store,no-cache,private" --exclude='*' --include='launch.js'
27
+ aws s3 sync . s3://tiledesk-widget-pre/v5/$version/ --cache-control max-age=300
28
+ aws s3 sync . s3://tiledesk-widget-pre/v5/ --cache-control max-age=300
29
+ cd ..
30
+
31
+ #aws cloudfront create-invalidation --distribution-id E3EJDWEHY08CZZ --paths "/*"
37
32
  cd ..
38
33
 
39
34
  aws cloudfront create-invalidation --distribution-id E2V5O0YPR61V8P --paths "/*"
@@ -3,13 +3,7 @@ version=`node -e 'console.log(require("./package.json").version)'`
3
3
  echo "version $version"
4
4
 
5
5
  # --build-optimizer=false if localstorage is disabled (webview) appears https://github.com/firebase/angularfire/issues/970
6
- ng build --configuration="prod" --aot=true --build-optimizer=true --vendor-chunk=true
7
- ##--base-href='./v5/' --output-hashing none
8
-
9
- ### SET HASHING : START ###
10
- cp ./src/launch_template.js ./dist/launch.js
11
- node ./src/build_launch.js
12
- ### SET HASHING : END ###
6
+ ng build --configuration="prod" --aot=true
13
7
 
14
8
  #### FIREBASE #####
15
9
  # cd dist
@@ -21,12 +15,11 @@ node ./src/build_launch.js
21
15
  # #### MQTT #####
22
16
  cd dist
23
17
  # aws s3 sync . s3://tiledesk-widget/v5/latest/
24
- aws s3 sync . s3://tiledesk-widget/v6/$version/ --cache-control max-age=86400 --exclude='launch.js' #8days
25
- aws s3 sync . s3://tiledesk-widget/v6/$version/ --cache-control "no-store,no-cache,private" --exclude='*' --include='launch.js'
26
- aws s3 sync . s3://tiledesk-widget/v6/ --cache-control max-age=86400 --exclude='launch.js' #8days
27
- aws s3 sync . s3://tiledesk-widget/v6/ --cache-control "no-store,no-cache,private" --exclude='*' --include='launch.js'
18
+ aws s3 sync . s3://tiledesk-widget/v6/$version/ --cache-control max-age=300
19
+ aws s3 sync . s3://tiledesk-widget/v6/ --cache-control max-age=300
28
20
  cd ..
29
21
 
22
+
30
23
  aws cloudfront create-invalidation --distribution-id E3EJDWEHY08CZZ --paths "/*"
31
24
  echo new version deployed $version on s3://tiledesk-widget/v5
32
25
  echo available on https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v5/index.html
package/deploy_beta.sh CHANGED
@@ -1,6 +1,17 @@
1
1
  # npm version prerelease --preid=beta
2
2
  version=`node -e 'console.log(require("./package.json").version)'`
3
3
  echo "version $version"
4
+ echo "____________WIDGET-V5______________"
5
+ echo "CREATING TAG ON GIT FOR version: $version"
6
+
7
+ # Get curent branch name
8
+ current_branch=$(git rev-parse --abbrev-ref HEAD)
9
+ remote_name=$(git config --get branch.$current_branch.remote)
10
+
11
+ ## Push commit to git
12
+ git add .
13
+ git commit -m "version added: ### $version"
14
+ git push "$remote_name" "$current_branch"
4
15
 
5
16
 
6
17
  # Get curent branch name
package/deploy_prod.sh CHANGED
@@ -1,8 +1,17 @@
1
- # npm version patch
1
+ # npm version prerelease --preid=beta
2
2
  version=`node -e 'console.log(require("./package.json").version)'`
3
- ECHO "____________WIDGET-V5______________"
3
+ echo "version $version"
4
+ echo "____________WIDGET-V5______________"
4
5
  echo "CREATING TAG ON GIT FOR version: $version"
5
- # echo "version $version"
6
+
7
+ # Get curent branch name
8
+ current_branch=$(git rev-parse --abbrev-ref HEAD)
9
+ remote_name=$(git config --get branch.$current_branch.remote)
10
+
11
+ ## Push commit to git
12
+ git add .
13
+ git commit -m "version added: ### $version"
14
+ git push "$remote_name" "$current_branch"
6
15
 
7
16
  # Get curent branch name
8
17
  current_branch=$(git rev-parse --abbrev-ref HEAD)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-web-widget",
3
3
  "author": "Tiledesk SRL",
4
- "version": "5.1.0-rc1",
4
+ "version": "5.1.0-rc11",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.tiledesk.com",
7
7
  "repository": {
@@ -19,20 +19,19 @@
19
19
  },
20
20
  "private": false,
21
21
  "dependencies": {
22
- "@angular/animations": "^17.3.12",
22
+ "@angular/animations": "^18.2.13",
23
23
  "@angular/cdk": "^17.3.10",
24
- "@angular/common": "^17.3.12",
25
- "@angular/compiler": "^17.3.12",
26
- "@angular/core": "^17.3.12",
27
- "@angular/forms": "^17.3.12",
28
- "@angular/localize": "^17.3.12",
29
- "@angular/platform-browser": "^17.3.12",
30
- "@angular/platform-browser-dynamic": "^17.3.12",
31
- "@angular/router": "^17.3.12",
32
- "@ctrl/ngx-emoji-mart": "^7.1.0",
33
- "@ngx-translate/core": "^14.0.0",
34
- "@ngx-translate/http-loader": "^4.0.0",
35
- "@popperjs/core": "^2.11.5",
24
+ "@angular/common": "^18.2.13",
25
+ "@angular/compiler": "^18.2.13",
26
+ "@angular/core": "^18.2.13",
27
+ "@angular/forms": "^18.2.13",
28
+ "@angular/localize": "^18.2.13",
29
+ "@angular/platform-browser": "^18.2.13",
30
+ "@angular/platform-browser-dynamic": "^18.2.13",
31
+ "@angular/router": "^18.2.13",
32
+ "@ctrl/ngx-emoji-mart": "^9.2.0",
33
+ "@ngx-translate/core": "^16.0.4",
34
+ "@ngx-translate/http-loader": "^16.0.1",
36
35
  "@types/marked": "^4.0.3",
37
36
  "accept-language-parser": "^1.5.0",
38
37
  "bootstrap": "^5.1.3",
@@ -42,19 +41,18 @@
42
41
  "humanize-duration-ts": "^2.1.1",
43
42
  "marked": "^4.0.16",
44
43
  "ngx-logger": "^5.0.11",
45
- "popper.js": "^1.16.1",
46
44
  "replace": "^1.2.2",
47
- "rxjs": "~6.5.1",
45
+ "rxjs": "^7.8.2",
48
46
  "source-map-explorer": "^2.5.3",
49
47
  "tslib": "^2.0.0",
50
48
  "uuid": "^8.3.2",
51
49
  "zone.js": "~0.14.10"
52
50
  },
53
51
  "devDependencies": {
54
- "@angular-devkit/build-angular": "^17.3.17",
55
- "@angular/cli": "^17.3.17",
56
- "@angular/compiler-cli": "^17.3.12",
57
- "@angular/language-service": "^17.3.12",
52
+ "@angular-devkit/build-angular": "^18.2.19",
53
+ "@angular/cli": "^18.2.19",
54
+ "@angular/compiler-cli": "^18.2.13",
55
+ "@angular/language-service": "^18.2.13",
58
56
  "@types/jasmine": "^3.6.11",
59
57
  "@types/jasminewd2": "~2.0.3",
60
58
  "@types/node": "^12.11.1",
@@ -3,7 +3,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
3
3
  import { RouterTestingModule } from '@angular/router/testing';
4
4
  import { AppComponent } from './app.component';
5
5
  import { GlobalSettingsService } from './providers/global-settings.service';
6
- import { HttpClientTestingModule } from '@angular/common/http/testing';
6
+ import { provideHttpClientTesting } from '@angular/common/http/testing';
7
7
  import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
8
8
  import { TranslatorService } from './providers/translator.service';
9
9
  import { TranslateModule } from '@ngx-translate/core';
@@ -23,6 +23,7 @@ import { ChatManager } from 'src/chat21-core/providers/chat-manager';
23
23
  import { NGXLogger } from 'ngx-logger';
24
24
  import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
25
25
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
26
+ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
26
27
 
27
28
  describe('AppComponent', () => {
28
29
  let component: AppComponent;
@@ -32,12 +33,12 @@ describe('AppComponent', () => {
32
33
 
33
34
  beforeEach(waitForAsync(() => {
34
35
  TestBed.configureTestingModule({
35
- imports: [
36
- RouterTestingModule,
37
- HttpClientTestingModule,
38
- TranslateModule.forRoot(),
39
- ],
40
- providers:[
36
+ declarations: [
37
+ AppComponent
38
+ ],
39
+ imports: [RouterTestingModule,
40
+ TranslateModule.forRoot()],
41
+ providers: [
41
42
  Triggerhandler,
42
43
  GlobalSettingsService,
43
44
  AppStorageService,
@@ -54,12 +55,11 @@ describe('AppComponent', () => {
54
55
  ImageRepoService,
55
56
  TypingService,
56
57
  PresenceService,
57
- UploadService
58
- ],
59
- declarations: [
60
- AppComponent
61
- ],
62
- }).compileComponents();
58
+ UploadService,
59
+ provideHttpClient(withInterceptorsFromDi()),
60
+ provideHttpClientTesting()
61
+ ]
62
+ }).compileComponents();
63
63
  }));
64
64
 
65
65
  beforeEach(() => {
@@ -54,7 +54,7 @@ import { AppConfigService } from './providers/app-config.service';
54
54
  import { BrowserModule } from '@angular/platform-browser';
55
55
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
56
56
  import { APP_INITIALIZER, NgModule } from '@angular/core';
57
- import { HttpClient, HttpClientModule } from '@angular/common/http';
57
+ import { HttpClient, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
58
58
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
59
59
  import { environment } from 'src/environments/environment';
60
60
 
@@ -303,21 +303,18 @@ export function uploadFactory(http: HttpClient, appConfig: AppConfigService, app
303
303
  NetworkOfflineComponent,
304
304
  ConfirmCloseComponent
305
305
  ],
306
- imports: [
307
- BrowserModule,
306
+ imports: [BrowserModule,
308
307
  BrowserAnimationsModule,
309
- // AppRoutingModule,
310
- HttpClientModule,
311
308
  FormsModule,
312
309
  ReactiveFormsModule,
313
310
  PickerModule,
314
311
  TranslateModule.forRoot(//),
315
312
  {
316
- // loader: {
317
- // provide: TranslateLoader,
318
- // useFactory: (createTranslateLoader),
319
- // deps: [HttpClient]
320
- // }
313
+ // loader: {
314
+ // provide: TranslateLoader,
315
+ // useFactory: (createTranslateLoader),
316
+ // deps: [HttpClient]
317
+ // }
321
318
  }),
322
319
  LoggerModule.forRoot({
323
320
  level: NgxLoggerLevel.DEBUG,
@@ -349,7 +346,7 @@ export function uploadFactory(http: HttpClient, appConfig: AppConfigService, app
349
346
  {
350
347
  provide: MessagingAuthService,
351
348
  useFactory: authenticationFactory,
352
- deps: [HttpClient, AppConfigService, Chat21Service, AppStorageService ]
349
+ deps: [HttpClient, AppConfigService, Chat21Service, AppStorageService]
353
350
  },
354
351
  {
355
352
  provide: ConversationsHandlerService,
@@ -389,7 +386,7 @@ export function uploadFactory(http: HttpClient, appConfig: AppConfigService, app
389
386
  {
390
387
  provide: UploadService,
391
388
  useFactory: uploadFactory,
392
- deps: [HttpClient, AppConfigService, AppStorageService ]
389
+ deps: [HttpClient, AppConfigService, AppStorageService]
393
390
  },
394
391
  TiledeskAuthService,
395
392
  TiledeskRequestsService,
@@ -398,7 +395,8 @@ export function uploadFactory(http: HttpClient, appConfig: AppConfigService, app
398
395
  Triggerhandler,
399
396
  WaitingService,
400
397
  ScriptService,
401
- BrandService
398
+ BrandService,
399
+ provideHttpClient(withInterceptorsFromDi())
402
400
  ],
403
401
  bootstrap: [AppComponent]
404
402
  })
@@ -15,7 +15,6 @@
15
15
  [hideHeaderCloseButton]="g?.hideHeaderCloseButton"
16
16
  [hideHeaderBackButton]="g?.singleConversation"
17
17
  [hideCloseConversationOptionMenu]="(isConversationArchived || g?.hideCloseConversationOptionMenu)"
18
- [hideRestartConversationOptionsMenu]="(isConversationArchived || (!g?.singleConversation && !hideTextAreaContent) || g?.hideRestartConversationOptionsMenu)"
19
18
  [hideHeaderConversationOptionsMenu]="g?.hideHeaderConversationOptionsMenu"
20
19
  [hideSignOutOptionMenu]="(!g?.singleConversation || !g?.showLogoutOption)"
21
20
  [hideChatDetailOptionMenu]="(!g?.isDevMode)"
@@ -113,7 +112,7 @@
113
112
  [attributes]="g?.attributes"
114
113
  [senderId]="senderId"
115
114
  [tenant]="g?.tenant"
116
- [projectid]="g?.projectid"
115
+ [project]="g?.project"
117
116
  [channelType]="g?.channelType"
118
117
  [userFullname]="g?.userFullname"
119
118
  [userEmail]="g?.userEmail"
@@ -1,7 +1,7 @@
1
1
  import { TiledeskRequestsService } from './../../../../chat21-core/providers/tiledesk/tiledesk-requests.service';
2
2
  import { StarRatingWidgetService } from './../../../providers/star-rating-widget.service';
3
3
  import { StarRatingWidgetComponent } from './../../star-rating-widget/star-rating-widget.component';
4
- import { HttpClientTestingModule } from '@angular/common/http/testing';
4
+ import { provideHttpClientTesting } from '@angular/common/http/testing';
5
5
 
6
6
  import { Triggerhandler } from './../../../../chat21-core/utils/triggerHandler';
7
7
  import { AppComponent } from './../../../app.component';
@@ -13,7 +13,6 @@ import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
13
13
 
14
14
  import { ConversationComponent } from './conversation.component';
15
15
  import { GlobalSettingsService } from '../../../providers/global-settings.service';
16
- import { SettingsSaverService } from '../../../providers/settings-saver.service';
17
16
  import { TranslatorService } from '../../../providers/translator.service';
18
17
 
19
18
  import { AppStorageService } from '../../../../chat21-core/providers/abstract/app-storage.service';
@@ -33,6 +32,7 @@ import { TranslateModule } from '@ngx-translate/core';
33
32
  import { NGXLogger } from 'ngx-logger';
34
33
  import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
35
34
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
35
+ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
36
36
 
37
37
  describe('ConversationComponent', () => {
38
38
  let component: ConversationComponent;
@@ -43,18 +43,15 @@ describe('ConversationComponent', () => {
43
43
 
44
44
  beforeEach(waitForAsync(() => {
45
45
  TestBed.configureTestingModule({
46
- declarations: [ ConversationComponent ],
47
- imports: [
48
- HttpClientTestingModule,
49
- TranslateModule.forRoot(),
50
- ],
51
- providers: [
46
+ declarations: [ConversationComponent],
47
+ schemas: [NO_ERRORS_SCHEMA],
48
+ imports: [TranslateModule.forRoot()],
49
+ providers: [
52
50
  Globals,
53
51
  AppConfigService,
54
52
  AppComponent,
55
53
  { provide: ElementRef, useClass: MockElementRef },
56
54
  GlobalSettingsService,
57
- SettingsSaverService,
58
55
  Triggerhandler,
59
56
  TranslatorService,
60
57
  AppConfigService,
@@ -72,10 +69,11 @@ describe('ConversationComponent', () => {
72
69
  UploadService,
73
70
  StarRatingWidgetService,
74
71
  TiledeskRequestsService,
75
- NGXLogger
76
- ],
77
- schemas: [NO_ERRORS_SCHEMA]
78
- })
72
+ NGXLogger,
73
+ provideHttpClient(withInterceptorsFromDi()),
74
+ provideHttpClientTesting()
75
+ ]
76
+ })
79
77
  .compileComponents();
80
78
  }));
81
79
 
@@ -118,7 +118,7 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
118
118
 
119
119
  // devo inserirle nel globals
120
120
  subscriptions: Array<any> = [];
121
- private unsubscribe$: Subject<any> = new Subject<any>();
121
+ private unsubscribe$: Subject<void> = new Subject<void>();
122
122
  showMessageWelcome: boolean;
123
123
 
124
124
  // ========= begin::agent availability
@@ -231,7 +231,9 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
231
231
  'LABEL_PLACEHOLDER',
232
232
  'GUEST_LABEL',
233
233
  'LABEL_START_NW_CONV',
234
- 'CONTINUE'
234
+ 'CONTINUE',
235
+ 'EMOJI_NOT_ELLOWED',
236
+ 'DOMAIN_NOT_ALLOWED'
235
237
  ];
236
238
 
237
239
  const keysContent = [
@@ -74,6 +74,7 @@ button {
74
74
  display: inline-flex;
75
75
  justify-content: center;
76
76
  align-items: center;
77
+ padding: 0px;
77
78
  }
78
79
 
79
80
  .mic-button svg {
@@ -1,7 +1,23 @@
1
- <!-- LOGO-->
2
- <div id="hiddenFooter" *ngIf="!hideTextAreaContent && poweredBy" class="fade-in-bottom"
3
- [class.hideTextReply]="hideTextReply">
4
- <div tabindex="-1" class="c21-powered-by" [innerHTML]="poweredBy" (click)="managePoweredBy($event)"></div>
1
+ <div class="footerContainerAlert">
2
+ <!-- LOGO-->
3
+ <div id="hiddenFooter" *ngIf="!hideTextAreaContent && poweredBy" class="fade-in-bottom" [class.hideTextReply]="hideTextReply">
4
+ <div tabindex="-1" class="c21-powered-by" [innerHTML]="poweredBy" (click)="managePoweredBy($event)"></div>
5
+ </div>
6
+
7
+ <!-- ALERT EMOJI & URLS -->
8
+ <div id="textAlert" *ngIf="!hideTextAreaContent && showAlertEmoji" class="fade-in-bottom" [class.hideTextReply]="hideTextReply">
9
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" version="1.1" viewBox="0 0 110 135">
10
+ <path d="M55,25.8c-23,0-41.7,18.7-41.7,41.7s18.7,41.7,41.7,41.7,41.7-18.7,41.7-41.7-18.7-41.7-41.7-41.7ZM55,91.5c-3.4,0-6.2-2.8-6.2-6.2s2.8-6.2,6.2-6.2,6.2,2.8,6.2,6.2-2.8,6.2-6.2,6.2ZM60.3,70.1c-.2,2.8-2.5,4.9-5.3,4.9s-5.1-2.2-5.3-4.9l-1.6-22.3c-.3-4,2.9-7.4,6.9-7.4s7.2,3.4,6.9,7.4l-1.6,22.3Z"/>
11
+ </svg>
12
+ <div tabindex="-1" class="alertText">{{translationMap.get('EMOJI_NOT_ELLOWED')}}</div>
13
+ </div>
14
+
15
+ <div id="textAlert" *ngIf="!hideTextAreaContent && showAlertUrl" class="fade-in-bottom" [class.hideTextReply]="hideTextReply">
16
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" version="1.1" viewBox="0 0 110 135">
17
+ <path d="M55,25.8c-23,0-41.7,18.7-41.7,41.7s18.7,41.7,41.7,41.7,41.7-18.7,41.7-41.7-18.7-41.7-41.7-41.7ZM55,91.5c-3.4,0-6.2-2.8-6.2-6.2s2.8-6.2,6.2-6.2,6.2,2.8,6.2,6.2-2.8,6.2-6.2,6.2ZM60.3,70.1c-.2,2.8-2.5,4.9-5.3,4.9s-5.1-2.2-5.3-4.9l-1.6-22.3c-.3-4,2.9-7.4,6.9-7.4s7.2,3.4,6.9,7.4l-1.6,22.3Z"/>
18
+ </svg>
19
+ <div tabindex="-1" class="alertText">{{translationMap.get('DOMAIN_NOT_ALLOWED')}}</div>
20
+ </div>
5
21
  </div>
6
22
 
7
23
  <!-- TEXTAREA + ICONS: conv active-->
@@ -44,7 +60,7 @@
44
60
 
45
61
 
46
62
 
47
- <div *ngIf="!isStopRec" class="visible-text-area" [class.disabled] = "( isConversationArchived || hideTextReply)? true : null">
63
+ <div *ngIf="!isStopRec" class="visible-text-area" [class.hasError]="showAlertEmoji || showAlertUrl" [class.disabled] = "( isConversationArchived || hideTextReply)? true : null">
48
64
  <!-- isFilePendingToUpload || -->
49
65
  <textarea
50
66
  [attr.disabled] = "(hideTextReply)? true : null"
@@ -67,7 +83,7 @@
67
83
  </div>
68
84
 
69
85
  <!-- ICON SEND -->
70
- <div *ngIf="(textInputTextArea !== '' && !isStopRec) || !showAudioRecorderFooterButton" tabindex="-1" class="chat21-textarea-button" [class.active]="textInputTextArea && !hideTextReply" id="chat21-button-send" (click)="onSendPressed($event)">
86
+ <div *ngIf="(textInputTextArea !== '' && !isStopRec) || !showAudioRecorderFooterButton" tabindex="-1" class="chat21-textarea-button" [class.disabled]="showAlertEmoji || showAlertUrl" [class.active]="textInputTextArea && !hideTextReply" id="chat21-button-send" (click)="onSendPressed($event)">
71
87
  <span class="v-align-center">
72
88
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="24" width="24" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
73
89
  <path d="M1.8,18.9V1.7L22,10.3L1.8,18.9z M3.9,15.6l12.6-5.4L3.9,4.9v3.7l6.4,1.6l-6.4,1.6V15.6z M3.9,15.6V4.9v7V15.6z"/>