From cb6768b4940722277d808ea26dd73ffe705cd6f3 Mon Sep 17 00:00:00 2001 From: Zita Szupera Date: Fri, 20 Sep 2024 17:06:55 +0200 Subject: [PATCH] feat: voice recording --- .../Angular/assets/start-voice-recording.png | Bin 0 -> 19169 bytes .../Angular/assets/voice-recorder-wavebar.png | Bin 0 -> 13551 bytes .../docs/Angular/assets/voice-recorder.png | Bin 0 -> 13855 bytes .../Angular/assets/voice-recording-demo.png | Bin 0 -> 527440 bytes .../assets/voice-recording-playback.png | Bin 0 -> 12923 bytes .../code-examples/voice-recordings.mdx | 187 ++++++++++++ .../components/AttachmentListComponent.mdx | 8 +- .../AttachmentPreviewListComponent.mdx | 6 +- .../AutocompleteTextareaComponent.mdx | 18 +- .../Angular/components/AvatarComponent.mdx | 16 +- .../components/AvatarPlaceholderComponent.mdx | 16 +- .../components/ChannelPreviewComponent.mdx | 2 +- .../docs/Angular/components/IconComponent.mdx | 2 +- .../components/IconPlaceholderComponent.mdx | 2 +- .../components/MessageActionsBoxComponent.mdx | 8 +- .../Angular/components/MessageComponent.mdx | 12 +- .../components/MessageInputComponent.mdx | 49 +++- .../components/MessageListComponent.mdx | 18 +- .../components/MessageReactionsComponent.mdx | 28 +- .../MessageReactionsSelectorComponent.mdx | 4 +- .../Angular/components/ModalComponent.mdx | 6 +- .../components/NotificationComponent.mdx | 4 +- .../components/PaginatedListComponent.mdx | 65 +++++ .../Angular/components/TextareaComponent.mdx | 12 +- .../Angular/components/UserListComponent.mdx | 51 ++++ .../components/VoiceRecorderComponent.mdx | 16 ++ .../VoiceRecorderWavebarComponent.mdx | 28 ++ .../components/VoiceRecordingComponent.mdx | 2 +- .../VoiceRecordingWavebarComponent.mdx | 6 +- .../services/AmplitudeRecorderService.mdx | 89 ++++++ .../AttachmentConfigurationService.mdx | 18 +- .../Angular/services/AttachmentService.mdx | 42 ++- .../Angular/services/AudioRecorderService.mdx | 117 ++++++++ .../docs/Angular/services/ChannelService.mdx | 150 +++++----- .../Angular/services/ChatClientService.mdx | 22 +- .../services/CustomTemplatesService.mdx | 82 +++--- .../Angular/services/DateParserService.mdx | 12 +- .../Angular/services/EmojiInputService.mdx | 2 +- .../services/MessageActionsService.mdx | 10 +- .../services/MessageInputConfigService.mdx | 23 +- .../services/MessageReactionsService.mdx | 36 ++- .../docs/Angular/services/MessageService.mdx | 4 +- .../Angular/services/NotificationService.mdx | 6 +- .../Angular/services/StreamI18nService.mdx | 2 +- .../docs/Angular/services/ThemeService.mdx | 2 +- .../Angular/services/TranscoderService.mdx | 30 ++ .../services/TransliterationService.mdx | 2 +- .../services/VirtualizedListService.mdx | 8 +- .../VirtualizedMessageListService.mdx | 8 +- .../Angular/services/VoiceRecorderService.mdx | 27 ++ .../Angular/theming/component-variables.mdx | 60 ++-- .../docs/Angular/theming/global-variables.mdx | 4 +- .../docs/Angular/theming/introduction.mdx | 38 ++- .../Angular/theming/palette-variables.mdx | 13 - package-lock.json | 22 ++ package.json | 2 + .../sample-app/src/app/app.component.html | 16 +- projects/sample-app/src/app/app.component.ts | 3 +- projects/sample-app/src/app/app.module.ts | 2 + projects/stream-chat-angular/ng-package.json | 1 + projects/stream-chat-angular/package.json | 7 + .../stream-chat-angular/src/assets/i18n/en.ts | 6 + .../attachment-preview-list.component.html | 13 +- .../src/lib/attachment.service.ts | 65 ++++- .../channel-preview.component.spec.ts | 6 +- .../stream-chat-angular/src/lib/file-utils.ts | 49 ++++ .../src/lib/format-duration.ts | 18 ++ .../icon-placeholder.component.html | 0 .../icon-placeholder.component.spec.ts | 2 +- .../icon-placeholder.component.ts | 6 +- .../src/lib/icon/icon.component.ts | 3 +- .../src/lib/icon/icon.module.ts | 23 ++ ...ading-indicator-placeholder.component.html | 0 ...loading-indicator-placeholder.component.ts | 2 +- .../loading-indicator.component.html | 0 .../loading-indicator.component.ts | 0 .../src/lib/is-image-file.ts | 4 - .../stream-chat-angular/src/lib/is-safari.ts | 3 + .../message-input-config.service.ts | 6 +- .../message-input.component.html | 18 +- .../message-input.component.spec.ts | 8 +- .../message-input/message-input.component.ts | 48 +++- .../message-input/voice-recorder.service.ts | 22 ++ .../message-list/message-list.component.ts | 6 +- .../src/lib/message/message.component.spec.ts | 2 +- .../src/lib/stream-chat.module.ts | 26 +- projects/stream-chat-angular/src/lib/types.ts | 12 +- .../amplitude-recorder.service.ts | 167 +++++++++++ .../voice-recorder/audio-recorder.service.ts | 96 +++++++ .../src/lib/voice-recorder/media-recorder.ts | 270 ++++++++++++++++++ .../src/lib/voice-recorder/mp3-transcoder.ts | 90 ++++++ .../lib/voice-recorder/transcoder.service.ts | 194 +++++++++++++ .../voice-recorder-wavebar.component.html | 17 ++ .../voice-recorder-wavebar.component.spec.ts | 30 ++ .../voice-recorder-wavebar.component.ts | 44 +++ .../voice-recorder.component.html | 75 +++++ .../voice-recorder.component.spec.ts | 23 ++ .../voice-recorder.component.ts | 92 ++++++ .../voice-recorder/voice-recorder.module.ts | 22 ++ .../voice-recording-wavebar.component.ts | 145 +--------- .../voice-recording.component.ts | 18 +- .../voice-recording/voice-recording.module.ts | 13 + .../src/lib/wave-form-sampler.ts | 124 ++++++++ .../stream-chat-angular/src/public-api.ts | 21 +- 104 files changed, 2664 insertions(+), 551 deletions(-) create mode 100644 docusaurus/docs/Angular/assets/start-voice-recording.png create mode 100644 docusaurus/docs/Angular/assets/voice-recorder-wavebar.png create mode 100644 docusaurus/docs/Angular/assets/voice-recorder.png create mode 100644 docusaurus/docs/Angular/assets/voice-recording-demo.png create mode 100644 docusaurus/docs/Angular/assets/voice-recording-playback.png create mode 100644 docusaurus/docs/Angular/code-examples/voice-recordings.mdx create mode 100644 docusaurus/docs/Angular/components/VoiceRecorderComponent.mdx create mode 100644 docusaurus/docs/Angular/components/VoiceRecorderWavebarComponent.mdx create mode 100644 docusaurus/docs/Angular/services/AmplitudeRecorderService.mdx create mode 100644 docusaurus/docs/Angular/services/AudioRecorderService.mdx create mode 100644 docusaurus/docs/Angular/services/TranscoderService.mdx create mode 100644 docusaurus/docs/Angular/services/VoiceRecorderService.mdx create mode 100644 projects/stream-chat-angular/src/lib/file-utils.ts create mode 100644 projects/stream-chat-angular/src/lib/format-duration.ts rename projects/stream-chat-angular/src/lib/{ => icon}/icon-placeholder/icon-placeholder.component.html (100%) rename projects/stream-chat-angular/src/lib/{ => icon}/icon-placeholder/icon-placeholder.component.spec.ts (96%) rename projects/stream-chat-angular/src/lib/{ => icon}/icon-placeholder/icon-placeholder.component.ts (85%) create mode 100644 projects/stream-chat-angular/src/lib/icon/icon.module.ts rename projects/stream-chat-angular/src/lib/{ => icon}/loading-indicator-placeholder/loading-indicator-placeholder.component.html (100%) rename projects/stream-chat-angular/src/lib/{ => icon}/loading-indicator-placeholder/loading-indicator-placeholder.component.ts (89%) rename projects/stream-chat-angular/src/lib/{ => icon}/loading-indicator/loading-indicator.component.html (100%) rename projects/stream-chat-angular/src/lib/{ => icon}/loading-indicator/loading-indicator.component.ts (100%) delete mode 100644 projects/stream-chat-angular/src/lib/is-image-file.ts create mode 100644 projects/stream-chat-angular/src/lib/is-safari.ts create mode 100644 projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/media-recorder.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/mp3-transcoder.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/transcoder.service.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.html create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.spec.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.html create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.spec.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.module.ts create mode 100644 projects/stream-chat-angular/src/lib/voice-recording/voice-recording.module.ts create mode 100644 projects/stream-chat-angular/src/lib/wave-form-sampler.ts diff --git a/docusaurus/docs/Angular/assets/start-voice-recording.png b/docusaurus/docs/Angular/assets/start-voice-recording.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7058afaf3eef16782d0627f0dc436afccf7807 GIT binary patch literal 19169 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 z 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

M#3Ze`L3CQx~c{iY*&S z#(GiwZ2Ln6$`v&1BRLkAu0x^(rr+Dy@`!3>c?fulwKVw43ctb>2S@QS^j40>*kT&V z0}F2x>2_Xj+kyFPghIYJrB9h3wWl4oU4*v&=>Tus`|~Uh1T3;2Bz<=Sl*dH8-c##f zQG+?7s70UcfmjSOIXbiX&AH&|gL&eEECe0LTSI^@dBUl`1XIq3dVW3^j78X}Ii`=U z?vrew#yG&)w{f^p*Kf;wdp~f2olXgGzur_vUU7UH1$kxRHVl&NVx;QWj%Ez6OnkSv zA|}o896IgnbyrLHKR)5?&zm3ckP$diC>;8{C2QnqA(8kCUE}QMy)}D$iGkT3DXtSX zw^meA`R{BpyT+zYK|YmJlLa^L3`iWu;eBTjxH9Eo@&}o_Bs+WLCGjbFB>e6Qn}uY0 zl&HNtf%;36XQqF76Zh%k<-5x|hnf%Y4;W!gfaQD`CywB20RrqD{wtHr|Q7J=$%uD4%e&v>y@S zV0*~*olhEg$M)RKtQ%PR^PPQCo6xn-hK)7J7ddIfWJyQC{jgZH>A}Nl1}8xs#|svd z&8$lyMbWgx%g<%x<1S+Sp1dM@I{1(8LdU51yqzYO_W595wk@sjV?HFHaZIjoXu*rQ zh+c-qMT6N6aej;sS{bW4WGwmq7cN#+{uyJPxBKF)8vMZR!3b0Q~_Ljk^1$ymF5pzs_`5s`o|9LQH=rf^t_TPcR4hKU_m1I_#{0SX%4{7l4;SFE?&)@k)ksUS1Lw|k#!vw^R;Z4WZM7wl60rhML^7t(Pf<6)p@aqNlc4Iw-`n6xcK4k6(uLYO_b>{9=$op5Ep%^>ej zq>Fv`6^O%2)L|y~&!2v8q|vR%8uhb{#ID*%FIci_L{eC~Q7l5g1d7StWhFcR#V!u< zyZqy+HYSo^1W6VPI@7oFXMF9F;h~L^wfqxnb@~4;MZv$N5I$Y} zJSrf6C!e^o6!9~fXt_%~9whV|XAQ<}7waoR6aSu&`|1z=eP=os*~&ArdNonHdkJ+B z^E%GLsbKL$164aC2OS!NL5i(L8vxunGbHC&`nA8>m(wp9Q*jeCtb9}B54CSU^;zyCpNUgR+4qV_f=AtpiZTCy9S0HeDE zEU0PfeZ-4aU~j`zMF-Y7-WTF!%EYi9RzX-*$vhU47PAbrNnC>CIqp_L>>%Y^8mz>1 zCQ#;P*8gw2W&V$jN29+Lie%f>Hw1(&0EljFrDuB60I=Um) z=>b{vaxw7GIS*UkHEhji=07ZLl}o!HS(l7RdbvdeS`#RPl=kbQGpa$Ac5zpiCr^rY zNCVCC^-UQmnCxYiG$(-ekG4;QIPs3Z-$jJIcElQ+F)n-`0eb8svKxq1vG+u_ua zylXBFDp6|?d0$+=V=OT&$J+DT?6-B+c!Uq2H4UtA!Rl5TzTCZwhhu8;KeV;@PtSog zx0Ihe-`wbKITIKX3Afp=wrT=MIBZtGnC)#Q@zOsU(5EIY`5~zo@kU$~a>0haAhW7D z5E;nY2%rRq2i?2441IFW46y41M+@18Y)1DhX>w?fb zkX_^nSiChW)Lxp-c|<0kd}Cy&>aiZGfT{D<_$qg=DGyHQMg9>4?6lY?)a3c0v*%s9 zmDo6st-F>EIOgoi9L0yg7w5{*Sgh9veChsx*5AWB43M2)i>b2D`!6^>?f(l-9U^Uu z+3j^k^6m6Rb};(~0Nt?f(o6w#022z+6++@LHMrU<`DOocn$k8m7k0H)O3bV}W7sKBP zCJ=)=|09#jJ0k95ghGS%;rNsra56cO9Ie#_3^MRBys9)KC(JGcDNnge$_jpn#7r5G zrhN^jSSagayG*6!3qrTtB=B4D(SyzRB+x zS4VS6fFqwZ<3b;%aIN09JYn-rMEj4Czoma!{@ zTe;YuO6n#YlA~-60!mFYcX{JHaM_Q!7GgDmS7OyHoM?gVUGwjgwkq@*g!%J%9YYn* z96A!l$U|{Umm_R1g#;Zb8P-A)n*-j9Iiyiva0snnxd~PG_TTF$cFn!m9QXThSs&F13X4m1lmu0;9rz}qt zU`brKpvqex#UY}9?QP$&e?4^S|1v}Hx|Bd@J$$A(^G0x*S)fpKM(z_sRX#j67-tQdvE^aHaE>pGsknu6l z*(7BoiG!A5C#IHfVpoHtZQTD2%m06bB7iDqnPb#_Q|cm?dORng{QT_l^0D>+`TM6n zBc>S<>o8|%XYLyOc{Yp40nae*d3POZo(4fs#AN0Pt*qIBE$RlWbR=~%W{lUuP-dXr zM>Yh&AEUhLMAED2-9J{@Hzzo$5lTw}W1T?FHup-EP}a3$G%!t_g?kF5<&G{x1jBF0 z{=+&VtAOuF43e1jBR9LVt&^b; zTXaeR((RZii>Vkjr?tDIqzG zWU3foiM(#7py8yN@9Qakv?{4-4H(c%ijcM`8&`>Ji# zxc4u;hpWzi(stE}+Ip_$r1w*PtTZ9&=NET~nWqzB*Qv|*y=m2-2>24#Ff-0$uv3iW zE!L0&Nvt_h>X=X2l<+#ZA0^q&uQp&KU_j{PUD%BWT!L_mddZuDwexHn+0_#gAGtCl zQg0a`WMfZ+$yU<57Kc$7Jv&Vzs}!PB{f#GlIf`yppP$9`1Fr5@fwB_~5@{VnF+bpy z7Wdq1p1+eWibVEC_a1So_p0RNE2B?kEyRl6Af1;L6RZtxCiw@R4u0a32ioSOZO40) zg-g=M85-%e2_ckq|4*^Ye~Kw+w1-i8>aM==X<7g$xA>S5reOA01MmhjwCGZ^vGsx>A?TJ z1?GPcYW5$r$RWEIm?e*eAdYsftzp>0o|a^iB4(!FCDlIBjDHvx?GlTRi|pt<<(_B! zDc8~T!l2C5+osbhtur?QR)44B@^*z5myax-yT%f1ut7eZb&R0~wdLqo1SbTDvY zKV6P@Y-F*>b>9)(#2=^o)5j5BKD?Wb4t%hIw3~4*vp5eiJi3&~cA;gs#(|7rpi3`( zb~`NHtjk+&O!rvcrdPZ5*su!n)Nyk}_CQ5RcBNc%)YY%95_Qk$=0GdI>i-J}C;w^V zmv-0uwVf{N$Mn5=EZ6mMX#%_tk#qLh+vv_W&YwWP)YM29{O@J#-P7X1%bkou1}`~* z3Y_V|ewH(y0cj-p^h}GO=c$vE6>75v#b5WsE|*NYbT4Zz+zUh)bq5C$DIJdw+j&<3jz5Ay(4N3@H#U+s?9LJmx1{=~nCbGfCsYBBs)W+Bj5Eq1N~JjfMOJ}!$QOi< zczZCv)BMS}^arq7M=1QAE(JoKO^!3)`vvbrIAu#NesJ0Jf2Q+t^UrilJM@02jr;KU zWKav>Q;4-RxbmszG+dv^V$U1)t9cyEk8FK!vWQ`OA$9)E)9NXg>J7#_59f?E2Vk}M z^aKv$Z%cS#0EJx*VjA%a?FC~G(<#D&zq%L(>mRCg>G7!PRTq2G)DT;aOf2!we7{$I zoa8&MzFgx^uC6&$_OMDXYa3Z)wtAE-4)=E6i?04aKavJ)ZeeZP+*E==FDQH6L_CT= zA6$g#q(;|8@`vltaruN$#z7JIrA_6)S!4x+rBY?OtLr+;L)-QfshJNMX-K^R_L5AB zGr6-^a$Rnbr`*o0(X6`Rf1z7u^9{JZGBiKHQ5T4fcYX2e!&@(y({{!Y;;8B{KDu&q zsf=Zkd8RFgv#ihln$#ExJSX(&G_cL~PI}Y{v3iM_!$xNn(~zKGVSLZJf>|6!Hc157 z!5xBdgBmbg^4R#hCjA=>8C|cLM5J281$2qT4X5aTE!AXwjC?@<(CPZ?3M3@(nroxX z{PgPysa^09alU_|oyp~*q&l=L=JDi_D>!fs>_}wy?eX;TuzJkb(^qY;eAV`#k*)`t z{c|_Smt33R54@LBIk74;HDI_sU8-u3@to2T)=%rmmIM=6=a z?l$pDL-Lhd~bNY%wepV)+EoI%;zdNTXuWe+Z zomJFgO?P;!#~Sa({+Ho;%#EOkuk?RNYv5m3;Ps7{VR1V39U0c-k!%W4Y%qjf6(`kO zReYEuX8~;~&QCzt4B4b?;X@l-Dv{o8^@2EC{ZSz;u{yx>9^+tuZ_$Es_mCw#!M2PHIW>0;vW+zN50K=l!JqqYvpjBWZb zqeM-G*SDj39ca4s72{liNM>s!zBH-*TTyM7m944s=0>vVeOkXHy^}pc+n~AJ@+`66 zciTyB=EKmLXZ^CiD_#lx@QrM}|LOsu|8_<9q;4VCF5|D^p>P3_wcw}GV8YhoNQw)d zL+cm?G&s45>8zPdr8;=}LXOc9F9ZUP8SV3ayL>JsWwZiY(5fvKneAtFL+u}Ge>FOf zI+-6PT)#o}tiL=`Fk4Wq#IAg7)^ruq*o~+G9G}XV9CFTR7Lc_CmE*>uw=T^NfCF=_ zqd10$T2Tv-ajj}4i#@M+@#CrtYsIxa79VuJSY9DTV%W*>K+D3nCbPf=SB8>{qD=QM&h}!(S=cq-z8RHu-4T!yrUp8$#TCANSt9@VT&@z_&nEXam zf?4?dF)1_U1*#a^95I2(-Cgs`tu3uf3 zys{P_n>kAh1tzfkIuK8KFsZcQtN-D#m?06Sy`fX9cnl&Uc`859m>Gj8>|2_$IccM| z19B_^?_J|sFwxZA$KVUN+XAi7#{+*^86oQh2=4n?;e8nAV?AVFd~YNcWSiAyACXSv zaDFFQhaNrit8p`jV|I`vpocw8@IJ3j*Z;q$Gy*U9Z_y)EJwIeBT*OIR`PQW6)d?qq zHY-Zt-}m9laN`>p8>pS8WFn@9@Wc#MR)HG`&Dv?1ZG7hHgNFerfr9qKZ4GMlddDVa zMS|?5pjvNLpX}w4^63s+vl4ygfxUH%@nbnjD?(nuAI{t$Q+deOtVr{2w2Q-fI#4vy z8DmS3CnIVr>}MA#?F*F&nD@1c8mABvVy_(A%|^Ls)x8L=(N=mrL=x~GuV{mcTdN&& zJp4oc6OH-*%KGsDy_$awzGO1jg2nKqCPYJ&5|q}HERmk#)4F{Y&BY5#YXHYbE;(w5 z`KccUUe^f77rS`UH;n2dEhip}Y z+mR6T1*&muuWFLUJF1uMtDuUdQIBCM=t*e7WdF=$<(v=A|5@)qF0=a=Mf7j%r33MaW#^aGfz|B^65{dE~bk5Y7{>9>mUO0 zd%IKB^qVwz_5-AMB=|R9+Y+k0PFw;Hl4mVGt;xN9=UVWYXrAC}!?3JqskjL88;-Ia zzDESLDJy6{L00%sSOsOw;ehmN-FwB3PiX4Sc5UFOh2omw8aCo(m8mVd_PK(9uyR~E z9+PtQevBjvaJJ-RuML&6g<9iA{@QQcdcyzuaL;1Gm2l@kvw>FhI^Nj&AAKB*cULRQ z#_=lGUYO?os<3~j=H63&qcZWhFL8&cwUpXds`A23yiDdHc`~H>rj2y5=}TkbBAMT? zAQc6bFbVRwDZnctrb<|M(4=kFnzXD8#~ai8P8Rg2BDrcUnCCp7ba6cu46+T=3(93& z)wtNF1|Rl==r0s6Kj>q||0Jot3~~VxLJPV3WtR1=Z2?QAu04e~eSybSU&b!Vs;81O zvo}Uah)Z>n1*gyz0L&LWhekisGd`$$2o1w8M8} zE%t>{cG#-f)uiU8g%;SQIn3_5E#AohnoMBE-tNJp`;#T+Uyh2 zJT@H*K5MPiMzRvY=ZSpP%SvHw4jGT%sliVNuhR(>)u*v%-0)6Yo5cqlc3|aV9&|>?!psRJ;xN8SVpb z%)L}lc6ZfBy?3?jZ85^eW~}mGXX)Ac{~S}xjaHj6WV{Hv7e;mlT33U*EZMhmEPlA1 zLNUgtLgS?yDSCA2UwyvlTCtHt%i>OJ?1cA|+&k~ImaErzO(%6Z2LYCFO3O3BT1|Jd z6Yj*r^^Hc%$k^`#s(1HM|AdI&>vs)?(|>`h%?di&8^STIbWn6dOjzd4+v%R`- z_73!dYi&x+EwCp`b$W&gKP1N}l{AbGTIE*|8vEVPuL82122SOfe=1Qrk*O~j1b~C+ z9qpH+O`&eQXJEMR^1qxq2&z6qIgXS)Z^D1(k-SDTWLBuWBlcJ{uyhU&x{$j@ht6ia z4iMt>GN7OH993%mXQ%EP|4#7z8oZMlG_kh>2rpzv?V6t9)|T*jY~@Cg*a~RackAoV z+K$5Kw*oIP83;|Iqt4pm@husdJxC4Imy7W0CU-9=%^FFss3+Ax$28Vo%)q7$)K3=O zNX((h>4oGMjffWRb*?`0XO|&4ScmVU+J2r2R`Sueig4%4haY=(o(y0bxL7C|*{c6P zmp?9E{#8jgGS1I)jR8>#*DB}NKYthS`FelQxXxth`mUvI=Gt@@p-*KrPr(2D z;Drhfb4xo)D7^6NWz-&-NMPcBx+W#d;jkQ5jQqT++uT`l6Pzgc$SAbT^ zwMhYV3B%S{C=*8SYjP#YT2MtTNVV096)$v5;K1S(%l-tC07lgBzjs@}1pCvwO;BFm z9H4D;`Zvc59>lQ%WB#b^{LE{djOv1`>;??l7H`$|DOC%uNR$`1vSzE{;6|T6@AVm$ zKxO2U*8>S>MpeREx8$A}k?n;kpqsoh9Fs?FV1~@xeZA3HIMwn9rf^*zYNJP<)wgb$ zBKV~)6E}GR^Z(Kyy?<8-?wj58Yix)N%p1omo5pFp=)zIl@&zTik}WrdFN&>$-wgmn z@a9hWT|2db03s&!Pgh^=x@5c%q%g{PRc20)2-{A?*lz6le^Gl+Rt&d@_8XPX0FE`n zlyXq0P4Y1qp@~$pZ;*-l8HQpkVNqOv0ff98^82ym*=w3Uc4(Ihle;eb^8d%wSB6E| zeP7d^BAp77(p>|HfOMCnq;yLUrF062Fr-L#!_d+>baxHS&_loYd!FZiz1R6VALhRA zbJpH_?X}k#N3!;!5&xss#tB4O%H#6GDyLd7c2e$>dA<7wz|5rfCmEL(H=lLR$+G81 z**57zz0LH$r1Q7G+#M(Q^oUHobH=!X%T%=3OPiBvg)lrwH_>BTw6;J}+*#-wZ;zdCJMQ7OSf|lV=yRXxa##BiUr79yNTaK)&!j3{jx;VhFTB>2PUecDB)@O?ul~OLTYo#Pwiyq( zhEhq%jK=21)?)5N0QPLpXyL&pDhm~bmunK|EX!hDwC?P+SPJRZhMJXsgp=tfJMHE_ zhP#Qcxp$Nd7-XtD8K(Gr6nmGN6 zw<_3pU?Rx*K5jWy(Y>3N-nsp&q(4cQU?1o+>u%-%xv_hd$FG2c&X0bI)bsLu7XsM^ zf^N$*VMj<#McvfK{S+W$z0O|s?jc3x|p+?trplJh&TA)fXWVM{1$NePnC_Y=du$WuhTa1k}` zU%AlMJrdd%F!|-OD#TC@k*|4YhES0}`>}NMAEsmZf9$7Dz(aPexKet~OyO+zKBgYg z%}Xsjv4qRBH#wb|$RcrspZU7!_3&R%tQa2pLF=22iJcJT#xgKKbeG{6!5H1t?t-m{ zQHu20sVAwoL$_X5`d3INmYbjCYI=mQpyj6pH}_-s)#DFW)jk`!YAltABz`Y{Aa8)LW;IO2}6FPIRdn;azR>Uy~Rl?mw4 zc-j4hYy-DTapEMRFG>g1RjO-AscZ7Bh8}{4wZ!*IfUP$w_~pK-R_F*#b>_LN-2p^N zUql&Oa&6}eLv!i094OleqOMDy2vxmsp+|MVxXRjw1Kn-K!&@5ufQMfdOyr@A+e z1vg|Nu=Q8+T3-7~SG_u(sghcQ?LLi|vMGi>;dQr0dDVGK)GZ=Z16!ekOVC zZ*URheXDooXQeKj5U_fpcms8<2&`B*YH;m(YU!Jy3EIZArv&Gyp7cI)N&W z@Z_ik^;70(hzto^z3|q=?_u}Qqkjm=XtU4ZYSTpc7UUjQ8R6VOxpHH8<&Q}%Zh=p5K?>9 zH5`4LzCxy_ToDnK``8P+mh1|^0-VPMO#Y(|`9ughDCcuHKXx<8iQX4|mQVZD^G>rbNMf(G!GN35A%aquL%6MFa8YGI&s#RPeA7bKMJxSdjse zhSQz?#X7DQW9r7-bVVV7|qmstI zN8*5Qh*b}2i12cx7263dzQ$}$e)dMH<3pFJJsPm#>#26NxDFi5L4n`G@D8!QVm;MU z0cDU)2AA7Llx6o6GDUv)L5=j*1@xez9lR^+G^W`&w8}u?@6Yt9%_PUip{&q(G<4Q= zT)iK1{u@spi*$LH^1$R@9Av*>p8~#h5vxt zGap3(-c@f`)hZ&ubH@5&v3njl>D+Kt&2CS=drU*=(bk~SD1_i&5JHleO zbs1Ch*fYx8#oHE~>NQ$MT+_UE<#*jxvzINQsuf67>!Q|w(-VATbc*w<1$Sbg?|KK@cKgZT^d3P z?1+JrK6i3e=lIrLzax22LOm+iN%n9JFUIx8G47b`?n{4}Uvbxr|#hygOq-}aC#HA!L7D%Bstr_mF;MYFGqc7CGdZVs5yXN<(|CX!=f1`)dNoT|F zcBb<^;W9$6Y>4#aMykf=AV14%?^Ld!3z2fzk`|jry zKk+zLi_8`-L_gs zc>~x4X~u_#UX*l|&8v6aP~BZb_M)MhIEpyil6%%i-F@Cg;)T`~^P5JujP2uf_huDUnxj?b#ZM%5%50S3y(sRaCJ zb?DhLf054U+duza^nai{Uw#LCN!v-fkxDOq5XxcQK8lxg-q(8|W`=@+LX3hX&9uAd z*FIjxD$3LHanx2&$a3=8md+N|_OAc#dl*dvOTaH`U&l>u=ikt11F6LIvSnu_yYXQ( z&k5@tQT}EhOqJJ;z5O&5xTSloLG9&(!zLaRy_wYM%D(YlEnH}ax;LJ@z!%WuYWcVr zJWWbh*{qrG?p?yZjypfEyp9pwS+e}1^LYv|El0^>?-Q5G#Y#ePz4-BVfkCe*Hr;os zZG+i~Ux{3{nmH~i-HM86IXBpVgC*RFh3vi33-z+nuX8AGF?S?=(jHqQ zeS>GiX?ftGr1*+y)(wa&_m^u79)V#YAWa@d_*g?HH9UM=mg8Pi7C&8i#sgW+Yi?yh zpajk+ww6|U7?g?Pz)ATN#@as6viAt?vG)TFThARrZ7ckClK^L49or}^yTEUcV>GAV zWSZsQtq7;L3Vb$Jw5?B4u-wsqq=`yrn{f189KiFyoU{3u{m&P<+xWYmQZoH8Ma4du z$jhw>e~-*v8H#Ym4LG+c4U2X|4MzH$Bpm>1QSMlRzq7vC;0>Ol_NC*Fo6!lHGM2P*=CAq*|@%X66H}A zSCSL5nM0=urxL@vNyP0Czk%8c`cV-$tDUjtE28_Z8zBlQPaWt=a$?akZ1$W_;#D6T zslx2|<9QTxGQl1o7RrJP9oXa%m)?cVuS?Y_1KtD1($OcKUyKJjOAQfRH_lf!MXoR1 zC!Gfw*BnRRX{plqw$qFs?dfi=G4##Q-R@VQi3j6SZB?a<=dH}l}{Ye3OtXu(CcV+Qy! z!(}h6@|WjjLM*RQ7j2OKhUDVWp;_!;Ps6F`pS?iEQ<0InZGG7pL4bTFjiC5kvN$}q z_ou(6K%`Z47h^8m@oY=N&o=^>*UHfy4FP&Q#Tnq zMZdUlvJx(ghPFoUa*)~q7VjF_9DK#<#P(k;sN(-HdB1G7?0`5CR3N=0^T18$tB5xF zR!pGg=s@QTryYkGO}3&yh5mE6J}_IOpJhcLx_T|21;pxI&l1s8~UN_Ho#2RsF`+|kw$%SA?dTG3Md7x%n9=@7U2U$9h@k?a!~qDn1o)s zvI+$2PRpr@vnkU~#Xy&2Gp>Yc5qJqJ$kBaUARP*;z(lpm{UKcMh4!Fiplt|A!23Ui zT_X*ji1|oE-o?m@nVQT|##5SPzJj<)vvT~Wan=3%T&??~2hlEE&MXm(gWNWPX=ziG zyJasEnkmCyw+5pUS5%)W+r=7#Ot%z*etC{9rXqBiBBdGzwai!r)3lAyrIPw+070v! zU;AmdT;Pdrk^$RLbrloxSkw!dOZDUd184oC4i4pM!BI|z;&Y-j+V$*0Z78i%wWuKM$NS1b{=cz} zmH(*%%M~lQb{B-5u&{h!zN~tU??AZ`w{O|Om8y%*xnh15Y7Qbb8 zM{Uo(6?t8@3^sRy+-Z+U`-Q$8032*}Xxoz{ILC6;6jY`m+bFpO7ZP&14wMF!+HD7C zHnf*JQK>ZP<$Y_4CLQhyJ561X&zQ8XQ93ZJY;1RVyetu2)&>X!$H7>aE%kAlSW&4b`|IHWvCr)kV@OMMw_I6@? zWclFj_8sC}F5GfPe)-a`*SANc-LNT!3lE3-ur-(_1E@(8q{4OLfWB8!dn$>R8CrK{ zWhfYIw;sdyeyf4!Vgv(-Eq}J&9t0KUH(lFx`rQPeh{b;BwKos*noRo$`1QCF@;E~N?m$GG{VzlqQ zKVqKq-PX!b2v`+{?Dc6K%SblREwuO6W8B(V^kZ_fe}*n6Y5CoDWLd|WuBpJa%PG}O zvJXC35gVt9t$y80%$WBozx9wmvrjM6>xMtpJA@ac1^}(QWdN#`iJV~j4=20h9?nf& z-}j6IAZNv~!z0o)JzeURtQEPOJ;(y-$PCb=8(LuEj3XX8)tW5tvdBNvb@zH=f7?5X zsweYJL>PxTh@!+8T5GP6$7YRCTgWJB0z6{_>#Za9dq+D7rbE^R11(yqWEA5bPr1$w z)U18d;8fO0rf)UUK%9NJ{t9-7iS~(kClj4+?2w(k|05m!iKCmQIbObrSkg3opnbT0 z`l&U}HKE`OUjfXSfYaJT=2gv;`|-_m4&Q2M7iNWZxPwnNERdvuD#HLQF_7{_t+ zzRXeo_0-=<JQ2-o%%tlfK6v!07KyfO1nq+r*xt{C z>zc~{CbqzL#>zKo!<_3AA%TjpRlZoJ3%7F*G;ODkaU1QV*+!eI8*V%&S6T?u$j_uK z>TAn2l4R_-kXlUJ9_%JR&d<6x-hKIJ2HRcX)JwLTvW4j7sH;O^KwgPU{TOrfuIYdb z`IysRWj=kv>NKt;Mq+RAjR(-1EWQUw63=|C^_pQxu@7 zXvYUBKZV&Koo@`SWG3!V=OJAyiA6-UGmLBjG4O4xJ)_5*Q=w^L<&M}zLhV#u3z1i1 zu;#STotZUv$a2|R5sAUpHi$>C3QF-pikzvSQmwj7AErNPMWFBfk*-9d!BWzq*H*Fi z_C5$hYgz9t=TP(acugmJTb$F-L=lsctY(BnuVHFgD04&svJW?)WhH^<*LxQ5D{zK& zj;xK^1Xj)dfAQ%#{653jK19$ehH2m@3kXNK5YsI%TRICWXPHl=f%;mev-`+@(Kf;c z95K%V@avuoc~f=~Psix}fR*cc_QTZ_;77*e>4jK~z?4>&9hGO&0ijYyJ$0GeAtJwf zW>avM<6z@WH`whjRji4ERKiTb80rr}@B%5yW;`ng%$hIGDGXnze@lJF-awWh(DO5y z8myQOjeSQTN|bZWeWD|Cj{nZes-J;RIE2m6#L_`y@wq)*W&WZGbv{TT`8( zk3?CEIHjE^hN>};2#^h|~a;oJAGxw>?%l@s0 zAO5#3OtOsa)klL!*Lfkam>Ja(qUfJ6cGcd*D|7#3vNf~!3aTOfkX9c>HmoIyM*HUA zJ5S8$Rz}Cfd|?Ew7F8TVu1)DJf0FPRd4C2mmSk>=g(gkWDYA|fH1D0M{nwl^YXpzr96pp`L2Eb^2a9Ao1lXF{OAx{G+A956)^XipuX(}E(gA` zy-7oeNPJTHD?jRg)xs73qnz%p>OKmnM#~Yw<9lmMi>7Mal*ZL*FwD=gLeezF%r_*) znzt%S6WbBSzWAUga_3TJfIks|mTlA4$joHtP#qJ-W^ehrhR^~soUW<-HU+eYLX}&+ z#*DWa9g*3nph2~#m=8RAtNs%%Ik9BQ!}(`5q!1iYPv`KT)mClL-OmRi>J@s=185!c z+a-lYp6S~!J!V@?Q+DzW^5A`5VE~bd5a0-i487(Y7xyR~Jv#AiSNm*<*pQ6VgPg1P z6k2Io#-!M25%ieXF`AY7metgc_jI?D9=AQr-0)Q*CCi6tY($n-vRZ9bUyVr&pv%02G|n9KJ5LhID&OLf1_QQX+J^M77VDiiEZE)4}c2*+gCYM)c7o~$}A*H@D{$!z}e<9VB zMCH)w<|pT0IA@*cQX;*#v4D^pm7Lof0%y-Wtt$zopw%TY|0}H!-ocsiv4M8o{rI;! z|8ydqt^Y%nJw>Oqe++1glPfQIn;{##s{uF5oZ*aG(BtpF}#BDTz#$2N+I=fzYjM`X�m+lKPgbHzBki5hXu|w?L%q*+` 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 literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Angular/assets/voice-recording-playback.png b/docusaurus/docs/Angular/assets/voice-recording-playback.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf959651f34a3cf2fa75b34576c9a1154e5525c GIT binary patch literal 12923 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 D&TxZ9 literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Angular/code-examples/voice-recordings.mdx b/docusaurus/docs/Angular/code-examples/voice-recordings.mdx new file mode 100644 index 00000000..bbd09b64 --- /dev/null +++ b/docusaurus/docs/Angular/code-examples/voice-recordings.mdx @@ -0,0 +1,187 @@ +--- +id: voice-recordings +title: Voice recordings +--- + +import VoiceRecordingScreenshot from "../assets/voice-recording-screenshot.png"; +import StartRecording from "../assets/start-voice-recording.png"; +import RecordingDemo from "../assets/voice-recording-demo.png"; +import Playback from "../assets/voice-recording-playback.png"; + +The Stream API allows you to send voice recordings as attachments. This is an example attachment: + +```json +{ + "type": "voiceRecording", + "title": "audio_recording_2024-09-26T14:41:24.473Z.wav", + "asset_url": "https://dublin.stream-io-cdn.com/...", + // This is used to display a visual representation of the voice recording + "waveform_data": [ + 0.03389095297537962, + 0.03389095297537962, + 0.19684165186582253 //... + ], + // The duration of the recording in seconds + "duration": 31.19, + "file_size": 97964, + "mime_type": "audio/wav" +} +``` + +## Playing voice recordings + +The SDK can play these recordings without any additional setup: + + + +If you'd like to use your own UI, you can provide your own template using the [custom templates service](../../services/CustomTemplatesService/#voicerecordingattachmenttemplate). + +## Creating voice recordings + +If you want to let users to create voice recordings, you have to configure the SDK with a few easy steps. + +### Start recording button + +The [message input](../../components/MessageInputComponent) component can display the start recording button optionally. This is how you can enable it: + +```html + +``` + +This is how the input looks with the button enabled: + + + +You can also display your own start button. The easiest way is to use the `message-input-start` or `message-input-end` attributes, which will insert the element before or after the textarea element: + +```html + + + +``` + +### Import the `VoiceRecorderModule` + +The `VoiceRecorderModule` contains the voice recorder component and the services needed to make a recording. You have to import it like this: + +```typescript +import { StreamChatModule, VoiceRecorderModule } from "stream-chat-angular"; + +@NgModule({ + declarations: [AppComponent], + imports: [ + // other imports... + StreamChatModule, + VoiceRecorderModule, + // ...more imports + ], + bootstrap: [AppComponent], +}) +export class AppModule {} +``` + +### Display the voice recorder component + +You have to provide the voice recorder template to the message input component. The SDK provides the `VoiceRecorderComponent` for this: + +```html + + + + + +``` + +The message input provides a [`VoiceRecorderService`](../../services/VoiceRecorderService) instance, which is used by the two components to communicate. + +If you want to use your own UI, provide your own component here that uses `VoiceRecorderService` to communicate with the message input component. + +### Voice recorder component + +That's it. We can now start a voice recording: + + + +The recording can be paused and resumed. Once a user is finished recording, they can play it back: + + + +If they are unhappy with the recording, they can discard it. Once the recording is finalized, they can hit the send button. + +### Sending modes + +There are two ways to send voice recordings: + +1. Once a recording is finalized, you can immediately send a message with the recording; this is the default mode. +2. Once a recording is finalized, you can return it to the message composer and continue editing the message. + +This is how you can change between the modes: + +```typescript +constructor(private messageInputService: MessageInputConfigService) { + // Defaults to true + // Set false if you want to return to the message composer after a recording was added to the message + this.messageInputService.sendVoiceRecordingImmediately = true; +} +``` + +### Error states + +If an error occurs at any point during the recording, the recording will be stopped, and an error message will be emitted via the [`NotificationService`](../../services/NotificationService). The built-in `stream-notification-list` component will display this error message. + +### Custom recording title + +You can generate the recording title using your own logic using the `customGenerateRecordingTitle` field of the `AudioRecorderService`. + +```typescript +constructor(private audioRecorder: AudioRecorderService, private chatService: ChatClientService) { + this.audioRecorder.customGenerateRecordingTitle = ( + options: MediaRecordingTitleOptions + ) => { + const extension = options.mimeType.match(/\/([^/;]+)/)?.[1] || ""; + return `${ + this.chatService.chatClient.user?.name + }-${new Date().toISOString()}.${extension}`; + }; +} +``` + +### Custom transcoding + +Due to browser restrictions, the SDK records with the following configuration: + +- In Safari: recordings are sent in `mp4` files +- In all other browsers: recordings are created in `webm` and then transcoded into `wav` files + +The downside of the `wav` format is that it's uncompressed, which results in a larger file size. + +You can provide a custom transcoder to reduce the file size. The following example shows how to transcode to `mp3` using the [`@breezystack/lamejs`](https://www.npmjs.com/package/@breezystack/lamejs) library. + +First, install the library: + +``` +npm install @breezystack/lamejs +``` + +Then register the custom transcoder to the `TranscoderService`: + +```typescript +import { encodeWebmToMp3, TranscoderService } from "stream-chat-angular"; +import * as lamejs from "@breezystack/lamejs"; + +constructor(private transcoderService: TranscoderService) { + transcoderService.customTranscoder = (blob: Blob) => { + if (blob.type.includes('audio/mp4')) { + return blob; + } else { + return encodeWebmToMp3(blob, lamejs); + } + }; +} +``` diff --git a/docusaurus/docs/Angular/components/AttachmentListComponent.mdx b/docusaurus/docs/Angular/components/AttachmentListComponent.mdx index 7d4ef151..ed212008 100644 --- a/docusaurus/docs/Angular/components/AttachmentListComponent.mdx +++ b/docusaurus/docs/Angular/components/AttachmentListComponent.mdx @@ -122,7 +122,7 @@ The id of the message the attachments belong to #### Defined in -[projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts:39](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L39) +[projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts:39](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L39) --- @@ -134,7 +134,7 @@ The parent id of the message the attachments belong to #### Defined in -[projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts:43](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L43) +[projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts:43](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L43) --- @@ -146,7 +146,7 @@ The attachments to display #### Defined in -[projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts:47](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L47) +[projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts:47](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L47) --- @@ -158,6 +158,6 @@ Emits the state of the image carousel window #### Defined in -[projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts:51](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L51) +[projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts:51](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L51) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/AttachmentPreviewListComponent.mdx b/docusaurus/docs/Angular/components/AttachmentPreviewListComponent.mdx index be84fef2..3fc748a9 100644 --- a/docusaurus/docs/Angular/components/AttachmentPreviewListComponent.mdx +++ b/docusaurus/docs/Angular/components/AttachmentPreviewListComponent.mdx @@ -47,7 +47,7 @@ A stream that emits the current file uploads and their states #### Defined in -[projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts:17](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L17) +[projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts:17](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L17) --- @@ -59,7 +59,7 @@ An output to notify the parent component if the user tries to retry a failed upl #### Defined in -[projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts:21](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L21) +[projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts:21](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L21) --- @@ -71,6 +71,6 @@ An output to notify the parent component if the user wants to delete a file #### Defined in -[projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts:25](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L25) +[projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts:25](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L25) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/AutocompleteTextareaComponent.mdx b/docusaurus/docs/Angular/components/AutocompleteTextareaComponent.mdx index d5159d8d..4a17a50c 100644 --- a/docusaurus/docs/Angular/components/AutocompleteTextareaComponent.mdx +++ b/docusaurus/docs/Angular/components/AutocompleteTextareaComponent.mdx @@ -51,7 +51,7 @@ TextareaInterface.value #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:49](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L49) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:49](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L49) --- @@ -67,7 +67,7 @@ TextareaInterface.placeholder #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:53](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L53) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:53](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L53) --- @@ -83,7 +83,7 @@ TextareaInterface.areMentionsEnabled #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:57](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L57) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:57](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L57) --- @@ -99,7 +99,7 @@ TextareaInterface.inputMode #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:61](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L61) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:61](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L61) --- @@ -115,7 +115,7 @@ TextareaInterface.mentionScope #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:65](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L65) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:65](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L65) --- @@ -131,7 +131,7 @@ TextareaInterface.autoFocus #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:69](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L69) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:69](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L69) --- @@ -147,7 +147,7 @@ TextareaInterface.valueChange #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:73](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L73) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:73](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L73) --- @@ -163,7 +163,7 @@ TextareaInterface.send #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:77](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L77) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:77](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L77) --- @@ -179,6 +179,6 @@ TextareaInterface.userMentions #### Defined in -[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:81](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L81) +[projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts:81](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.ts#L81) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/AvatarComponent.mdx b/docusaurus/docs/Angular/components/AvatarComponent.mdx index 500fab99..16de5550 100644 --- a/docusaurus/docs/Angular/components/AvatarComponent.mdx +++ b/docusaurus/docs/Angular/components/AvatarComponent.mdx @@ -71,7 +71,7 @@ An optional name of the image, used for fallback image or image title (if `image #### Defined in -[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:36](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L36) +[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:36](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L36) --- @@ -83,7 +83,7 @@ The URL of the image to be displayed. If the image can't be displayed the first #### Defined in -[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:40](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L40) +[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:40](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L40) --- @@ -95,7 +95,7 @@ The location the avatar will be displayed in #### Defined in -[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:44](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L44) +[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:44](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L44) --- @@ -107,7 +107,7 @@ The channel the avatar belongs to (if avatar of a channel is displayed) #### Defined in -[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:48](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L48) +[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:48](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L48) --- @@ -119,7 +119,7 @@ The user the avatar belongs to (if avatar of a user is displayed) #### Defined in -[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:52](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L52) +[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:52](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L52) --- @@ -131,7 +131,7 @@ The type of the avatar: channel if channel avatar is displayed, user if user ava #### Defined in -[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:56](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L56) +[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:56](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L56) --- @@ -143,7 +143,7 @@ If a channel avatar is displayed, and if the channel has exactly two members a g #### Defined in -[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:60](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L60) +[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:60](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L60) --- @@ -155,6 +155,6 @@ If channel/user image isn't provided the initials of the name of the channel/use #### Defined in -[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:64](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L64) +[projects/stream-chat-angular/src/lib/avatar/avatar.component.ts:64](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar/avatar.component.ts#L64) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/AvatarPlaceholderComponent.mdx b/docusaurus/docs/Angular/components/AvatarPlaceholderComponent.mdx index 015840de..b5f30ff9 100644 --- a/docusaurus/docs/Angular/components/AvatarPlaceholderComponent.mdx +++ b/docusaurus/docs/Angular/components/AvatarPlaceholderComponent.mdx @@ -12,7 +12,7 @@ An optional name of the image, used for fallback image or image title (if `image #### Defined in -[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:23](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L23) +[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:23](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L23) --- @@ -24,7 +24,7 @@ The URL of the image to be displayed. If the image can't be displayed the first #### Defined in -[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:27](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L27) +[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:27](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L27) --- @@ -36,7 +36,7 @@ The location the avatar will be displayed in #### Defined in -[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:31](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L31) +[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:31](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L31) --- @@ -48,7 +48,7 @@ The channel the avatar belongs to (if avatar of a channel is displayed) #### Defined in -[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:35](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L35) +[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:35](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L35) --- @@ -60,7 +60,7 @@ The user the avatar belongs to (if avatar of a user is displayed) #### Defined in -[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:39](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L39) +[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:39](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L39) --- @@ -72,7 +72,7 @@ The type of the avatar: channel if channel avatar is displayed, user if user ava #### Defined in -[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:43](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L43) +[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:43](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L43) --- @@ -84,7 +84,7 @@ If channel/user image isn't provided the initials of the name of the channel/use #### Defined in -[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:47](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L47) +[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:47](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L47) --- @@ -96,6 +96,6 @@ If a channel avatar is displayed, and if the channel has exactly two members a g #### Defined in -[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:53](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L53) +[projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts:53](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/avatar-placeholder/avatar-placeholder.component.ts#L53) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/ChannelPreviewComponent.mdx b/docusaurus/docs/Angular/components/ChannelPreviewComponent.mdx index ba1bca02..090a41fd 100644 --- a/docusaurus/docs/Angular/components/ChannelPreviewComponent.mdx +++ b/docusaurus/docs/Angular/components/ChannelPreviewComponent.mdx @@ -37,6 +37,6 @@ The channel to be displayed #### Defined in -[projects/stream-chat-angular/src/lib/channel-preview/channel-preview.component.ts:28](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel-preview/channel-preview.component.ts#L28) +[projects/stream-chat-angular/src/lib/channel-preview/channel-preview.component.ts:28](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel-preview/channel-preview.component.ts#L28) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/IconComponent.mdx b/docusaurus/docs/Angular/components/IconComponent.mdx index 1ee918a2..7cc5cb57 100644 --- a/docusaurus/docs/Angular/components/IconComponent.mdx +++ b/docusaurus/docs/Angular/components/IconComponent.mdx @@ -33,6 +33,6 @@ The icon to display, the list of [supported icons](https://github.com/GetStream/ #### Defined in -[projects/stream-chat-angular/src/lib/icon/icon.component.ts:37](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/icon/icon.component.ts#L37) +[projects/stream-chat-angular/src/lib/icon/icon.component.ts:39](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/icon/icon.component.ts#L39) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/IconPlaceholderComponent.mdx b/docusaurus/docs/Angular/components/IconPlaceholderComponent.mdx index d938cca5..f66b7fe9 100644 --- a/docusaurus/docs/Angular/components/IconPlaceholderComponent.mdx +++ b/docusaurus/docs/Angular/components/IconPlaceholderComponent.mdx @@ -12,6 +12,6 @@ The icon to display, the list of [supported icons](https://github.com/GetStream/ #### Defined in -[projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.ts:18](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.ts#L18) +[projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.ts:18](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.ts#L18) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/MessageActionsBoxComponent.mdx b/docusaurus/docs/Angular/components/MessageActionsBoxComponent.mdx index ded39d6b..a2c194d2 100644 --- a/docusaurus/docs/Angular/components/MessageActionsBoxComponent.mdx +++ b/docusaurus/docs/Angular/components/MessageActionsBoxComponent.mdx @@ -48,7 +48,7 @@ Indicates if the message actions are belonging to a message that was sent by the #### Defined in -[projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts:37](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts#L37) +[projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts:37](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts#L37) --- @@ -60,7 +60,7 @@ The message the actions will be executed on #### Defined in -[projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts:41](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts#L41) +[projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts:41](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts#L41) --- @@ -72,7 +72,7 @@ The HTML element which contains the message text, it's used for the "copy messag #### Defined in -[projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts:45](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts#L45) +[projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts:45](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts#L45) --- @@ -84,6 +84,6 @@ The list of [channel capabilities](https://getstream.io/chat/docs/javascript/cha #### Defined in -[projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts:49](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts#L49) +[projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts:49](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions-box/message-actions-box.component.ts#L49) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/MessageComponent.mdx b/docusaurus/docs/Angular/components/MessageComponent.mdx index 28308e19..e7871d5a 100644 --- a/docusaurus/docs/Angular/components/MessageComponent.mdx +++ b/docusaurus/docs/Angular/components/MessageComponent.mdx @@ -73,7 +73,7 @@ The message to be displayed #### Defined in -[projects/stream-chat-angular/src/lib/message/message.component.ts:64](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message/message.component.ts#L64) +[projects/stream-chat-angular/src/lib/message/message.component.ts:64](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message/message.component.ts#L64) --- @@ -85,7 +85,7 @@ The list of [channel capabilities](https://getstream.io/chat/docs/javascript/cha #### Defined in -[projects/stream-chat-angular/src/lib/message/message.component.ts:68](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message/message.component.ts#L68) +[projects/stream-chat-angular/src/lib/message/message.component.ts:68](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message/message.component.ts#L68) --- @@ -97,7 +97,7 @@ If `true`, the message status (sending, sent, who read the message) is displayed #### Defined in -[projects/stream-chat-angular/src/lib/message/message.component.ts:72](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message/message.component.ts#L72) +[projects/stream-chat-angular/src/lib/message/message.component.ts:72](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message/message.component.ts#L72) --- @@ -109,7 +109,7 @@ Determines if the message is being dispalyed in a channel or in a [thread](https #### Defined in -[projects/stream-chat-angular/src/lib/message/message.component.ts:76](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message/message.component.ts#L76) +[projects/stream-chat-angular/src/lib/message/message.component.ts:76](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message/message.component.ts#L76) --- @@ -121,7 +121,7 @@ Highlighting is used to add visual emphasize to a message when jumping to the me #### Defined in -[projects/stream-chat-angular/src/lib/message/message.component.ts:80](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message/message.component.ts#L80) +[projects/stream-chat-angular/src/lib/message/message.component.ts:80](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message/message.component.ts#L80) --- @@ -133,6 +133,6 @@ An Observable that emits when the message list is scrolled, it's used to prevent #### Defined in -[projects/stream-chat-angular/src/lib/message/message.component.ts:84](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message/message.component.ts#L84) +[projects/stream-chat-angular/src/lib/message/message.component.ts:84](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message/message.component.ts#L84) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/MessageInputComponent.mdx b/docusaurus/docs/Angular/components/MessageInputComponent.mdx index 6f4ec10e..9ff99e01 100644 --- a/docusaurus/docs/Angular/components/MessageInputComponent.mdx +++ b/docusaurus/docs/Angular/components/MessageInputComponent.mdx @@ -8,6 +8,10 @@ The `MessageInput` component can use the [`Textarea`](./TextareaComponent.mdx) o The SDK doesn't have a built-in emoji picker, but it has support for providing your own template. Follow our [emoji picker guide](../code-examples/emoji-picker.mdx) to get to know more. +## Voice recorder + +To enable recording voice messages, please follow the [voice recordings guide](../../code-examples/voice-recordings). + ## Customization If you want to provide your own message input component you'll have to provide it in the following places: @@ -17,6 +21,15 @@ If you want to provide your own message input component you'll have to provide i You can replace the textarea inside the message input following our [Custom textarea guide](../../code-examples/custom-textarea) +You can instert custom HTML content to the start or end of the message input using the `message-input-start` or `message-input-end` attributes: + +```html + +

Custom content injected before the textarea
+
Custom content injected after the textarea
+ +``` + See [our customization guide](../concepts/customization.mdx) for more information. :::note @@ -59,7 +72,7 @@ If file upload is enabled, the user can open a file selector from the input. Ple #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:59](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L59) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:64](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L64) --- @@ -71,7 +84,7 @@ If true, users can mention other users in messages. You also [need to use the `A #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:63](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L63) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:68](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L68) --- @@ -83,7 +96,7 @@ The scope for user mentions, either members of the current channel of members of #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:67](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L67) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:72](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L72) --- @@ -95,7 +108,7 @@ Determines if the message is being dispalyed in a channel or in a [thread](https #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:71](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L71) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:76](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L76) --- @@ -107,7 +120,7 @@ If true, users can select multiple files to upload. If no value is provided, it #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:75](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L75) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:80](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L80) --- @@ -119,7 +132,7 @@ The message to edit #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:79](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L79) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:84](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L84) --- @@ -131,7 +144,7 @@ An observable that can be used to trigger message sending from the outside #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:83](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L83) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:88](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L88) --- @@ -143,7 +156,7 @@ In `desktop` mode the `Enter` key will trigger message sending, in `mobile` mode #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:87](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L87) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:92](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L92) --- @@ -155,7 +168,7 @@ Enables or disables auto focus on the textarea element #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:91](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L91) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:96](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L96) --- @@ -169,7 +182,7 @@ If you don't need that behavior, you can turn this of with this flag. In that ca #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:97](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L97) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:102](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L102) --- @@ -181,7 +194,19 @@ Use this input to control wether a send button is rendered or not. If you don't #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:101](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L101) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:106](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L106) + +--- + +### displayVoiceRecordingButton + +• **displayVoiceRecordingButton**: `boolean` = `false` + +You can enable/disable voice recordings with this input + +#### Defined in + +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:110](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L110) --- @@ -193,6 +218,6 @@ Emits when a message was successfuly sent or updated #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:105](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L105) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:114](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L114) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/MessageListComponent.mdx b/docusaurus/docs/Angular/components/MessageListComponent.mdx index b340336c..7a936cac 100644 --- a/docusaurus/docs/Angular/components/MessageListComponent.mdx +++ b/docusaurus/docs/Angular/components/MessageListComponent.mdx @@ -33,7 +33,7 @@ Determines if the message list should display channel messages or [thread messag #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:62](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L62) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:63](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L63) --- @@ -45,7 +45,7 @@ The direction of the messages in the list, `bottom-to-top` means newest message #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:66](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L66) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:67](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L67) --- @@ -57,7 +57,7 @@ You can hide the "jump to latest" button while scrolling. A potential use-case f #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:71](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L71) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:72](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L72) --- @@ -69,7 +69,7 @@ If `true` date separators will be displayed #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:75](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L75) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:76](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L76) --- @@ -81,7 +81,7 @@ If `true` unread indicator will be displayed #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:79](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L79) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:80](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L80) --- @@ -93,7 +93,7 @@ If date separators are displayed, you can set the horizontal position of the dat #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:83](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L83) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:84](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L84) --- @@ -105,7 +105,7 @@ If date separators are displayed, you can set the horizontal position of the dat #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:87](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L87) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:88](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L88) --- @@ -119,7 +119,7 @@ This is only applicable for `main` mode, as threads doesn't have read infromatio #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:94](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L94) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:95](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L95) --- @@ -131,6 +131,6 @@ You can turn on and off the loading indicator that signals to users that more me #### Defined in -[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:98](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L98) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:99](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L99) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/MessageReactionsComponent.mdx b/docusaurus/docs/Angular/components/MessageReactionsComponent.mdx index 6846f45a..d1e78d4a 100644 --- a/docusaurus/docs/Angular/components/MessageReactionsComponent.mdx +++ b/docusaurus/docs/Angular/components/MessageReactionsComponent.mdx @@ -53,7 +53,19 @@ The id of the message the reactions belong to #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:33](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L33) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:36](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L36) + +--- + +### messageReactionGroups + +• **messageReactionGroups**: `undefined` \| \{ `[key: string]`: `ReactionGroupResponse`; } = `undefined` + +The number of reactions grouped by [reaction types](https://github.com/GetStream/stream-chat-angular/tree/master/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts) + +#### Defined in + +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:40](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L40) --- @@ -63,9 +75,13 @@ The id of the message the reactions belong to The number of reactions grouped by [reaction types](https://github.com/GetStream/stream-chat-angular/tree/master/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts) +**`Deprecated`** + +use `messageReactionGroups` + #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:37](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L37) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:47](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L47) --- @@ -75,9 +91,13 @@ The number of reactions grouped by [reaction types](https://github.com/GetStream List of reactions of a [message](../types/stream-message.mdx), used to display the users of a reaction type. +**`Deprecated`** + +you can fetch the reactions using [`messageReactionsService.queryReactions()`](https://getstream.io/chat/docs/sdk/angular/services/MessageReactionsService/#queryreactions) + #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:42](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L42) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:53](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L53) --- @@ -89,6 +109,6 @@ List of the user's own reactions of a [message](../types/stream-message.mdx), us #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:46](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L46) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:57](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L57) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/MessageReactionsSelectorComponent.mdx b/docusaurus/docs/Angular/components/MessageReactionsSelectorComponent.mdx index 3c91ff2b..9214ea13 100644 --- a/docusaurus/docs/Angular/components/MessageReactionsSelectorComponent.mdx +++ b/docusaurus/docs/Angular/components/MessageReactionsSelectorComponent.mdx @@ -46,7 +46,7 @@ List of the user's own reactions of a [message](../types/stream-message.mdx), us #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions-selector/message-reactions-selector.component.ts:29](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions-selector/message-reactions-selector.component.ts#L29) +[projects/stream-chat-angular/src/lib/message-reactions-selector/message-reactions-selector.component.ts:29](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions-selector/message-reactions-selector.component.ts#L29) --- @@ -58,6 +58,6 @@ The id of the message the reactions belong to #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions-selector/message-reactions-selector.component.ts:33](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions-selector/message-reactions-selector.component.ts#L33) +[projects/stream-chat-angular/src/lib/message-reactions-selector/message-reactions-selector.component.ts:33](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions-selector/message-reactions-selector.component.ts#L33) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/ModalComponent.mdx b/docusaurus/docs/Angular/components/ModalComponent.mdx index 764451b9..520c891a 100644 --- a/docusaurus/docs/Angular/components/ModalComponent.mdx +++ b/docusaurus/docs/Angular/components/ModalComponent.mdx @@ -28,7 +28,7 @@ If `true` the modal will be displayed, if `false` the modal will be hidden #### Defined in -[projects/stream-chat-angular/src/lib/modal/modal.component.ts:25](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/modal/modal.component.ts#L25) +[projects/stream-chat-angular/src/lib/modal/modal.component.ts:25](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/modal/modal.component.ts#L25) --- @@ -40,7 +40,7 @@ The content of the modal (can also be provided using `ng-content`) #### Defined in -[projects/stream-chat-angular/src/lib/modal/modal.component.ts:29](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/modal/modal.component.ts#L29) +[projects/stream-chat-angular/src/lib/modal/modal.component.ts:29](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/modal/modal.component.ts#L29) --- @@ -52,6 +52,6 @@ Emits `true` if the modal becomes visible, and `false` if the modal is closed. #### Defined in -[projects/stream-chat-angular/src/lib/modal/modal.component.ts:33](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/modal/modal.component.ts#L33) +[projects/stream-chat-angular/src/lib/modal/modal.component.ts:33](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/modal/modal.component.ts#L33) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/NotificationComponent.mdx b/docusaurus/docs/Angular/components/NotificationComponent.mdx index a61fae78..1e760ad4 100644 --- a/docusaurus/docs/Angular/components/NotificationComponent.mdx +++ b/docusaurus/docs/Angular/components/NotificationComponent.mdx @@ -24,7 +24,7 @@ The type of the notification #### Defined in -[projects/stream-chat-angular/src/lib/notification/notification.component.ts:16](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/notification/notification.component.ts#L16) +[projects/stream-chat-angular/src/lib/notification/notification.component.ts:16](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/notification/notification.component.ts#L16) --- @@ -36,6 +36,6 @@ The content of the notification (can also be provided using `ng-content`) #### Defined in -[projects/stream-chat-angular/src/lib/notification/notification.component.ts:20](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/notification/notification.component.ts#L20) +[projects/stream-chat-angular/src/lib/notification/notification.component.ts:20](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/notification/notification.component.ts#L20) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/PaginatedListComponent.mdx b/docusaurus/docs/Angular/components/PaginatedListComponent.mdx index 6fb1ad44..accfa433 100644 --- a/docusaurus/docs/Angular/components/PaginatedListComponent.mdx +++ b/docusaurus/docs/Angular/components/PaginatedListComponent.mdx @@ -24,4 +24,69 @@ The paginated list component relies on data provided by the parent component. Yo You can provide the HTML template for the list items, see above example. [//]: # "Start of generated content" + +## Inputs and outputs + +### items + +• **items**: `T`[] = `[]` + +The items to display + +#### Defined in + +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:28](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L28) + +--- + +### isLoading + +• **isLoading**: `boolean` = `false` + +If `true`, the loading indicator will be displayed + +#### Defined in + +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:32](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L32) + +--- + +### hasMore + +• **hasMore**: `boolean` = `false` + +If `false` the component won't ask for more data vua the `loadMore` output + +#### Defined in + +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:36](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L36) + +--- + +### trackBy + +• **trackBy**: `TrackByFunction`\<`T`\> + +The `trackBy` to use with the `NgFor` directive + +**`Param`** + +#### Defined in + +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:42](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L42) + +--- + +### loadMore + +• `Readonly` **loadMore**: `EventEmitter`\<`void`\> + +The component will signal via this output when more items should be fetched + +The new items should be appended to the `items` array + +#### Defined in + +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:49](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L49) + [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/TextareaComponent.mdx b/docusaurus/docs/Angular/components/TextareaComponent.mdx index 7f8cb803..c82cdb17 100644 --- a/docusaurus/docs/Angular/components/TextareaComponent.mdx +++ b/docusaurus/docs/Angular/components/TextareaComponent.mdx @@ -48,7 +48,7 @@ TextareaInterface.value #### Defined in -[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:35](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L35) +[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:35](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L35) --- @@ -64,7 +64,7 @@ TextareaInterface.placeholder #### Defined in -[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:39](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L39) +[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:39](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L39) --- @@ -80,7 +80,7 @@ TextareaInterface.inputMode #### Defined in -[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:43](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L43) +[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:43](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L43) --- @@ -96,7 +96,7 @@ TextareaInterface.autoFocus #### Defined in -[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:47](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L47) +[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:47](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L47) --- @@ -112,7 +112,7 @@ TextareaInterface.valueChange #### Defined in -[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:51](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L51) +[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:51](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L51) --- @@ -128,6 +128,6 @@ TextareaInterface.send #### Defined in -[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:55](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L55) +[projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts:55](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/textarea/textarea.component.ts#L55) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/UserListComponent.mdx b/docusaurus/docs/Angular/components/UserListComponent.mdx index 011d55de..385e2b65 100644 --- a/docusaurus/docs/Angular/components/UserListComponent.mdx +++ b/docusaurus/docs/Angular/components/UserListComponent.mdx @@ -18,4 +18,55 @@ The user list component relies on data provided by the parent component: The component is built on top of the [`PaginatedListComponent`](../../components/PaginatedListComponent.mdx), you can use that component to build your own user list component. [//]: # "Start of generated content" + +## Inputs and outputs + +### users + +• **users**: `UserResponse`\<`DefaultStreamChatGenerics`\>[] = `[]` + +The users to display + +#### Defined in + +[projects/stream-chat-angular/src/lib/user-list/user-list.component.ts:17](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/user-list/user-list.component.ts#L17) + +--- + +### isLoading + +• **isLoading**: `boolean` = `false` + +If `true`, the loading indicator will be displayed + +#### Defined in + +[projects/stream-chat-angular/src/lib/user-list/user-list.component.ts:21](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/user-list/user-list.component.ts#L21) + +--- + +### hasMore + +• **hasMore**: `boolean` = `false` + +If `false` the component won't ask for more data vua the `loadMore` output + +#### Defined in + +[projects/stream-chat-angular/src/lib/user-list/user-list.component.ts:25](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/user-list/user-list.component.ts#L25) + +--- + +### loadMore + +• `Readonly` **loadMore**: `EventEmitter`\<`void`\> + +The component will signal via this output when more items should be fetched + +The new items should be appended to the `items` array + +#### Defined in + +[projects/stream-chat-angular/src/lib/user-list/user-list.component.ts:31](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/user-list/user-list.component.ts#L31) + [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/VoiceRecorderComponent.mdx b/docusaurus/docs/Angular/components/VoiceRecorderComponent.mdx new file mode 100644 index 00000000..dbb19b40 --- /dev/null +++ b/docusaurus/docs/Angular/components/VoiceRecorderComponent.mdx @@ -0,0 +1,16 @@ +import VoiceRecorder from "../assets/voice-recorder.png"; + +The `VoiceRecorderComponent` makes it possible to record audio, and then upload it as a voice recording attachment + + + +## Usage + +Please refer to the [voice recordings guide](../../code-examples/voice-recordings) + +## Customization + +Please refer to the [voice recordings guide](../../code-examples/voice-recordings) + +[//]: # "Start of generated content" +[//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/VoiceRecorderWavebarComponent.mdx b/docusaurus/docs/Angular/components/VoiceRecorderWavebarComponent.mdx new file mode 100644 index 00000000..108e08e8 --- /dev/null +++ b/docusaurus/docs/Angular/components/VoiceRecorderWavebarComponent.mdx @@ -0,0 +1,28 @@ +import VoiceRecorderWavebar from "../assets/voice-recorder-wavebar.png"; + +The `VoiceRecorderWavebarComponent` displays the amplitudes of the recording while the recoding is in progress + + + +The component doesn't have any inputs, instead it uses the [`AudioRecorderService`](../../services/AudioRecorderService.mdx) and the [`AmplitudeRecorderService`](../../services/AmplitudeRecorderService.mdx) to gather all necessary data. + +## Usage + +```html + +``` + +```typescript +isRecording$: Observable; + +constructor(public readonly recorder: AudioRecorderService) { + this.isRecording$ = this.recorder.recordingState$.pipe(map(s => s === MediaRecordingState.RECORDING || s === MediaRecordingState.PAUSED)); +} +``` + +## Customization + +[//]: # "Start of generated content" +[//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/VoiceRecordingComponent.mdx b/docusaurus/docs/Angular/components/VoiceRecordingComponent.mdx index 74b1b26f..b1295cae 100644 --- a/docusaurus/docs/Angular/components/VoiceRecordingComponent.mdx +++ b/docusaurus/docs/Angular/components/VoiceRecordingComponent.mdx @@ -82,6 +82,6 @@ The voice recording attachment #### Defined in -[projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts:28](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts#L28) +[projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts:29](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts#L29) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/VoiceRecordingWavebarComponent.mdx b/docusaurus/docs/Angular/components/VoiceRecordingWavebarComponent.mdx index c5b73616..e6f56be5 100644 --- a/docusaurus/docs/Angular/components/VoiceRecordingWavebarComponent.mdx +++ b/docusaurus/docs/Angular/components/VoiceRecordingWavebarComponent.mdx @@ -34,7 +34,7 @@ The audio element that plays the voice recording #### Defined in -[projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts:28](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts#L28) +[projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts:29](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts#L29) --- @@ -46,7 +46,7 @@ The waveform data to visualize #### Defined in -[projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts:32](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts#L32) +[projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts:33](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts#L33) --- @@ -58,6 +58,6 @@ The duration of the voice recording in seconds #### Defined in -[projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts:36](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts#L36) +[projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts:37](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts#L37) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/services/AmplitudeRecorderService.mdx b/docusaurus/docs/Angular/services/AmplitudeRecorderService.mdx new file mode 100644 index 00000000..00dda070 --- /dev/null +++ b/docusaurus/docs/Angular/services/AmplitudeRecorderService.mdx @@ -0,0 +1,89 @@ +# AmplitudeRecorderService + +The `AmplitudeRecorderService` is a utility service used to create amplitude values for voice recordings, making it possible to display a wave bar + +## Accessors + +### amplitudes + +• `get` **amplitudes**(): `number`[] + +The recorded amplitudes + +#### Returns + +`number`[] + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:76](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L76) + +## Methods + +### pause + +▸ **pause**(): `void` + +Temporarily pause amplitude recording, recording can be resumed with `resume` + +#### Returns + +`void` + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:96](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L96) + +--- + +### resume + +▸ **resume**(): `void` + +Resume amplited recording after it was pasued + +#### Returns + +`void` + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:104](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L104) + +--- + +### start + +▸ **start**(`stream`): `void` + +Start amplitude recording for the given media stream + +#### Parameters + +| Name | Type | +| :------- | :------------ | +| `stream` | `MediaStream` | + +#### Returns + +`void` + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:84](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L84) + +--- + +### stop + +▸ **stop**(): `void` + +Stop the amplitude recording and frees up used resources + +#### Returns + +`void` + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:129](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L129) diff --git a/docusaurus/docs/Angular/services/AttachmentConfigurationService.mdx b/docusaurus/docs/Angular/services/AttachmentConfigurationService.mdx index 8f3fca9c..17c34680 100644 --- a/docusaurus/docs/Angular/services/AttachmentConfigurationService.mdx +++ b/docusaurus/docs/Angular/services/AttachmentConfigurationService.mdx @@ -32,7 +32,7 @@ A custom handler can be provided to override the default giphy attachment (GIFs #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:37](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L37) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:37](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L37) --- @@ -60,7 +60,7 @@ A custom handler can be provided to override the default image attachment (image #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:22](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L22) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:22](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L22) --- @@ -86,7 +86,7 @@ A custom handler can be provided to override the default scraped image attachmen #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:43](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L43) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:43](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L43) --- @@ -113,7 +113,7 @@ A custom handler can be provided to override the default video attachment (video #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:30](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L30) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:30](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L30) --- @@ -125,7 +125,7 @@ You can turn on/off thumbnail generation for video attachments #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:49](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L49) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:49](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L49) ## Methods @@ -147,7 +147,7 @@ Handles the configuration for giphy attachments, it's possible to provide your o #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:180](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L180) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:180](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L180) --- @@ -171,7 +171,7 @@ Handles the configuration for image attachments, it's possible to provide your o #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:57](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L57) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:57](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L57) --- @@ -193,7 +193,7 @@ Handles the configuration for scraped image attachments, it's possible to provid #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:200](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L200) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:200](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L200) --- @@ -216,4 +216,4 @@ Handles the configuration for video attachments, it's possible to provide your o #### Defined in -[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:123](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L123) +[projects/stream-chat-angular/src/lib/attachment-configuration.service.ts:123](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment-configuration.service.ts#L123) diff --git a/docusaurus/docs/Angular/services/AttachmentService.mdx b/docusaurus/docs/Angular/services/AttachmentService.mdx index ba0dea51..93981cba 100644 --- a/docusaurus/docs/Angular/services/AttachmentService.mdx +++ b/docusaurus/docs/Angular/services/AttachmentService.mdx @@ -20,7 +20,7 @@ Emits the number of uploads in progress. #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:25](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L25) +[projects/stream-chat-angular/src/lib/attachment.service.ts:29](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L29) --- @@ -32,7 +32,7 @@ Emits the state of the uploads ([`AttachmentUpload[]`](https://github.com/GetStr #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:29](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L29) +[projects/stream-chat-angular/src/lib/attachment.service.ts:33](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L33) ## Methods @@ -56,7 +56,7 @@ Note: If you just want to use your own CDN for file uploads, you don't necessary #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:120](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L120) +[projects/stream-chat-angular/src/lib/attachment.service.ts:157](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L157) --- @@ -78,7 +78,7 @@ Maps attachments received from the Stream API to uploads. This is useful when ed #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:206](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L206) +[projects/stream-chat-angular/src/lib/attachment.service.ts:246](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L246) --- @@ -100,7 +100,7 @@ Deletes an attachment, the attachment can have any state (`error`, `uploading` o #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:145](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L145) +[projects/stream-chat-angular/src/lib/attachment.service.ts:182](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L182) --- @@ -124,7 +124,7 @@ A promise with true or false. If false is returned the upload was canceled becau #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:62](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L62) +[projects/stream-chat-angular/src/lib/attachment.service.ts:99](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L99) --- @@ -142,7 +142,7 @@ the attachments #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:175](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L175) +[projects/stream-chat-angular/src/lib/attachment.service.ts:212](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L212) --- @@ -158,7 +158,7 @@ Resets the attachments uploads (for example after the message with the attachmen #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:53](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L53) +[projects/stream-chat-angular/src/lib/attachment.service.ts:57](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L57) --- @@ -182,4 +182,28 @@ A promise with the result #### Defined in -[projects/stream-chat-angular/src/lib/attachment.service.ts:130](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/attachment.service.ts#L130) +[projects/stream-chat-angular/src/lib/attachment.service.ts:167](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L167) + +--- + +### uploadVoiceRecording + +▸ **uploadVoiceRecording**(`audioRecording`): `Promise`\<`boolean`\> + +Upload a voice recording + +#### Parameters + +| Name | Type | +| :--------------- | :--------------- | +| `audioRecording` | `AudioRecording` | + +#### Returns + +`Promise`\<`boolean`\> + +A promise with true or false. If false is returned the upload was canceled because of a client side error. The error is emitted via the `NotificationService`. + +#### Defined in + +[projects/stream-chat-angular/src/lib/attachment.service.ts:66](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L66) diff --git a/docusaurus/docs/Angular/services/AudioRecorderService.mdx b/docusaurus/docs/Angular/services/AudioRecorderService.mdx new file mode 100644 index 00000000..d1479ed6 --- /dev/null +++ b/docusaurus/docs/Angular/services/AudioRecorderService.mdx @@ -0,0 +1,117 @@ +# AudioRecorderService + +The `AudioRecorderService` can record an audio file, the SDK uses this to record a voice message + +## Hierarchy + +- `MultimediaRecorder`<`Omit`\<`AudioRecording`, keyof `MediaRecording`\>\> + + ↳ **`AudioRecorderService`** + +## Properties + +### config + +• **config**: `MediaRecorderConfig` + +Due to browser restrictions the following config is used: + +- In Safari we record in audio/mp4 +- For all other browsers we use audio/webm (which is then transcoded to wav) + +#### Overrides + +MultimediaRecorder.config + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:24](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L24) + +## Methods + +### pause + +▸ **pause**(): `void` + +Pause audio recording, it can be restarted using `resume` + +#### Returns + +`void` + +#### Overrides + +MultimediaRecorder.pause + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:62](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L62) + +--- + +### resume + +▸ **resume**(): `void` + +Resume a previously paused recording + +#### Returns + +`void` + +#### Overrides + +MultimediaRecorder.resume + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:73](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L73) + +--- + +### start + +▸ **start**(): `Promise`\<`void`\> + +Start audio recording + +#### Returns + +`Promise`\<`void`\> + +#### Overrides + +MultimediaRecorder.start + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:49](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L49) + +--- + +### stop + +▸ **stop**(`options?`): `Promise`\<`MediaRecording` & `Omit`\<`AudioRecording`, keyof `MediaRecording`\>\> + +Stop the recording and free up used resources + +#### Parameters + +| Name | Type | Description | +| :--------------- | :-------- | :-------------------------------------------------------------------------- | +| `options?` | `Object` | | +| `options.cancel` | `boolean` | if this is `true` no recording will be created, but resources will be freed | + +#### Returns + +`Promise`\<`MediaRecording` & `Omit`\<`AudioRecording`, keyof `MediaRecording`\>\> + +the recording + +#### Overrides + +MultimediaRecorder.stop + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:87](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L87) diff --git a/docusaurus/docs/Angular/services/ChannelService.mdx b/docusaurus/docs/Angular/services/ChannelService.mdx index eef7b498..401c59d5 100644 --- a/docusaurus/docs/Angular/services/ChannelService.mdx +++ b/docusaurus/docs/Angular/services/ChannelService.mdx @@ -24,7 +24,7 @@ The active channel will always be marked as read when a new message is received #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:80](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L80) +[projects/stream-chat-angular/src/lib/channel.service.ts:80](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L80) --- @@ -38,7 +38,7 @@ This property isn't always updated, please use `channel.read` to display up-to-d #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:132](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L132) +[projects/stream-chat-angular/src/lib/channel.service.ts:132](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L132) --- @@ -50,7 +50,7 @@ Emits the list of currently loaded messages of the active channel. #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:84](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L84) +[projects/stream-chat-angular/src/lib/channel.service.ts:84](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L84) --- @@ -62,7 +62,7 @@ Emits the list of pinned messages of the active channel. #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:88](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L88) +[projects/stream-chat-angular/src/lib/channel.service.ts:88](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L88) --- @@ -76,7 +76,7 @@ This property isn't always updated, please use `channel.read` to display up-to-d #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:138](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L138) +[projects/stream-chat-angular/src/lib/channel.service.ts:138](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L138) --- @@ -88,7 +88,7 @@ Emits the currently selected parent message. If no message is selected, it emits #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:100](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L100) +[projects/stream-chat-angular/src/lib/channel.service.ts:100](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L100) --- @@ -100,7 +100,7 @@ Emits the id of the currently selected parent message. If no message is selected #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:92](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L92) +[projects/stream-chat-angular/src/lib/channel.service.ts:92](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L92) --- @@ -112,7 +112,7 @@ Emits the list of currently loaded thread replies belonging to the selected pare #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:96](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L96) +[projects/stream-chat-angular/src/lib/channel.service.ts:96](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L96) --- @@ -138,7 +138,7 @@ The provided method will be called before a new message is sent to Stream's API. #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:305](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L305) +[projects/stream-chat-angular/src/lib/channel.service.ts:305](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L305) --- @@ -164,7 +164,7 @@ The provided method will be called before a message is sent to Stream's API for #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:311](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L311) +[projects/stream-chat-angular/src/lib/channel.service.ts:311](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L311) --- @@ -178,7 +178,7 @@ If a message is bounced, it will be emitted via this `Observable`. The built-in #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:126](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L126) +[projects/stream-chat-angular/src/lib/channel.service.ts:126](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L126) --- @@ -190,7 +190,7 @@ The result of the latest channel query request. #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:70](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L70) +[projects/stream-chat-angular/src/lib/channel.service.ts:70](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L70) --- @@ -206,7 +206,7 @@ If you want to subscribe to channel events, you need to manually reenter Angular #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:66](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L66) +[projects/stream-chat-angular/src/lib/channel.service.ts:66](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L66) --- @@ -235,7 +235,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:156](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L156) +[projects/stream-chat-angular/src/lib/channel.service.ts:156](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L156) --- @@ -268,7 +268,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:180](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L180) +[projects/stream-chat-angular/src/lib/channel.service.ts:180](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L180) --- @@ -301,7 +301,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:228](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L228) +[projects/stream-chat-angular/src/lib/channel.service.ts:228](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L228) --- @@ -334,7 +334,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:212](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L212) +[projects/stream-chat-angular/src/lib/channel.service.ts:212](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L212) --- @@ -367,7 +367,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:196](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L196) +[projects/stream-chat-angular/src/lib/channel.service.ts:196](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L196) --- @@ -400,7 +400,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:244](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L244) +[projects/stream-chat-angular/src/lib/channel.service.ts:244](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L244) --- @@ -427,7 +427,7 @@ You can override the default file delete request - override this if you use your #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:288](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L288) +[projects/stream-chat-angular/src/lib/channel.service.ts:288](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L288) --- @@ -454,7 +454,7 @@ You can override the default file upload request - you can use this to upload fi #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:274](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L274) +[projects/stream-chat-angular/src/lib/channel.service.ts:274](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L274) --- @@ -481,7 +481,7 @@ You can override the default image delete request - override this if you use you #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:292](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L292) +[projects/stream-chat-angular/src/lib/channel.service.ts:292](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L292) --- @@ -508,7 +508,7 @@ You can override the default image upload request - you can use this to upload i #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:281](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L281) +[projects/stream-chat-angular/src/lib/channel.service.ts:281](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L281) --- @@ -541,7 +541,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:260](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L260) +[projects/stream-chat-angular/src/lib/channel.service.ts:260](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L260) --- @@ -570,7 +570,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:144](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L144) +[projects/stream-chat-angular/src/lib/channel.service.ts:144](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L144) --- @@ -599,7 +599,7 @@ If you're adding a new channel, make sure that it's a [watched](https://getstrea #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:168](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L168) +[projects/stream-chat-angular/src/lib/channel.service.ts:168](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L168) --- @@ -611,7 +611,7 @@ Emits `false` if there are no more pages of channels that can be loaded. #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:58](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L58) +[projects/stream-chat-angular/src/lib/channel.service.ts:58](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L58) --- @@ -623,7 +623,7 @@ Emits the ID of the message the message list should jump to (can be a channel me #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:108](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L108) +[projects/stream-chat-angular/src/lib/channel.service.ts:108](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L108) --- @@ -635,7 +635,7 @@ Emits a map that contains the date of the latest message sent by the current use #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:120](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L120) +[projects/stream-chat-angular/src/lib/channel.service.ts:120](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L120) --- @@ -661,7 +661,7 @@ The provided method will be called before deleting a message. If the returned Pr #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:299](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L299) +[projects/stream-chat-angular/src/lib/channel.service.ts:299](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L299) --- @@ -673,7 +673,7 @@ Emits the currently selected message to quote #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:104](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L104) +[projects/stream-chat-angular/src/lib/channel.service.ts:104](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L104) --- @@ -685,7 +685,7 @@ Emits the list of users that are currently typing in the channel (current user i #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:112](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L112) +[projects/stream-chat-angular/src/lib/channel.service.ts:112](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L112) --- @@ -697,7 +697,7 @@ Emits the list of users that are currently typing in the active thread (current #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:116](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L116) +[projects/stream-chat-angular/src/lib/channel.service.ts:116](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L116) --- @@ -707,7 +707,7 @@ Emits the list of users that are currently typing in the active thread (current #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:317](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L317) +[projects/stream-chat-angular/src/lib/channel.service.ts:317](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L317) ## Accessors @@ -723,7 +723,7 @@ The current active channel #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1619](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1619) +[projects/stream-chat-angular/src/lib/channel.service.ts:1619](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1619) --- @@ -739,7 +739,7 @@ The current active channel messages #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1626](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1626) +[projects/stream-chat-angular/src/lib/channel.service.ts:1626](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1626) --- @@ -755,7 +755,7 @@ The current thread replies #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1633](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1633) +[projects/stream-chat-angular/src/lib/channel.service.ts:1633](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1633) --- @@ -771,7 +771,7 @@ The current list of channels #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1612](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1612) +[projects/stream-chat-angular/src/lib/channel.service.ts:1612](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1612) --- @@ -797,7 +797,7 @@ You can return either an offset, or a filter using the [`$lte`/`$gte` operator]( #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:547](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L547) +[projects/stream-chat-angular/src/lib/channel.service.ts:547](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L547) --- @@ -813,7 +813,7 @@ If set to false, read events won't be sent as new messages are received. If set #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:523](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L523) +[projects/stream-chat-angular/src/lib/channel.service.ts:523](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L523) • `set` **shouldMarkActiveChannelAsRead**(`shouldMarkActiveChannelAsRead`): `void` @@ -831,7 +831,7 @@ If set to false, read events won't be sent as new messages are received. If set #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:530](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L530) +[projects/stream-chat-angular/src/lib/channel.service.ts:530](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L530) ## Methods @@ -854,7 +854,7 @@ The channel will be added to the beginning of the channel list #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1131](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1131) +[projects/stream-chat-angular/src/lib/channel.service.ts:1131](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1131) --- @@ -878,7 +878,7 @@ Adds a reaction to a message. #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:806](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L806) +[projects/stream-chat-angular/src/lib/channel.service.ts:806](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L806) --- @@ -902,7 +902,7 @@ The list of members matching the search filter #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1056](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1056) +[projects/stream-chat-angular/src/lib/channel.service.ts:1056](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1056) --- @@ -918,7 +918,7 @@ Clears the currently selected message to jump #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1291](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1291) +[projects/stream-chat-angular/src/lib/channel.service.ts:1291](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1291) --- @@ -940,7 +940,7 @@ Deletes an uploaded file by URL. If you want to know more about [file uploads](h #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1040](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1040) +[projects/stream-chat-angular/src/lib/channel.service.ts:1040](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1040) --- @@ -963,7 +963,7 @@ Deletes the message from the active channel #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:928](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L928) +[projects/stream-chat-angular/src/lib/channel.service.ts:928](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L928) --- @@ -979,7 +979,7 @@ Deselects the currently active (if any) channel #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:596](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L596) +[projects/stream-chat-angular/src/lib/channel.service.ts:596](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L596) --- @@ -1001,9 +1001,13 @@ Get the last 1200 reactions of a message in the current active channel. If you n all reactions of a message +**`Deprecated`** + +use [`messageReactionsService.queryReactions()`](https://getstream.io/chat/docs/sdk/angular/services/MessageReactionsService/#queryreactions) instead + #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1642](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1642) +[projects/stream-chat-angular/src/lib/channel.service.ts:1643](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1643) --- @@ -1030,7 +1034,7 @@ the list of channels found by the query #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:730](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L730) +[projects/stream-chat-angular/src/lib/channel.service.ts:730](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L730) --- @@ -1057,7 +1061,7 @@ the channels that were loaded #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:766](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L766) +[projects/stream-chat-angular/src/lib/channel.service.ts:766](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L766) --- @@ -1080,7 +1084,7 @@ Jumps to the selected message inside the message list, if the message is not yet #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1263](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1263) +[projects/stream-chat-angular/src/lib/channel.service.ts:1263](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1263) --- @@ -1096,7 +1100,7 @@ Loads the next page of channels. The page size can be set in the [query option]( #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:796](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L796) +[projects/stream-chat-angular/src/lib/channel.service.ts:796](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L796) --- @@ -1118,7 +1122,7 @@ Loads the next page of messages of the active channel. The page size can be set #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:658](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L658) +[projects/stream-chat-angular/src/lib/channel.service.ts:658](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L658) --- @@ -1140,7 +1144,7 @@ Loads the next page of messages of the active thread. The page size can be set i #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:697](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L697) +[projects/stream-chat-angular/src/lib/channel.service.ts:697](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L697) --- @@ -1164,7 +1168,7 @@ the result of the request #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1675](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1675) +[projects/stream-chat-angular/src/lib/channel.service.ts:1676](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1676) --- @@ -1186,7 +1190,7 @@ Pins the given message in the channel #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1299](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1299) +[projects/stream-chat-angular/src/lib/channel.service.ts:1299](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1299) --- @@ -1207,7 +1211,7 @@ Pins the given message in the channel #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1143](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1143) +[projects/stream-chat-angular/src/lib/channel.service.ts:1143](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1143) --- @@ -1230,7 +1234,7 @@ Removes a reaction from a message. #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:822](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L822) +[projects/stream-chat-angular/src/lib/channel.service.ts:822](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L822) --- @@ -1252,7 +1256,7 @@ Resends the given message to the active channel #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:876](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L876) +[projects/stream-chat-angular/src/lib/channel.service.ts:876](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L876) --- @@ -1268,7 +1272,7 @@ Resets the `activeChannel$`, `channels$` and `activeChannelMessages$` Observable #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:780](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L780) +[projects/stream-chat-angular/src/lib/channel.service.ts:780](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L780) --- @@ -1290,7 +1294,7 @@ Selects or deselects the current message to quote reply to #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1122](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1122) +[projects/stream-chat-angular/src/lib/channel.service.ts:1122](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1122) --- @@ -1314,7 +1318,7 @@ Selects or deselects the current message to quote reply to #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1085](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1085) +[projects/stream-chat-angular/src/lib/channel.service.ts:1085](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1085) --- @@ -1341,7 +1345,7 @@ Sends a message to the active channel. The message is immediately added to the m #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:837](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L837) +[projects/stream-chat-angular/src/lib/channel.service.ts:837](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L837) --- @@ -1364,7 +1368,7 @@ If the channel wasn't previously part of the channel, it will be added to the be #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:563](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L563) +[projects/stream-chat-angular/src/lib/channel.service.ts:563](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L563) --- @@ -1387,7 +1391,7 @@ Sets the given `message` as an active parent message. If `undefined` is provided #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:623](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L623) +[projects/stream-chat-angular/src/lib/channel.service.ts:623](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L623) --- @@ -1409,7 +1413,7 @@ Call this method if user started typing in the active channel #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1595](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1595) +[projects/stream-chat-angular/src/lib/channel.service.ts:1595](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1595) --- @@ -1431,7 +1435,7 @@ Call this method if user stopped typing in the active channel #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1604](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1604) +[projects/stream-chat-angular/src/lib/channel.service.ts:1604](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1604) --- @@ -1453,13 +1457,13 @@ Removes the given message from pinned messages #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:1318](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L1318) +[projects/stream-chat-angular/src/lib/channel.service.ts:1318](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L1318) --- ### updateMessage -▸ **updateMessage**(`message`): `Promise`\<`StreamMessage`\<`T`\> \| `T`[``"messageType"``] & {} & {} & {} & `Omit`\<`MessageResponse`\<{}\>, `"status"` \| `"created_at"` \| `"pinned_at"` \| `"updated_at"`\> & `UR` & {}\> +▸ **updateMessage**(`message`): `Promise`\<`StreamMessage`\<`T`\> \| `T`[``"messageType"``] & {} & {} & {} & `Omit`\<`MessageResponse`\<{}\>, `"status"` \| `"created_at"` \| `"pinned_at"` \| `"updated_at"` \| `"deleted_at"`\> & `UR` & {}\> Updates the message in the active channel @@ -1471,11 +1475,11 @@ Updates the message in the active channel #### Returns -`Promise`\<`StreamMessage`\<`T`\> \| `T`[``"messageType"``] & {} & {} & {} & `Omit`\<`MessageResponse`\<{}\>, `"status"` \| `"created_at"` \| `"pinned_at"` \| `"updated_at"`\> & `UR` & {}\> +`Promise`\<`StreamMessage`\<`T`\> \| `T`[``"messageType"``] & {} & {} & {} & `Omit`\<`MessageResponse`\<{}\>, `"status"` \| `"created_at"` \| `"pinned_at"` \| `"updated_at"` \| `"deleted_at"`\> & `UR` & {}\> #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:893](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L893) +[projects/stream-chat-angular/src/lib/channel.service.ts:893](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L893) --- @@ -1499,4 +1503,4 @@ the result of file upload requests #### Defined in -[projects/stream-chat-angular/src/lib/channel.service.ts:960](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/channel.service.ts#L960) +[projects/stream-chat-angular/src/lib/channel.service.ts:960](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/channel.service.ts#L960) diff --git a/docusaurus/docs/Angular/services/ChatClientService.mdx b/docusaurus/docs/Angular/services/ChatClientService.mdx index fb415885..7a610f46 100644 --- a/docusaurus/docs/Angular/services/ChatClientService.mdx +++ b/docusaurus/docs/Angular/services/ChatClientService.mdx @@ -18,7 +18,7 @@ Emits the current [application settings](https://getstream.io/chat/docs/javascri #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:49](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L49) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:49](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L49) --- @@ -30,7 +30,7 @@ The [StreamChat client](https://github.com/GetStream/stream-chat-js/blob/master/ #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:38](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L38) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:38](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L38) --- @@ -42,7 +42,7 @@ Emits the current connection state of the user (`online` or `offline`) #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:53](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L53) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:53](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L53) --- @@ -57,7 +57,7 @@ For performance reasons this Observable operates outside of the Angular change d #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:45](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L45) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:45](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L45) --- @@ -69,7 +69,7 @@ Emits the list of pending invites of the user. It emits every pending invitation #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:57](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L57) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:57](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L57) --- @@ -81,7 +81,7 @@ Emits the current chat user #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:61](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L61) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:61](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L61) ## Methods @@ -105,7 +105,7 @@ The users matching the search #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:224](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L224) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:226](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L226) --- @@ -121,7 +121,7 @@ Disconnects the current user, and closes the WebSocket connection. Useful when d #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:186](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L186) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:188](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L188) --- @@ -143,7 +143,7 @@ Flag the message with the given ID. If you want to know [more about flags](https #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:215](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L215) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:217](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L217) --- @@ -159,7 +159,7 @@ Loads the current [application settings](https://getstream.io/chat/docs/javascri #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:196](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L196) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:198](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L198) --- @@ -184,4 +184,4 @@ Creates a [`StreamChat`](https://github.com/GetStream/stream-chat-js/blob/668b3e #### Defined in -[projects/stream-chat-angular/src/lib/chat-client.service.ts:98](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/chat-client.service.ts#L98) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:98](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L98) diff --git a/docusaurus/docs/Angular/services/CustomTemplatesService.mdx b/docusaurus/docs/Angular/services/CustomTemplatesService.mdx index f03df5a6..3886bd43 100644 --- a/docusaurus/docs/Angular/services/CustomTemplatesService.mdx +++ b/docusaurus/docs/Angular/services/CustomTemplatesService.mdx @@ -22,7 +22,7 @@ The template that can be used to override how attachment actions are displayed i #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:276](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L276) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:276](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L276) --- @@ -34,7 +34,7 @@ The template used to display attachments of a [message](../components/MessageCom #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:109](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L109) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:109](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L109) --- @@ -46,7 +46,7 @@ The template used to display attachments in the [message input](../components/Me #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:116](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L116) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:116](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L116) --- @@ -58,7 +58,7 @@ The template used to display avatars for channels and users (instead of the [def #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:123](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L123) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:123](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L123) --- @@ -70,7 +70,7 @@ The template that can be used to override how a card attachment is displayed ins #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:270](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L270) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:270](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L270) --- @@ -82,7 +82,7 @@ The template for channel actions displayed in the [channel header](../components #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:102](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L102) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:102](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L102) --- @@ -94,7 +94,7 @@ The template used to display additional information about a channel under the ch #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:227](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L227) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:227](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L227) --- @@ -106,7 +106,7 @@ Template used to display the channel information inside the [channel list item]( #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:329](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L329) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:329](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L329) --- @@ -118,7 +118,7 @@ Template used to display an item in the [channel list](../components/ChannelList #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:67](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L67) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:67](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L67) --- @@ -130,7 +130,7 @@ The autocomplete list item template for commands (used in the [`AutocompleteText #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:60](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L60) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:60](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L60) --- @@ -142,7 +142,7 @@ The template used for displaying file upload/attachment selector inside the [mes #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:234](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L234) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:234](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L234) --- @@ -154,7 +154,7 @@ Template to display custom metadata inside [message component](../components/Mes #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:220](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L220) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:220](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L220) --- @@ -166,7 +166,7 @@ The template used to display the date separator inside the [message list](../com #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:288](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L288) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:288](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L288) --- @@ -180,7 +180,7 @@ Displayed for the last message sent by the current user, if the message isn't ye #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:195](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L195) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:195](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L195) --- @@ -192,7 +192,7 @@ The template for [emoji picker](../code-examples/emoji-picker.mdx) #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:81](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L81) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:81](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L81) --- @@ -204,7 +204,7 @@ The template to show if the main message list is empty #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:310](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L310) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:310](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L310) --- @@ -216,7 +216,7 @@ The template to show if the thread message list is empty #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:316](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L316) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:316](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L316) --- @@ -228,7 +228,7 @@ The template that can be used to override how a file attachment is displayed ins #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:264](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L264) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:264](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L264) --- @@ -240,7 +240,7 @@ The template that can be used to override how image gallery is displayed inside #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:258](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L258) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:258](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L258) --- @@ -252,7 +252,7 @@ Template for displaying icons (instead of the [default icon component](../compon #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:130](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L130) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:130](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L130) --- @@ -264,7 +264,7 @@ The template that can be used to override how a single image attachment is displ #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:240](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L240) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:240](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L240) --- @@ -276,7 +276,7 @@ Template for displaying the loading indicator (instead of the [default loading i #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:137](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L137) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:137](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L137) --- @@ -288,7 +288,7 @@ The autocomplete list item template for mentioning users (used in the [`Autocomp #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:54](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L54) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:54](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L54) --- @@ -300,7 +300,7 @@ The template used for displaying a [mention inside a message](../code-examples/m #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:74](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L74) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:74](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L74) --- @@ -312,7 +312,7 @@ The template used for displaying an item in the [message actions box](../compone #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:151](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L151) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:151](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L151) --- @@ -324,7 +324,7 @@ Template for displaying the message actions box (instead of the [default message #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:144](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L144) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:144](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L144) --- @@ -336,7 +336,7 @@ The template used to display the [message bounce prompt](../components/MessageBo #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:322](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L322) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:322](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L322) --- @@ -348,7 +348,7 @@ The template used to display the reactions of a [message](../components/MessageC #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:165](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L165) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:165](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L165) --- @@ -360,7 +360,7 @@ The template used to display the reactions of a [message](../components/MessageC #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:158](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L158) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:158](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L158) --- @@ -372,7 +372,7 @@ The template used to display a message in the [message list](../components/Messa #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:95](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L95) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:95](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L95) --- @@ -384,7 +384,7 @@ The template used to display a modal window (instead of the [default modal](../c #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:172](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L172) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:172](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L172) --- @@ -398,7 +398,7 @@ This UI element is used to separate unread messages from read messages #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:296](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L296) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:296](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L296) --- @@ -412,7 +412,7 @@ Users can use this notification to jump to the first unread message when it's cl #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:304](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L304) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:304](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L304) --- @@ -424,7 +424,7 @@ The template used to override the [default notification component](../components #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:179](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L179) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:179](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L179) --- @@ -438,7 +438,7 @@ Displayed for the last message sent by the current user, if the message is read #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:213](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L213) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:213](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L213) --- @@ -452,7 +452,7 @@ Displayed for the last message sent by the current user, if the message is curre #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:204](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L204) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:204](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L204) --- @@ -464,7 +464,7 @@ The template used to display [system messages](https://getstream.io/chat/docs/ja #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:282](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L282) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:282](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L282) --- @@ -476,7 +476,7 @@ The template used for header of a [thread](../components/ThreadComponent.mdx) #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:186](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L186) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:186](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L186) --- @@ -488,7 +488,7 @@ The typing indicator template used in the [message list](../components/MessageLi #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:88](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L88) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:88](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L88) --- @@ -500,7 +500,7 @@ The template that can be used to override how a video attachment is displayed in #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:252](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L252) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:252](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L252) --- @@ -512,4 +512,4 @@ The template that can be used to override how a voice recording attachment is di #### Defined in -[projects/stream-chat-angular/src/lib/custom-templates.service.ts:246](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L246) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:246](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L246) diff --git a/docusaurus/docs/Angular/services/DateParserService.mdx b/docusaurus/docs/Angular/services/DateParserService.mdx index e63795b6..ebcd547f 100644 --- a/docusaurus/docs/Angular/services/DateParserService.mdx +++ b/docusaurus/docs/Angular/services/DateParserService.mdx @@ -26,7 +26,7 @@ Custom parser to override `parseDate` #### Defined in -[projects/stream-chat-angular/src/lib/date-parser.service.ts:18](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/date-parser.service.ts#L18) +[projects/stream-chat-angular/src/lib/date-parser.service.ts:18](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/date-parser.service.ts#L18) --- @@ -52,7 +52,7 @@ Custom parser to override `parseDateTime` #### Defined in -[projects/stream-chat-angular/src/lib/date-parser.service.ts:22](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/date-parser.service.ts#L22) +[projects/stream-chat-angular/src/lib/date-parser.service.ts:22](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/date-parser.service.ts#L22) --- @@ -78,7 +78,7 @@ Custom parser to override `parseTime` #### Defined in -[projects/stream-chat-angular/src/lib/date-parser.service.ts:14](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/date-parser.service.ts#L14) +[projects/stream-chat-angular/src/lib/date-parser.service.ts:14](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/date-parser.service.ts#L14) ## Methods @@ -102,7 +102,7 @@ The parsed date #### Defined in -[projects/stream-chat-angular/src/lib/date-parser.service.ts:43](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/date-parser.service.ts#L43) +[projects/stream-chat-angular/src/lib/date-parser.service.ts:43](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/date-parser.service.ts#L43) --- @@ -126,7 +126,7 @@ The parsed date #### Defined in -[projects/stream-chat-angular/src/lib/date-parser.service.ts:55](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/date-parser.service.ts#L55) +[projects/stream-chat-angular/src/lib/date-parser.service.ts:55](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/date-parser.service.ts#L55) --- @@ -150,4 +150,4 @@ The parsed time #### Defined in -[projects/stream-chat-angular/src/lib/date-parser.service.ts:31](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/date-parser.service.ts#L31) +[projects/stream-chat-angular/src/lib/date-parser.service.ts:31](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/date-parser.service.ts#L31) diff --git a/docusaurus/docs/Angular/services/EmojiInputService.mdx b/docusaurus/docs/Angular/services/EmojiInputService.mdx index 99a47a88..8623f9c7 100644 --- a/docusaurus/docs/Angular/services/EmojiInputService.mdx +++ b/docusaurus/docs/Angular/services/EmojiInputService.mdx @@ -12,4 +12,4 @@ If you have an emoji picker in your application, you can propagate the selected #### Defined in -[projects/stream-chat-angular/src/lib/message-input/emoji-input.service.ts:14](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/emoji-input.service.ts#L14) +[projects/stream-chat-angular/src/lib/message-input/emoji-input.service.ts:14](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/emoji-input.service.ts#L14) diff --git a/docusaurus/docs/Angular/services/MessageActionsService.mdx b/docusaurus/docs/Angular/services/MessageActionsService.mdx index cf03d6be..73182f55 100644 --- a/docusaurus/docs/Angular/services/MessageActionsService.mdx +++ b/docusaurus/docs/Angular/services/MessageActionsService.mdx @@ -32,7 +32,7 @@ By default the [`MessageComponent`](../../components/MessageComponent) will disp #### Defined in -[projects/stream-chat-angular/src/lib/message-actions.service.ts:188](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions.service.ts#L188) +[projects/stream-chat-angular/src/lib/message-actions.service.ts:188](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions.service.ts#L188) --- @@ -44,7 +44,7 @@ You can pass your own custom actions that will be displayed inside the built-in #### Defined in -[projects/stream-chat-angular/src/lib/message-actions.service.ts:184](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions.service.ts#L184) +[projects/stream-chat-angular/src/lib/message-actions.service.ts:184](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions.service.ts#L184) --- @@ -56,7 +56,7 @@ Default actions - these are the actions that are handled by the built-in compone #### Defined in -[projects/stream-chat-angular/src/lib/message-actions.service.ts:28](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions.service.ts#L28) +[projects/stream-chat-angular/src/lib/message-actions.service.ts:28](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions.service.ts#L28) --- @@ -68,7 +68,7 @@ The built-in components will handle changes to this observable. #### Defined in -[projects/stream-chat-angular/src/lib/message-actions.service.ts:180](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions.service.ts#L180) +[projects/stream-chat-angular/src/lib/message-actions.service.ts:180](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions.service.ts#L180) ## Methods @@ -93,4 +93,4 @@ the count #### Defined in -[projects/stream-chat-angular/src/lib/message-actions.service.ts:227](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-actions.service.ts#L227) +[projects/stream-chat-angular/src/lib/message-actions.service.ts:227](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-actions.service.ts#L227) diff --git a/docusaurus/docs/Angular/services/MessageInputConfigService.mdx b/docusaurus/docs/Angular/services/MessageInputConfigService.mdx index 0bb18963..a991c948 100644 --- a/docusaurus/docs/Angular/services/MessageInputConfigService.mdx +++ b/docusaurus/docs/Angular/services/MessageInputConfigService.mdx @@ -12,7 +12,7 @@ If true, users can mention other users in messages. You also [need to use the `A #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:17](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L17) +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:17](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L17) --- @@ -24,7 +24,7 @@ In `desktop` mode the `Enter` key will trigger message sending, in `mobile` mode #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:30](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L30) +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:29](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L29) --- @@ -36,7 +36,7 @@ If file upload is enabled, the user can open a file selector from the input. Ple #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:13](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L13) +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:13](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L13) --- @@ -48,7 +48,7 @@ If `false`, users can only upload one attachment per message #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:21](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L21) +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:21](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L21) --- @@ -60,4 +60,17 @@ The scope for user mentions, either members of the current channel of members of #### Defined in -[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:25](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L25) +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:25](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L25) + +--- + +### sendVoiceRecordingImmediately + +• **sendVoiceRecordingImmediately**: `boolean` = `true` + +If `true` the recording will be sent as a message immediately after the recording is completed. +If `false`, the recording will added to the attachment preview, and users can continue composing the message. + +#### Defined in + +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:34](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L34) diff --git a/docusaurus/docs/Angular/services/MessageReactionsService.mdx b/docusaurus/docs/Angular/services/MessageReactionsService.mdx index 4c021648..14cfa6e7 100644 --- a/docusaurus/docs/Angular/services/MessageReactionsService.mdx +++ b/docusaurus/docs/Angular/services/MessageReactionsService.mdx @@ -10,7 +10,7 @@ The `MessageReactionsService` provides customization options to message [reactio By default the [`MessageReactionsComponent`](../../components/MessageReactionsComponent) will display the reacting users when a reaction is clicked. You can override this with your own UI by providing a custom event handler. -The event handler can retrieve all reactions of a message inside the active channel using the [`channelService.getMessageReactions` method](../../services/ChannelService/#getmessagereactions) +The event handler can retrieve all reactions of a message using the [`messageReactionsService.queryReactions()`](https://getstream.io/chat/docs/sdk/angular/services/MessageReactionsService/#queryreactions) #### Type declaration @@ -28,7 +28,7 @@ The event handler can retrieve all reactions of a message inside the active chan #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions.service.ts:30](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L30) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:32](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L32) --- @@ -42,7 +42,7 @@ You can provide any string as a reaction. The emoji can be provided as a string, #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions.service.ts:18](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L18) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:20](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L20) ## Accessors @@ -58,7 +58,7 @@ Get the currently enabled reactions #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions.service.ts:44](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L44) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:49](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L49) • `set` **reactions**(`reactions`): `void` @@ -76,4 +76,30 @@ Sets the enabled reactions #### Defined in -[projects/stream-chat-angular/src/lib/message-reactions.service.ts:37](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L37) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:42](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L42) + +## Methods + +### queryReactions + +▸ **queryReactions**(`messageId`, `type`, `next?`): `Promise`\<`QueryReactionsAPIResponse`\<`DefaultStreamChatGenerics`\>\> + +Query reactions of a specific message, more info in the [API documentation](https://getstream.io/chat/docs/javascript/send_reaction/?language=javascript#query-reactions) + +#### Parameters + +| Name | Type | +| :---------- | :------- | +| `messageId` | `string` | +| `type` | `string` | +| `next?` | `string` | + +#### Returns + +`Promise`\<`QueryReactionsAPIResponse`\<`DefaultStreamChatGenerics`\>\> + +the reactions and the cursor for the next/prev pages + +#### Defined in + +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:60](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L60) diff --git a/docusaurus/docs/Angular/services/MessageService.mdx b/docusaurus/docs/Angular/services/MessageService.mdx index c14f42ad..005455dc 100644 --- a/docusaurus/docs/Angular/services/MessageService.mdx +++ b/docusaurus/docs/Angular/services/MessageService.mdx @@ -26,7 +26,7 @@ You can provide a custom method to display links #### Defined in -[projects/stream-chat-angular/src/lib/message.service.ts:24](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message.service.ts#L24) +[projects/stream-chat-angular/src/lib/message.service.ts:24](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message.service.ts#L24) --- @@ -43,4 +43,4 @@ If you display messages as text the following parts are still be displayed as HT #### Defined in -[projects/stream-chat-angular/src/lib/message.service.ts:17](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/message.service.ts#L17) +[projects/stream-chat-angular/src/lib/message.service.ts:17](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message.service.ts#L17) diff --git a/docusaurus/docs/Angular/services/NotificationService.mdx b/docusaurus/docs/Angular/services/NotificationService.mdx index a3394b80..e15c38dd 100644 --- a/docusaurus/docs/Angular/services/NotificationService.mdx +++ b/docusaurus/docs/Angular/services/NotificationService.mdx @@ -12,7 +12,7 @@ Emits the currently active [notifications](https://github.com/GetStream/stream-c #### Defined in -[projects/stream-chat-angular/src/lib/notification.service.ts:15](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/notification.service.ts#L15) +[projects/stream-chat-angular/src/lib/notification.service.ts:15](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/notification.service.ts#L15) ## Methods @@ -51,7 +51,7 @@ A method to clear the notification. #### Defined in -[projects/stream-chat-angular/src/lib/notification.service.ts:68](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/notification.service.ts#L68) +[projects/stream-chat-angular/src/lib/notification.service.ts:68](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/notification.service.ts#L68) --- @@ -91,4 +91,4 @@ A method to clear the notification (before the timeout). #### Defined in -[projects/stream-chat-angular/src/lib/notification.service.ts:31](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/notification.service.ts#L31) +[projects/stream-chat-angular/src/lib/notification.service.ts:31](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/notification.service.ts#L31) diff --git a/docusaurus/docs/Angular/services/StreamI18nService.mdx b/docusaurus/docs/Angular/services/StreamI18nService.mdx index a8755031..f7383536 100644 --- a/docusaurus/docs/Angular/services/StreamI18nService.mdx +++ b/docusaurus/docs/Angular/services/StreamI18nService.mdx @@ -23,4 +23,4 @@ Registers the translation to the [ngx-translate](https://github.com/ngx-translat #### Defined in -[projects/stream-chat-angular/src/lib/stream-i18n.service.ts:19](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/stream-i18n.service.ts#L19) +[projects/stream-chat-angular/src/lib/stream-i18n.service.ts:19](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/stream-i18n.service.ts#L19) diff --git a/docusaurus/docs/Angular/services/ThemeService.mdx b/docusaurus/docs/Angular/services/ThemeService.mdx index 4d51ea04..cc567dad 100644 --- a/docusaurus/docs/Angular/services/ThemeService.mdx +++ b/docusaurus/docs/Angular/services/ThemeService.mdx @@ -12,4 +12,4 @@ A Subject that can be used to get or set the currently active theme. By default #### Defined in -[projects/stream-chat-angular/src/lib/theme.service.ts:14](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/theme.service.ts#L14) +[projects/stream-chat-angular/src/lib/theme.service.ts:14](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/theme.service.ts#L14) diff --git a/docusaurus/docs/Angular/services/TranscoderService.mdx b/docusaurus/docs/Angular/services/TranscoderService.mdx new file mode 100644 index 00000000..8e1283ac --- /dev/null +++ b/docusaurus/docs/Angular/services/TranscoderService.mdx @@ -0,0 +1,30 @@ +# TranscoderService + +The `TranscoderService` is used to transcibe audio recording to a format that's supported by all major browsers. The SDK uses this to create voice messages. + +If you want to use your own transcoder you can provide a `customTranscoder`. + +## Methods + +### transcode + +▸ **transcode**(`blob`, `options`): `Promise`<`Blob`\> + +The default transcoder will leave audio/mp4 files as is, and transcode webm files to wav. If you want to customize this, you can provide your own transcoder using the `customTranscoder` field + +#### Parameters + +| Name | Type | +| :-------- | :------------------ | +| `blob` | `Blob` | +| `options` | `TranscoderOptions` | + +#### Returns + +`Promise`\<`Blob`\> + +the transcoded file + +#### Defined in + +[projects/stream-chat-angular/src/lib/voice-recorder/transcoder.service.ts:68](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recorder/transcoder.service.ts#L68) diff --git a/docusaurus/docs/Angular/services/TransliterationService.mdx b/docusaurus/docs/Angular/services/TransliterationService.mdx index 106cc3cd..ec004153 100644 --- a/docusaurus/docs/Angular/services/TransliterationService.mdx +++ b/docusaurus/docs/Angular/services/TransliterationService.mdx @@ -22,4 +22,4 @@ the result of the transliteration #### Defined in -[projects/stream-chat-angular/src/lib/transliteration.service.ts:16](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/transliteration.service.ts#L16) +[projects/stream-chat-angular/src/lib/transliteration.service.ts:16](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/transliteration.service.ts#L16) diff --git a/docusaurus/docs/Angular/services/VirtualizedListService.mdx b/docusaurus/docs/Angular/services/VirtualizedListService.mdx index 8547eb83..b34fba33 100644 --- a/docusaurus/docs/Angular/services/VirtualizedListService.mdx +++ b/docusaurus/docs/Angular/services/VirtualizedListService.mdx @@ -38,7 +38,7 @@ The result of the last query used to load more items #### Defined in -[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:46](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L46) +[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:46](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L46) --- @@ -50,7 +50,7 @@ The items that should be currently displayed, a subset of all items #### Defined in -[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:42](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L42) +[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:42](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L42) ## Accessors @@ -66,7 +66,7 @@ The current value of virtualized items #### Defined in -[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:355](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L355) +[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:355](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L355) ## Methods @@ -82,4 +82,4 @@ Remove all subscriptions, call this once you're done using an instance of this s #### Defined in -[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:362](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L362) +[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:362](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L362) diff --git a/docusaurus/docs/Angular/services/VirtualizedMessageListService.mdx b/docusaurus/docs/Angular/services/VirtualizedMessageListService.mdx index 5f27ba8b..8cc76f6a 100644 --- a/docusaurus/docs/Angular/services/VirtualizedMessageListService.mdx +++ b/docusaurus/docs/Angular/services/VirtualizedMessageListService.mdx @@ -22,7 +22,7 @@ The result of the last query used to load more items #### Defined in -[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:46](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L46) +[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:46](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L46) --- @@ -38,7 +38,7 @@ The items that should be currently displayed, a subset of all items #### Defined in -[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:42](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L42) +[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:42](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L42) ## Accessors @@ -58,7 +58,7 @@ VirtualizedListService.virtualizedItems #### Defined in -[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:355](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L355) +[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:355](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L355) ## Methods @@ -78,4 +78,4 @@ Remove all subscriptions, call this once you're done using an instance of this s #### Defined in -[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:362](https://github.com/GetStream/stream-chat-angular/blob/502385cb9d3f2df94a8714de2a742aeb1edfb77e/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L362) +[projects/stream-chat-angular/src/lib/virtualized-list.service.ts:362](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/virtualized-list.service.ts#L362) diff --git a/docusaurus/docs/Angular/services/VoiceRecorderService.mdx b/docusaurus/docs/Angular/services/VoiceRecorderService.mdx new file mode 100644 index 00000000..c709229e --- /dev/null +++ b/docusaurus/docs/Angular/services/VoiceRecorderService.mdx @@ -0,0 +1,27 @@ +# VoiceRecorderService + +The `VoiceRecorderService` provides a commincation outlet between the message input and voice recorder components. + +## Properties + +### isRecorderVisible$ + +• **isRecorderVisible$**: `BehaviorSubject`<`boolean`\> + +Use this property to get/set if the recording component should be visible + +#### Defined in + +[projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts:15](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts#L15) + +--- + +### recording$ + +• **recording$**: `BehaviorSubject`\<`undefined` \| `AudioRecording`\> + +The audio recording that was created + +#### Defined in + +[projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts:19](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts#L19) diff --git a/docusaurus/docs/Angular/theming/component-variables.mdx b/docusaurus/docs/Angular/theming/component-variables.mdx index 99c1d4a0..e629202b 100644 --- a/docusaurus/docs/Angular/theming/component-variables.mdx +++ b/docusaurus/docs/Angular/theming/component-variables.mdx @@ -34,33 +34,33 @@ You can find the list of components below: | Component name | Variables | | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `AttachmentList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/AttachmentList/AttachmentList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/AttachmentList/AttachmentList-layout.scss) | -| `AttachmentPreviewList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/AttachmentPreviewList/AttachmentPreviewList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/AttachmentPreviewList/AttachmentPreviewList-layout.scss) | -| `Autocomplete` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Autocomplete/Autocomplete-theme.scss) | -| `Avatar` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Avatar/Avatar-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Avatar/Avatar-layout.scss) | -| `Channel` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Channel/Channel-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Channel/Channel-layout.scss) | -| `ChannelHeader` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/ChannelHeader/ChannelHeader-theme.scss) | -| `ChannelList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/ChannelList/ChannelList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/ChannelList/ChannelList-layout.scss) | -| `ChannelPreview` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/ChannelPreview/ChannelPreview-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/ChannelPreview/ChannelPreview-layout.scss) | -| `ChannelSearch` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/ChannelSearch/ChannelSearch-theme.scss) | -| `CircleFAButton` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/CircleFAButton/CircleFAButton-theme.scss) | -| `CTAButton` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/CTAButton/CTAButton-theme.scss) | -| `EditMessageForm` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/EditMessageForm/EditMessageForm-theme.scss) | -| `Icon` (Angular SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Icon/Icon-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Icon/Icon-layout.scss) | -| `ImageCarousel` (Angular SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/ImageCarousel/ImageCarousel-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/ImageCarousel/ImageCarousel-layout.scss) | -| `LoadingIndicator` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/LoadingIndicator/LoadingIndicator-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/LoadingIndicator/LoadingIndicator-layout.scss) | -| `Message` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Message/Message-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Message/Message-layout.scss) | -| `MessageActionsBox` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageActionsBox/MessageActionsBox-theme.scss) | -| `MessageBouncePrompt` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageBouncePrompt/MessageBouncePrompt-theme.scss) | -| `MessageInput` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageInput/MessageInput-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageInput/MessageInput-layout.scss) | -| `MessageList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageList/MessageList-theme.scss) | -| `MessageNotification` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageNotification/MessageNotification-theme.scss) | -| `MessageReactions` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageReactions/MessageReactions-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageReactions/MessageReactions-layout.scss) | -| `MessageReactionsSelector` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/MessageReactionsSelector/MessageReactionsSelector-theme.scss) | -| `Modal` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Modal/Modal-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Modal/Modal-layout.scss) | -| `Notification` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Notification/Notification-theme.scss) | -| `NotificationList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/NotificationList/NotificationList-theme.scss) | -| `Thread` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Thread/Thread-theme.scss) | -| `Tooltip` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/Tooltip/Tooltip-theme.scss) | -| `TypingIndicator` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/TypingIndicator/TypingIndicator-theme.scss) | -| `VirtualizedMessageList` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/VirtualizedMessageList/VirtualizedMessageList-theme.scss) | +| `AttachmentList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/AttachmentList/AttachmentList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/AttachmentList/AttachmentList-layout.scss) | +| `AttachmentPreviewList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/AttachmentPreviewList/AttachmentPreviewList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/AttachmentPreviewList/AttachmentPreviewList-layout.scss) | +| `Autocomplete` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Autocomplete/Autocomplete-theme.scss) | +| `Avatar` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Avatar/Avatar-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Avatar/Avatar-layout.scss) | +| `Channel` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Channel/Channel-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Channel/Channel-layout.scss) | +| `ChannelHeader` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/ChannelHeader/ChannelHeader-theme.scss) | +| `ChannelList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/ChannelList/ChannelList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/ChannelList/ChannelList-layout.scss) | +| `ChannelPreview` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/ChannelPreview/ChannelPreview-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/ChannelPreview/ChannelPreview-layout.scss) | +| `ChannelSearch` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/ChannelSearch/ChannelSearch-theme.scss) | +| `CircleFAButton` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/CircleFAButton/CircleFAButton-theme.scss) | +| `CTAButton` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/CTAButton/CTAButton-theme.scss) | +| `EditMessageForm` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/EditMessageForm/EditMessageForm-theme.scss) | +| `Icon` (Angular SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Icon/Icon-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Icon/Icon-layout.scss) | +| `ImageCarousel` (Angular SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/ImageCarousel/ImageCarousel-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/ImageCarousel/ImageCarousel-layout.scss) | +| `LoadingIndicator` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/LoadingIndicator/LoadingIndicator-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/LoadingIndicator/LoadingIndicator-layout.scss) | +| `Message` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Message/Message-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Message/Message-layout.scss) | +| `MessageActionsBox` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageActionsBox/MessageActionsBox-theme.scss) | +| `MessageBouncePrompt` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageBouncePrompt/MessageBouncePrompt-theme.scss) | +| `MessageInput` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageInput/MessageInput-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageInput/MessageInput-layout.scss) | +| `MessageList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageList/MessageList-theme.scss) | +| `MessageNotification` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageNotification/MessageNotification-theme.scss) | +| `MessageReactions` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageReactions/MessageReactions-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageReactions/MessageReactions-layout.scss) | +| `MessageReactionsSelector` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/MessageReactionsSelector/MessageReactionsSelector-theme.scss) | +| `Modal` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Modal/Modal-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Modal/Modal-layout.scss) | +| `Notification` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Notification/Notification-theme.scss) | +| `NotificationList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/NotificationList/NotificationList-theme.scss) | +| `Thread` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Thread/Thread-theme.scss) | +| `Tooltip` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/Tooltip/Tooltip-theme.scss) | +| `TypingIndicator` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/TypingIndicator/TypingIndicator-theme.scss) | +| `VirtualizedMessageList` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/VirtualizedMessageList/VirtualizedMessageList-theme.scss) | diff --git a/docusaurus/docs/Angular/theming/global-variables.mdx b/docusaurus/docs/Angular/theming/global-variables.mdx index fd9a9633..fd206abd 100644 --- a/docusaurus/docs/Angular/theming/global-variables.mdx +++ b/docusaurus/docs/Angular/theming/global-variables.mdx @@ -27,8 +27,8 @@ Global variables change the layout/look-and-feel of the whole chat UI, meanwhile Global variables can be grouped into the following categories: -- **Theme**: colors, typography and border radiuses ([list of global theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/_global-theme-variables.scss)) +- **Theme**: colors, typography and border radiuses ([list of global theme variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/_global-theme-variables.scss)) -- **Layout**: spacing (padding and margin) and sizing ([list of global layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.18.0/src/v2/styles/_global-layout-variables.scss)) +- **Layout**: spacing (padding and margin) and sizing ([list of global layout variables](https://github.com/GetStream/stream-chat-css/tree/v4.17.5/src/v2/styles/_global-layout-variables.scss)) If you find that these variables are too high-level and you need more granular control, you also have the option to provide [component layer overrides](./component-variables.mdx). diff --git a/docusaurus/docs/Angular/theming/introduction.mdx b/docusaurus/docs/Angular/theming/introduction.mdx index 58fc8906..9f1cd1fa 100644 --- a/docusaurus/docs/Angular/theming/introduction.mdx +++ b/docusaurus/docs/Angular/theming/introduction.mdx @@ -2,7 +2,7 @@ id: themingv2 sidebar_position: 1 title: Introduction -keywords: [v2, theme-v2, theming-v2, theming, introduction] +keywords: [v2, theme-v2, theming-v2, theme, theming, introduction] --- import SDKSpecific from "./SDKSpecific"; @@ -18,25 +18,7 @@ import MessageCustomColor2Screenshot from "../assets/stream-chat-css-message-col import ChatUiSquareThemeScreenshot from "../assets/stream-chat-css-square-theme-screenshot.png"; import ChatUiRtlScreenshot from "../assets/stream-chat-css-rtl-layout-screenshot.png"; - - -The SDK has a new theming and customization system. This page contains information about the new version (refered to as version 2 or v2). The most significant improvements of the new version: - -- Refreshed design -- Better customization through CSS variables -- Support for RTL layout - -The [old theme](../customization/css-and-theming.mdx) (also refered to as version 1 or v1) can still be used with the latest SDK versions, but it's now deprecated, won't be receiving further updates and will be removed in a future major release. - - - - - -New theming system (v2) utilises updated markup and new class names in certain components which are being rendered based on which of the two systems you use. Most of the new components (and/or markup) aren't available in the old version (v1) due to compatibility reasons. - -To use the new theme, please upgrade [`stream-chat-react`](https://www.npmjs.com/package/stream-chat-react) to version `10.0.2` and follow the instructions below. - - +The SDK provides default CSS, which can be overridden by the integrators. ## Importing the stylesheet @@ -215,9 +197,14 @@ To solve this we also have to set the text color for the link attachment compone + ### Custom icons - +#### From CSS + +Starting from stream-chat-angular@5 it's possible to customize icons from CSS. + +Here is an example using the [Google Material Icon library](https://fonts.google.com/icons) to override the send icon: #### From CSS @@ -282,6 +269,15 @@ If the default rules set by the stream-chat-angular stylesheets not enough to se + +### Custom icons + + + +### CSS overrides + +If you'd like to add customizations that are not supported by CSS variables, you can override parts of the default CSS: + TODO diff --git a/docusaurus/docs/Angular/theming/palette-variables.mdx b/docusaurus/docs/Angular/theming/palette-variables.mdx index c80295f7..db1eb577 100644 --- a/docusaurus/docs/Angular/theming/palette-variables.mdx +++ b/docusaurus/docs/Angular/theming/palette-variables.mdx @@ -5,19 +5,6 @@ title: Palette variables keywords: [v2, theme-v2, theming-v2, theming, palette variables] --- -import SDKSpecific from "./SDKSpecific"; -import V2Warning from "./V2Warning"; - - - -:::info - - - -::: - - - A color palette is defined inside the library that used to define default values for the [global theme variables](./global-variables.mdx). If you want to work with the default theme but want to adjust the shades (for example, change `blue500` to a lighter color), you can update the palette variables. However, if you want to change the color scheme of the theme (for example, change the primary color from blue to green), you should take a look at [global theme variables](./global-variables.mdx). You can find the [list of palette variables on GitHub](https://github.com/GetStream/stream-chat-css/blob/main/src-v2/styles/_palette-variables.scss). diff --git a/package-lock.json b/package-lock.json index 7045f57f..90136a69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@angular/platform-browser": "~15.0.0", "@angular/platform-browser-dynamic": "~15.0.0", "@angular/router": "~15.0.0", + "@breezystack/lamejs": "^1.2.7", "@ctrl/ngx-emoji-mart": "^8.2.0", "@floating-ui/dom": "^1.6.3", "@ngx-translate/core": "^14.0.0", @@ -26,6 +27,7 @@ "dayjs": "^1.11.10", "dotenv": "^16.4.5", "emoji-regex": "^10.3.0", + "fix-webm-duration": "^1.0.6", "ngx-float-ui": "^15.0.0", "pretty-bytes": "^6.1.1", "rxjs": "~7.4.0", @@ -3253,6 +3255,11 @@ "node": ">=6.9.0" } }, + "node_modules/@breezystack/lamejs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@breezystack/lamejs/-/lamejs-1.2.7.tgz", + "integrity": "sha512-6wc7ck65ctA75Hq7FYHTtTvGnYs6msgdxiSUICQ+A01nVOWg6rqouZB8IdyteRlfpYYiFovkf67dIeOgWIUzTA==" + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -11237,6 +11244,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fix-webm-duration": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fix-webm-duration/-/fix-webm-duration-1.0.6.tgz", + "integrity": "sha512-zVAqi4gE+8ywxJuAyV/rlJVX6CMtvyapEbQx6jyoeX9TMjdqAlt/FdG5d7rXSSkDVzTvS0H7CtwzHcH/vh4FPA==" + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -25943,6 +25955,11 @@ "to-fast-properties": "^2.0.0" } }, + "@breezystack/lamejs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@breezystack/lamejs/-/lamejs-1.2.7.tgz", + "integrity": "sha512-6wc7ck65ctA75Hq7FYHTtTvGnYs6msgdxiSUICQ+A01nVOWg6rqouZB8IdyteRlfpYYiFovkf67dIeOgWIUzTA==" + }, "@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -31691,6 +31708,11 @@ "semver-regex": "^3.1.2" } }, + "fix-webm-duration": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fix-webm-duration/-/fix-webm-duration-1.0.6.tgz", + "integrity": "sha512-zVAqi4gE+8ywxJuAyV/rlJVX6CMtvyapEbQx6jyoeX9TMjdqAlt/FdG5d7rXSSkDVzTvS0H7CtwzHcH/vh4FPA==" + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", diff --git a/package.json b/package.json index 7710684f..31379158 100644 --- a/package.json +++ b/package.json @@ -110,6 +110,7 @@ "@angular/platform-browser": "~15.0.0", "@angular/platform-browser-dynamic": "~15.0.0", "@angular/router": "~15.0.0", + "@breezystack/lamejs": "^1.2.7", "@ctrl/ngx-emoji-mart": "^8.2.0", "@floating-ui/dom": "^1.6.3", "@ngx-translate/core": "^14.0.0", @@ -119,6 +120,7 @@ "dayjs": "^1.11.10", "dotenv": "^16.4.5", "emoji-regex": "^10.3.0", + "fix-webm-duration": "^1.0.6", "ngx-float-ui": "^15.0.0", "pretty-bytes": "^6.1.1", "rxjs": "~7.4.0", diff --git a/projects/sample-app/src/app/app.component.html b/projects/sample-app/src/app/app.component.html index 3e753b7e..cea3346e 100644 --- a/projects/sample-app/src/app/app.component.html +++ b/projects/sample-app/src/app/app.component.html @@ -29,10 +29,22 @@ - + + + + + - + + + + + diff --git a/projects/sample-app/src/app/app.component.ts b/projects/sample-app/src/app/app.component.ts index b122ae27..a346ccc9 100644 --- a/projects/sample-app/src/app/app.component.ts +++ b/projects/sample-app/src/app/app.component.ts @@ -4,7 +4,7 @@ import { TemplateRef, ViewChild, } from '@angular/core'; -import { Observable } from 'rxjs'; +import { Observable, Subject } from 'rxjs'; import { map } from 'rxjs/operators'; import { ChatClientService, @@ -32,6 +32,7 @@ export class AppComponent implements AfterViewInit { @ViewChild('avatar') avatarTemplate!: TemplateRef; theme$: Observable; counter = 0; + sendMessageOutsideTrigger$ = new Subject(); constructor( private chatService: ChatClientService, diff --git a/projects/sample-app/src/app/app.module.ts b/projects/sample-app/src/app/app.module.ts index bee108b1..20d80588 100644 --- a/projects/sample-app/src/app/app.module.ts +++ b/projects/sample-app/src/app/app.module.ts @@ -7,6 +7,7 @@ import { CustomMessageComponent } from './custom-message/custom-message.componen import { StreamAutocompleteTextareaModule, StreamChatModule, + VoiceRecorderModule, } from 'stream-chat-angular'; import { EmojiPickerComponent } from './emoji-picker/emoji-picker.component'; import { PickerModule } from '@ctrl/ngx-emoji-mart'; @@ -18,6 +19,7 @@ import { PickerModule } from '@ctrl/ngx-emoji-mart'; TranslateModule.forRoot(), StreamChatModule, PickerModule, + VoiceRecorderModule, StreamAutocompleteTextareaModule, ], bootstrap: [AppComponent], diff --git a/projects/stream-chat-angular/ng-package.json b/projects/stream-chat-angular/ng-package.json index 9236618a..f0393f9a 100644 --- a/projects/stream-chat-angular/ng-package.json +++ b/projects/stream-chat-angular/ng-package.json @@ -7,6 +7,7 @@ }, "allowedNonPeerDependencies": [ "dayjs", + "fix-webm-duration", "@stream-io/transliterate", "uuid", "pretty-bytes", diff --git a/projects/stream-chat-angular/package.json b/projects/stream-chat-angular/package.json index 79516b5a..4b548137 100644 --- a/projects/stream-chat-angular/package.json +++ b/projects/stream-chat-angular/package.json @@ -19,16 +19,23 @@ "peerDependencies": { "@angular/common": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "@angular/core": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "@breezystack/lamejs": "^1.2.7", "@ngx-translate/core": "^14.0.0 || ^15.0.0", "rxjs": "^7.4.0", "stream-chat": "^8.29.0" }, + "peerDependenciesMeta": { + "@breezystack/lamejs": { + "optional": true + } + }, "dependencies": { "@floating-ui/dom": "^1.6.3", "@stream-io/transliterate": "^1.5.2", "angular-mentions": "^1.4.0", "dayjs": "^1.11.10", "emoji-regex": "^10.3.0", + "fix-webm-duration": "^1.0.6", "ngx-float-ui": "^15.0.0|| ^16.0.0 || ^17.0.0 || ^18.0.0 || ^18.0.1-rc.0", "pretty-bytes": "^6.1.1", "tslib": "^2.3.0", diff --git a/projects/stream-chat-angular/src/assets/i18n/en.ts b/projects/stream-chat-angular/src/assets/i18n/en.ts index 0e56b2ff..8c51242b 100644 --- a/projects/stream-chat-angular/src/assets/i18n/en.ts +++ b/projects/stream-chat-angular/src/assets/i18n/en.ts @@ -120,5 +120,11 @@ export const en = { Edited: 'Edited', 'Error playing audio': 'Error playing audio', 'Copy text': 'Copy text', + 'Please grant permission to use microhpone': + 'Please grant permission to use microhpone', + 'Error starting recording': 'Error starting recording', + 'An error has occurred during recording': + 'An error has occurred during recording', + 'Media recording not supported': 'Media recording not supported', }, }; diff --git a/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.html b/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.html index 58819ae5..5a0525d1 100644 --- a/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.html +++ b/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.html @@ -48,9 +48,13 @@
-
+
{{ attachmentUpload.file.name }}
this.createPreview(f)); + imageFiles.forEach((f) => void this.createPreview(f)); const newUploads = [ ...imageFiles.map((file) => ({ file, @@ -177,7 +214,7 @@ export class AttachmentService< return attachmentUploads .filter((r) => r.state === 'success') .map((r) => { - const attachment: Attachment = { + let attachment: Attachment = { type: r.type, }; if (r.fromAttachment) { @@ -193,6 +230,9 @@ export class AttachmentService< attachment.file_size = r.file?.size; attachment.thumb_url = r.thumb_url; } + if (r.extraData) { + attachment = { ...attachment, ...r.extraData }; + } } return attachment; @@ -243,18 +283,23 @@ export class AttachmentService< } } - private createPreview(file: File | Blob) { - const reader = new FileReader(); - reader.onload = (event) => { + private async createPreview(file: File | Blob) { + try { + const uri = await createUriFromBlob(file); const attachmentUploads = this.attachmentUploadsSubject.getValue(); const upload = attachmentUploads.find((upload) => upload.file === file); if (!upload) { return; } - upload.previewUri = event.target?.result || undefined; + upload.previewUri = uri; this.attachmentUploadsSubject.next([...attachmentUploads]); - }; - reader.readAsDataURL(file as Blob); + } catch (e: unknown) { + this.chatClientService?.chatClient?.logger( + 'error', + e instanceof Error ? e.message : `Can't create image preview`, + { error: e, tag: ['AttachmentService'] } + ); + } } private async uploadAttachments(uploads: AttachmentUpload[]) { diff --git a/projects/stream-chat-angular/src/lib/channel-preview/channel-preview.component.spec.ts b/projects/stream-chat-angular/src/lib/channel-preview/channel-preview.component.spec.ts index 322148e6..a44d663f 100644 --- a/projects/stream-chat-angular/src/lib/channel-preview/channel-preview.component.spec.ts +++ b/projects/stream-chat-angular/src/lib/channel-preview/channel-preview.component.spec.ts @@ -15,8 +15,9 @@ import { import { ChannelPreviewComponent } from './channel-preview.component'; import { Observable, Subject, of } from 'rxjs'; import { DefaultStreamChatGenerics } from '../types'; -import { IconPlaceholderComponent } from '../icon-placeholder/icon-placeholder.component'; import { DateParserService } from '../date-parser.service'; +import { IconModule } from '../icon/icon.module'; +import { IconPlaceholderComponent } from '../icon/icon-placeholder/icon-placeholder.component'; describe('ChannelPreviewComponent', () => { let fixture: ComponentFixture; @@ -42,12 +43,11 @@ describe('ChannelPreviewComponent', () => { user$: of({ id: 'currentUser' }), }; TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot()], + imports: [TranslateModule.forRoot(), IconModule], declarations: [ ChannelPreviewComponent, AvatarComponent, AvatarPlaceholderComponent, - IconPlaceholderComponent, ], providers: [ { provide: ChannelService, useValue: channelServiceMock }, diff --git a/projects/stream-chat-angular/src/lib/file-utils.ts b/projects/stream-chat-angular/src/lib/file-utils.ts new file mode 100644 index 00000000..84d06bc7 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/file-utils.ts @@ -0,0 +1,49 @@ +export const isImageFile = (file: File) => { + // photoshop files begin with 'image/' + return file.type.startsWith('image/') && !file.type.endsWith('.photoshop'); +}; + +export const readBlobAsArrayBuffer = (blob: Blob): Promise => + new Promise((resolve, reject) => { + const fileReader = new FileReader(); + fileReader.onload = () => { + resolve(fileReader.result as ArrayBuffer); + }; + + fileReader.onerror = () => { + reject(fileReader.error); + }; + + fileReader.readAsArrayBuffer(blob); + }); + +export const createFileFromBlobs = ({ + blobsArray, + fileName, + mimeType, +}: { + blobsArray: Blob[]; + fileName: string; + mimeType: string; +}) => { + const concatenatedBlob = new Blob(blobsArray, { type: mimeType }); + return new File([concatenatedBlob], fileName, { + type: concatenatedBlob.type, + }); +}; + +export const getExtensionFromMimeType = (mimeType: string) => { + const match = mimeType.match(/\/([^/;]+)/); + return match && match[1]; +}; + +export const createUriFromBlob = (blob: Blob) => { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = (event) => { + resolve(event.target?.result ?? undefined); + }; + reader.onerror = (e) => reject(e); + reader.readAsDataURL(blob); + }); +}; diff --git a/projects/stream-chat-angular/src/lib/format-duration.ts b/projects/stream-chat-angular/src/lib/format-duration.ts new file mode 100644 index 00000000..2d1d86ee --- /dev/null +++ b/projects/stream-chat-angular/src/lib/format-duration.ts @@ -0,0 +1,18 @@ +export const formatDuration = (durationInSeconds?: number) => { + if (durationInSeconds === undefined || durationInSeconds <= 0) return '00:00'; + + const [hours, hoursLeftover] = divMod(durationInSeconds, 3600); + const [minutes, seconds] = divMod(hoursLeftover, 60); + const roundedSeconds = Math.ceil(seconds); + + const prependHrsZero = hours.toString().length === 1 ? '0' : ''; + const prependMinZero = minutes.toString().length === 1 ? '0' : ''; + const prependSecZero = roundedSeconds.toString().length === 1 ? '0' : ''; + const minSec = `${prependMinZero}${minutes}:${prependSecZero}${roundedSeconds}`; + + return hours ? `${prependHrsZero}${hours}:` + minSec : minSec; +}; + +const divMod = (num: number, divisor: number) => { + return [Math.floor(num / divisor), num % divisor]; +}; diff --git a/projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.html b/projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.html similarity index 100% rename from projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.html rename to projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.html diff --git a/projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.spec.ts b/projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.spec.ts similarity index 96% rename from projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.spec.ts rename to projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.spec.ts index deebb220..2e4bf8fb 100644 --- a/projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.spec.ts +++ b/projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.spec.ts @@ -1,8 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; -import { IconComponent } from '../icon/icon.component'; import { IconPlaceholderComponent } from './icon-placeholder.component'; +import { IconComponent } from '../icon.component'; describe('IconPlaceholderComponent', () => { let component: IconPlaceholderComponent; diff --git a/projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.ts b/projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.ts similarity index 85% rename from projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.ts rename to projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.ts index e7ddd117..0916e089 100644 --- a/projects/stream-chat-angular/src/lib/icon-placeholder/icon-placeholder.component.ts +++ b/projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.ts @@ -1,7 +1,7 @@ import { Component, Input, OnChanges } from '@angular/core'; -import { CustomTemplatesService } from '../custom-templates.service'; -import { Icon } from '../icon/icon.component'; -import { IconContext } from '../types'; +import { Icon } from '../icon.component'; +import { IconContext } from '../../types'; +import { CustomTemplatesService } from '../../custom-templates.service'; /** * The `IconPlaceholder` component displays the [default icons](./IconComponent.mdx) unless a [custom template](../services/CustomTemplatesService.mdx) is provided. This component is used by the SDK internally, you likely won't need to use it. diff --git a/projects/stream-chat-angular/src/lib/icon/icon.component.ts b/projects/stream-chat-angular/src/lib/icon/icon.component.ts index 3bc04abf..6a788b83 100644 --- a/projects/stream-chat-angular/src/lib/icon/icon.component.ts +++ b/projects/stream-chat-angular/src/lib/icon/icon.component.ts @@ -21,7 +21,8 @@ export type Icon = | 'error' | 'play' | 'pause' - | 'mic'; + | 'mic' + | 'bin'; /** * The `Icon` component can be used to display different icons (i. e. message delivered icon). diff --git a/projects/stream-chat-angular/src/lib/icon/icon.module.ts b/projects/stream-chat-angular/src/lib/icon/icon.module.ts new file mode 100644 index 00000000..57abbfae --- /dev/null +++ b/projects/stream-chat-angular/src/lib/icon/icon.module.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; +import { IconComponent } from './icon.component'; +import { CommonModule } from '@angular/common'; +import { LoadingIndicatorComponent } from './loading-indicator/loading-indicator.component'; +import { IconPlaceholderComponent } from './icon-placeholder/icon-placeholder.component'; +import { LoadingIndicatorPlaceholderComponent } from './loading-indicator-placeholder/loading-indicator-placeholder.component'; + +@NgModule({ + declarations: [ + IconComponent, + IconPlaceholderComponent, + LoadingIndicatorComponent, + LoadingIndicatorPlaceholderComponent, + ], + imports: [CommonModule], + exports: [ + IconComponent, + IconPlaceholderComponent, + LoadingIndicatorComponent, + LoadingIndicatorPlaceholderComponent, + ], +}) +export class IconModule {} diff --git a/projects/stream-chat-angular/src/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.html b/projects/stream-chat-angular/src/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.html similarity index 100% rename from projects/stream-chat-angular/src/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.html rename to projects/stream-chat-angular/src/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.html diff --git a/projects/stream-chat-angular/src/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.ts b/projects/stream-chat-angular/src/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.ts similarity index 89% rename from projects/stream-chat-angular/src/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.ts rename to projects/stream-chat-angular/src/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.ts index 324dd429..dc2a5c59 100644 --- a/projects/stream-chat-angular/src/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.ts +++ b/projects/stream-chat-angular/src/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import { CustomTemplatesService } from '../custom-templates.service'; +import { CustomTemplatesService } from '../../custom-templates.service'; /** * The `LoadingInficatorPlaceholder` component displays the [default loading indicator](./LoadingIndicatorComponent.mdx) unless a [custom template](../services/CustomTemplatesService.mdx) is provided. This component is used by the SDK internally, you likely won't need to use it. diff --git a/projects/stream-chat-angular/src/lib/loading-indicator/loading-indicator.component.html b/projects/stream-chat-angular/src/lib/icon/loading-indicator/loading-indicator.component.html similarity index 100% rename from projects/stream-chat-angular/src/lib/loading-indicator/loading-indicator.component.html rename to projects/stream-chat-angular/src/lib/icon/loading-indicator/loading-indicator.component.html diff --git a/projects/stream-chat-angular/src/lib/loading-indicator/loading-indicator.component.ts b/projects/stream-chat-angular/src/lib/icon/loading-indicator/loading-indicator.component.ts similarity index 100% rename from projects/stream-chat-angular/src/lib/loading-indicator/loading-indicator.component.ts rename to projects/stream-chat-angular/src/lib/icon/loading-indicator/loading-indicator.component.ts diff --git a/projects/stream-chat-angular/src/lib/is-image-file.ts b/projects/stream-chat-angular/src/lib/is-image-file.ts deleted file mode 100644 index bb6942c4..00000000 --- a/projects/stream-chat-angular/src/lib/is-image-file.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const isImageFile = (file: File) => { - // photoshop files begin with 'image/' - return file.type.startsWith('image/') && !file.type.endsWith('.photoshop'); -}; diff --git a/projects/stream-chat-angular/src/lib/is-safari.ts b/projects/stream-chat-angular/src/lib/is-safari.ts new file mode 100644 index 00000000..af3acb78 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/is-safari.ts @@ -0,0 +1,3 @@ +export const isSafari = /^((?!chrome|android).)*safari/i.test( + navigator.userAgent +); diff --git a/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts b/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts index 729fc8dd..ebf9448b 100644 --- a/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts +++ b/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts @@ -23,11 +23,15 @@ export class MessageInputConfigService { * The scope for user mentions, either members of the current channel of members of the application */ mentionScope: 'channel' | 'application' | undefined = 'channel'; - /** * In `desktop` mode the `Enter` key will trigger message sending, in `mobile` mode the `Enter` key will insert a new line to the message input. */ inputMode: 'desktop' | 'mobile' = 'desktop'; + /** + * If `true` the recording will be sent as a message immediately after the recording is completed. + * If `false`, the recording will added to the attachment preview, and users can continue composing the message. + */ + sendVoiceRecordingImmediately = true; constructor() {} } diff --git a/projects/stream-chat-angular/src/lib/message-input/message-input.component.html b/projects/stream-chat-angular/src/lib/message-input/message-input.component.html index 388c3ad8..1ad80f01 100644 --- a/projects/stream-chat-angular/src/lib/message-input/message-input.component.html +++ b/projects/stream-chat-angular/src/lib/message-input/message-input.component.html @@ -1,4 +1,7 @@ -
+
{{ "streamChat.Reply to Message" | translate }} @@ -29,6 +32,7 @@
+ @@ -161,9 +165,16 @@ *ngIf="displayVoiceRecordingButton" class="str-chat__start-recording-audio-button" data-testid="start-voice-recording" + [disabled]=" + voiceRecorderService.isRecorderVisible$.value || + audioRecorder?.isRecording + " + (click)="startVoiceRecording()" + (keyup.enter)="startVoiceRecording()" > +
@@ -175,3 +186,8 @@
+ diff --git a/projects/stream-chat-angular/src/lib/message-input/message-input.component.spec.ts b/projects/stream-chat-angular/src/lib/message-input/message-input.component.spec.ts index bf73a136..3e499f76 100644 --- a/projects/stream-chat-angular/src/lib/message-input/message-input.component.spec.ts +++ b/projects/stream-chat-angular/src/lib/message-input/message-input.component.spec.ts @@ -30,11 +30,12 @@ import { import { MessageInputComponent } from './message-input.component'; import { TextareaDirective } from './textarea.directive'; import { AutocompleteTextareaComponent } from './autocomplete-textarea/autocomplete-textarea.component'; -import { AvatarComponent } from '../avatar/avatar.component'; import { AttachmentListComponent } from '../attachment-list/attachment-list.component'; import { AvatarPlaceholderComponent } from '../avatar-placeholder/avatar-placeholder.component'; import { AttachmentPreviewListComponent } from '../attachment-preview-list/attachment-preview-list.component'; import { MessageActionsService } from '../message-actions.service'; +import { StreamAvatarModule } from '../stream-avatar.module'; +import { VoiceRecorderService } from './voice-recorder.service'; describe('MessageInputComponent', () => { let nativeElement: HTMLElement; @@ -108,18 +109,17 @@ describe('MessageInputComponent', () => { provide: textareaInjectionToken, useValue: AutocompleteTextareaComponent, }, + VoiceRecorderService, ], }, }); TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot()], + imports: [TranslateModule.forRoot(), StreamAvatarModule], declarations: [ MessageInputComponent, TextareaDirective, AutocompleteTextareaComponent, - AvatarComponent, AttachmentListComponent, - AvatarPlaceholderComponent, AttachmentPreviewListComponent, ], providers: [ diff --git a/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts b/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts index e2fb51d1..bd83c16c 100644 --- a/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts +++ b/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts @@ -4,6 +4,7 @@ import { Component, ComponentFactoryResolver, ComponentRef, + ContentChild, ElementRef, EventEmitter, HostBinding, @@ -12,6 +13,7 @@ import { OnChanges, OnDestroy, OnInit, + Optional, Output, SimpleChanges, TemplateRef, @@ -28,6 +30,7 @@ import { NotificationService } from '../notification.service'; import { AttachmentPreviewListContext, AttachmentUpload, + AudioRecording, CustomAttachmentUploadContext, DefaultStreamChatGenerics, EmojiPickerContext, @@ -40,6 +43,8 @@ import { EmojiInputService } from './emoji-input.service'; import { CustomTemplatesService } from '../custom-templates.service'; import { v4 as uuidv4 } from 'uuid'; import { MessageActionsService } from '../message-actions.service'; +import { VoiceRecorderService } from './voice-recorder.service'; +import { AudioRecorderService } from '../voice-recorder/audio-recorder.service'; /** * The `MessageInput` component displays an input where users can type their messages and upload files, and sends the message to the active channel. The component can be used to compose new messages or update existing ones. To send messages, the chat user needs to have the necessary [channel capability](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript). @@ -48,7 +53,7 @@ import { MessageActionsService } from '../message-actions.service'; selector: 'stream-message-input', templateUrl: './message-input.component.html', styles: [], - providers: [AttachmentService, EmojiInputService], + providers: [AttachmentService, EmojiInputService, VoiceRecorderService], }) export class MessageInputComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit @@ -109,7 +114,11 @@ export class MessageInputComponent @Output() readonly messageUpdate = new EventEmitter<{ message: StreamMessage; }>(); + @ContentChild(TemplateRef) voiceRecorderRef: + | TemplateRef<{ service: VoiceRecorderService }> + | undefined; @HostBinding() class = 'str-chat__message-input-angular-host'; + isVoiceRecording = true; isFileUploadAuthorized: boolean | undefined; canSendLinks: boolean | undefined; canSendMessages: boolean | undefined; @@ -146,7 +155,7 @@ export class MessageInputComponent constructor( private channelService: ChannelService, private notificationService: NotificationService, - private attachmentService: AttachmentService, + public readonly attachmentService: AttachmentService, private configService: MessageInputConfigService, @Inject(textareaInjectionToken) private textareaType: Type, @@ -154,7 +163,9 @@ export class MessageInputComponent private cdRef: ChangeDetectorRef, private emojiInputService: EmojiInputService, private customTemplatesService: CustomTemplatesService, - private messageActionsService: MessageActionsService + private messageActionsService: MessageActionsService, + public readonly voiceRecorderService: VoiceRecorderService, + @Optional() public audioRecorder?: AudioRecorderService ) { this.textareaPlaceholder = this.defaultTextareaPlaceholder; this.subscriptions.push( @@ -172,6 +183,7 @@ export class MessageInputComponent if (channel && this.channel && channel.id !== this.channel.id) { this.textareaValue = ''; this.attachmentService.resetAttachmentUploads(); + this.voiceRecorderService.isRecorderVisible$.next(false); } const capabilities = channel?.data?.own_capabilities as string[]; if (capabilities) { @@ -216,6 +228,11 @@ export class MessageInputComponent () => void this.channelService.typingStarted(this.parentMessageId) ) ); + this.subscriptions.push( + this.voiceRecorderService.isRecorderVisible$.subscribe((isVisible) => { + this.isVoiceRecording = isVisible; + }) + ); this.subscriptions.push( combineLatest([ @@ -249,6 +266,13 @@ export class MessageInputComponent } }) ); + this.subscriptions.push( + this.voiceRecorderService.recording$.subscribe((recording) => { + if (recording) { + void this.voiceRecordingReady(recording); + } + }) + ); } ngOnInit(): void { @@ -456,6 +480,24 @@ export class MessageInputComponent }; } + async startVoiceRecording() { + await this.audioRecorder?.start(); + if (this.audioRecorder?.isRecording) { + this.voiceRecorderService.isRecorderVisible$.next(true); + } + } + + async voiceRecordingReady(recording: AudioRecording) { + try { + await this.attachmentService.uploadVoiceRecording(recording); + if (this.configService.sendVoiceRecordingImmediately) { + await this.messageSent(); + } + } finally { + this.voiceRecorderService.isRecorderVisible$.next(false); + } + } + get isUpdate() { return !!this.message; } diff --git a/projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts b/projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts new file mode 100644 index 00000000..656eaf5f --- /dev/null +++ b/projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts @@ -0,0 +1,22 @@ +import { Injectable, NgModule } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; +import { AudioRecording } from '../types'; + +/** + * The `VoiceRecorderService` provides a commincation outlet between the message input and voice recorder components. + */ +@Injectable({ + providedIn: NgModule, +}) +export class VoiceRecorderService { + /** + * Use this property to get/set if the recording component should be visible + */ + isRecorderVisible$ = new BehaviorSubject(false); + /** + * The audio recording that was created + */ + recording$ = new BehaviorSubject(undefined); + + constructor() {} +} diff --git a/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts b/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts index 782341c1..4021db2b 100644 --- a/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts +++ b/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts @@ -43,6 +43,7 @@ import { listUsers } from '../list-users'; import { DateParserService } from '../date-parser.service'; import { isOnSeparateDate } from '../is-on-separate-date'; import { VirtualizedMessageListService } from '../virtualized-message-list.service'; +import { isSafari } from '../is-safari'; /** * The `MessageList` component renders a scrollable list of messages. @@ -148,7 +149,6 @@ export class MessageListComponent typeof setTimeout >; private jumpToLatestButtonVisibilityTimeout?: ReturnType; - private isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); private forceRepaintSubject = new Subject(); private messageIdToAnchorTo?: string; private anchorMessageTopOffset?: number; @@ -468,7 +468,7 @@ export class MessageListComponent scrollToBottom(): void { this.scrollContainer.nativeElement.scrollTop = this.scrollContainer.nativeElement.scrollHeight + 0.1; - if (this.isSafari) { + if (isSafari) { this.forceRepaintSubject.next(); } } @@ -609,7 +609,7 @@ export class MessageListComponent (messageToAlignTo?.getBoundingClientRect()?.top || 0) - (this.anchorMessageTopOffset || 0); this.anchorMessageTopOffset = undefined; - if (this.isSafari) { + if (isSafari) { this.forceRepaintSubject.next(); } } diff --git a/projects/stream-chat-angular/src/lib/message/message.component.spec.ts b/projects/stream-chat-angular/src/lib/message/message.component.spec.ts index 146d9bc6..fc78ff42 100644 --- a/projects/stream-chat-angular/src/lib/message/message.component.spec.ts +++ b/projects/stream-chat-angular/src/lib/message/message.component.spec.ts @@ -7,7 +7,7 @@ import { import { MessageResponseBase, UserResponse } from 'stream-chat'; import { DefaultStreamChatGenerics, StreamMessage } from '../types'; -import { LoadingIndicatorComponent } from '../loading-indicator/loading-indicator.component'; +import { LoadingIndicatorComponent } from '../icon/loading-indicator/loading-indicator.component'; import { MessageComponent } from './message.component'; import { AvatarComponent } from '../avatar/avatar.component'; import { ChatClientService } from '../chat-client.service'; diff --git a/projects/stream-chat-angular/src/lib/stream-chat.module.ts b/projects/stream-chat-angular/src/lib/stream-chat.module.ts index 4522acd5..9b487fd3 100644 --- a/projects/stream-chat-angular/src/lib/stream-chat.module.ts +++ b/projects/stream-chat-angular/src/lib/stream-chat.module.ts @@ -7,8 +7,6 @@ import { MessageComponent } from './message/message.component'; import { MessageInputComponent } from './message-input/message-input.component'; import { MessageListComponent } from './message-list/message-list.component'; import { CommonModule } from '@angular/common'; -import { LoadingIndicatorComponent } from './loading-indicator/loading-indicator.component'; -import { IconComponent } from './icon/icon.component'; import { MessageActionsBoxComponent } from './message-actions-box/message-actions-box.component'; import { AttachmentListComponent } from './attachment-list/attachment-list.component'; import { MessageReactionsComponent } from './message-reactions/message-reactions.component'; @@ -19,16 +17,15 @@ import { ModalComponent } from './modal/modal.component'; import { TextareaDirective } from './message-input/textarea.directive'; import { StreamAvatarModule } from './stream-avatar.module'; import { ThreadComponent } from './thread/thread.component'; -import { IconPlaceholderComponent } from './icon-placeholder/icon-placeholder.component'; -import { LoadingIndicatorPlaceholderComponent } from './loading-indicator-placeholder/loading-indicator-placeholder.component'; import { MessageBouncePromptComponent } from './message-bounce-prompt/message-bounce-prompt.component'; -import { VoiceRecordingComponent } from './voice-recording/voice-recording.component'; -import { VoiceRecordingWavebarComponent } from './voice-recording/voice-recording-wavebar/voice-recording-wavebar.component'; import { NgxFloatUiModule } from 'ngx-float-ui'; import { TranslateModule } from '@ngx-translate/core'; import { MessageReactionsSelectorComponent } from './message-reactions-selector/message-reactions-selector.component'; import { PaginatedListComponent } from './paginated-list/paginated-list.component'; import { UserListComponent } from './user-list/user-list.component'; +import { VoiceRecordingModule } from './voice-recording/voice-recording.module'; +import { IconModule } from './icon/icon.module'; +import { VoiceRecorderService } from './message-input/voice-recorder.service'; @NgModule({ declarations: [ @@ -39,8 +36,6 @@ import { UserListComponent } from './user-list/user-list.component'; MessageComponent, MessageInputComponent, MessageListComponent, - LoadingIndicatorComponent, - IconComponent, MessageActionsBoxComponent, AttachmentListComponent, MessageReactionsComponent, @@ -50,11 +45,7 @@ import { UserListComponent } from './user-list/user-list.component'; ModalComponent, TextareaDirective, ThreadComponent, - IconPlaceholderComponent, - LoadingIndicatorPlaceholderComponent, MessageBouncePromptComponent, - VoiceRecordingComponent, - VoiceRecordingWavebarComponent, MessageReactionsSelectorComponent, UserListComponent, PaginatedListComponent, @@ -64,6 +55,8 @@ import { UserListComponent } from './user-list/user-list.component'; NgxFloatUiModule, StreamAvatarModule, TranslateModule, + VoiceRecordingModule, + IconModule, ], exports: [ ChannelComponent, @@ -73,8 +66,6 @@ import { UserListComponent } from './user-list/user-list.component'; MessageComponent, MessageInputComponent, MessageListComponent, - LoadingIndicatorComponent, - IconComponent, MessageActionsBoxComponent, AttachmentListComponent, MessageReactionsComponent, @@ -84,14 +75,13 @@ import { UserListComponent } from './user-list/user-list.component'; ModalComponent, StreamAvatarModule, ThreadComponent, - IconPlaceholderComponent, - LoadingIndicatorPlaceholderComponent, MessageBouncePromptComponent, - VoiceRecordingComponent, - VoiceRecordingWavebarComponent, + VoiceRecordingModule, MessageReactionsSelectorComponent, UserListComponent, PaginatedListComponent, + IconModule, ], + providers: [VoiceRecorderService], }) export class StreamChatModule {} diff --git a/projects/stream-chat-angular/src/lib/types.ts b/projects/stream-chat-angular/src/lib/types.ts index ec51c9fb..3dd6aaf9 100644 --- a/projects/stream-chat-angular/src/lib/types.ts +++ b/projects/stream-chat-angular/src/lib/types.ts @@ -93,9 +93,10 @@ export type AttachmentUpload< errorReason?: AttachmentUploadErrorReason; errorExtraInfo?: { param: string }[]; url?: string; - type: 'image' | 'file' | 'video'; + type: 'image' | 'file' | 'video' | 'voiceRecording'; previewUri?: string | ArrayBuffer; thumb_url?: string; + extraData?: Partial>; fromAttachment?: Attachment; }; @@ -472,3 +473,12 @@ export type VirtualizedListQueryState = { export type VirtualizedListQueryDirection = 'top' | 'bottom'; export type VirtualizedListVerticalItemPosition = 'top' | 'bottom' | 'middle'; + +export type AudioRecording = MediaRecording & { waveform_data: number[] }; + +export type MediaRecording = { + recording: File; + duration: number; + mime_type: string; + asset_url: string | ArrayBuffer | undefined; +}; diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts b/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts new file mode 100644 index 00000000..bc8cec20 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts @@ -0,0 +1,167 @@ +import { Injectable, NgModule } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { ChatClientService } from '../chat-client.service'; + +const MAX_FREQUENCY_AMPLITUDE = 255 as const; + +const rootMeanSquare = (values: Uint8Array) => + Math.sqrt( + values.reduce((acc, val) => acc + Math.pow(val, 2), 0) / values.length + ); + +/** + * fftSize + * An unsigned integer, representing the window size of the FFT, given in number of samples. + * A higher value will result in more details in the frequency domain but fewer details + * in the amplitude domain. + * + * Must be a power of 2 between 2^5 and 2^15, so one of: 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, and 32768. + * Defaults to 32. + * + * maxDecibels + * A double, representing the maximum decibel value for scaling the FFT analysis data, + * where 0 dB is the loudest possible sound, -10 dB is a 10th of that, etc. + * The default value is -30 dB. + * + * minDecibels + * A double, representing the minimum decibel value for scaling the FFT analysis data, + * where 0 dB is the loudest possible sound, -10 dB is a 10th of that, etc. + * The default value is -100 dB. + */ +export type AmplitudeAnalyserConfig = Pick< + AnalyserNode, + 'fftSize' | 'maxDecibels' | 'minDecibels' +>; +export type AmplitudeRecorderConfig = { + analyserConfig: AmplitudeAnalyserConfig; + sampleCount: number; + samplingFrequencyMs: number; +}; + +export const DEFAULT_AMPLITUDE_RECORDER_CONFIG: AmplitudeRecorderConfig = { + analyserConfig: { + fftSize: 32, + maxDecibels: 0, + minDecibels: -100, + } as AmplitudeAnalyserConfig, + sampleCount: 100, + samplingFrequencyMs: 60, +}; + +/** + * The `AmplitudeRecorderService` is a utility service used to create amplitude values for voice recordings, making it possible to display a wave bar + */ +@Injectable({ providedIn: NgModule }) +export class AmplitudeRecorderService { + config = DEFAULT_AMPLITUDE_RECORDER_CONFIG; + amplitudes$: Observable; + error$: Observable; + + private amplitudesSubject = new BehaviorSubject([]); + private errorSubject = new BehaviorSubject(undefined); + private audioContext: AudioContext | undefined; + private analyserNode: AnalyserNode | undefined; + private microphone: MediaStreamAudioSourceNode | undefined; + private stream: MediaStream | undefined; + private amplitudeSamplingInterval: ReturnType | undefined; + + constructor(private chatService: ChatClientService) { + this.amplitudes$ = this.amplitudesSubject.asObservable(); + this.error$ = this.errorSubject.asObservable(); + } + + /** + * The recorded amplitudes + */ + get amplitudes() { + return this.amplitudesSubject.value; + } + + /** + * Start amplitude recording for the given media stream + * @param stream + */ + start = (stream: MediaStream) => { + this.stop(); + + this.stream = stream; + this.init(); + + this.resume(); + }; + + /** + * Temporarily pause amplitude recording, recording can be resumed with `resume` + */ + pause() { + clearInterval(this.amplitudeSamplingInterval); + this.amplitudeSamplingInterval = undefined; + } + + /** + * Resume amplited recording after it was pasued + */ + resume() { + this.amplitudeSamplingInterval = setInterval(() => { + if (!this.analyserNode) { + return; + } + const frequencyBins = new Uint8Array(this.analyserNode.frequencyBinCount); + try { + this.analyserNode.getByteFrequencyData(frequencyBins); + } catch (e) { + this.logError(e as Error); + this.errorSubject.next(e as Error); + return; + } + const normalizedSignalStrength = + rootMeanSquare(frequencyBins) / MAX_FREQUENCY_AMPLITUDE; + this.amplitudesSubject.next([ + ...this.amplitudesSubject.value, + normalizedSignalStrength, + ]); + }, this.config.samplingFrequencyMs); + } + + /** + * Stop the amplitude recording and frees up used resources + */ + stop() { + if (!this.stream) { + return; + } + this.stream = undefined; + clearInterval(this.amplitudeSamplingInterval); + this.amplitudeSamplingInterval = undefined; + this.amplitudesSubject.next([]); + this.errorSubject.next(undefined); + this.microphone?.disconnect(); + this.analyserNode?.disconnect(); + if (this.audioContext?.state !== 'closed') { + void this.audioContext?.close(); + } + } + + private init() { + if (!this.stream) { + return; + } + + this.audioContext = new AudioContext(); + this.analyserNode = this.audioContext.createAnalyser(); + const { analyserConfig } = this.config; + this.analyserNode.fftSize = analyserConfig.fftSize; + this.analyserNode.maxDecibels = analyserConfig.maxDecibels; + this.analyserNode.minDecibels = analyserConfig.minDecibels; + + this.microphone = this.audioContext.createMediaStreamSource(this.stream); + this.microphone.connect(this.analyserNode); + } + + private logError(error: Error) { + this.chatService.chatClient?.logger('error', error.message, { + error: error, + tag: ['AmplitudeRecorderService'], + }); + } +} diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts b/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts new file mode 100644 index 00000000..ee6fa79d --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts @@ -0,0 +1,96 @@ +import { Injectable } from '@angular/core'; +import { AmplitudeRecorderService } from './amplitude-recorder.service'; +import { isSafari } from '../is-safari'; +import { MediaRecorderConfig, MultimediaRecorder } from './media-recorder'; +import { NotificationService } from '../notification.service'; +import { ChatClientService } from '../chat-client.service'; +import { TranscoderService } from './transcoder.service'; +import { resampleWaveForm } from '../wave-form-sampler'; +import { AudioRecording, MediaRecording } from '../types'; +import { NgModel } from '@angular/forms'; + +/** + * The `AudioRecorderService` can record an audio file, the SDK uses this to record a voice message + */ +@Injectable({ providedIn: NgModel }) +export class AudioRecorderService extends MultimediaRecorder< + Omit +> { + /** + * Due to browser restrictions the following config is used: + * - In Safari we record in audio/mp4 + * - For all other browsers we use audio/webm (which is then transcoded to wav) + */ + config: MediaRecorderConfig = { + mimeType: isSafari ? 'audio/mp4;codecs=mp4a.40.2' : 'audio/webm', + }; + + constructor( + notificationService: NotificationService, + chatService: ChatClientService, + transcoder: TranscoderService, + private amplitudeRecorder: AmplitudeRecorderService + ) { + super(notificationService, chatService, transcoder); + } + + protected enrichWithExtraData() { + const waveformData = resampleWaveForm( + this.amplitudeRecorder.amplitudes, + this.amplitudeRecorder.config.sampleCount + ); + + return { waveform_data: waveformData }; + } + + /** + * Start audio recording + */ + async start() { + const result = await super.start(); + + if (this.mediaRecorder?.stream) { + this.amplitudeRecorder.start(this.mediaRecorder?.stream); + } + + return result; + } + + /** + * Pause audio recording, it can be restarted using `resume` + */ + pause() { + const result = super.pause(); + + this.amplitudeRecorder.pause(); + + return result; + } + + /** + * Resume a previously paused recording + */ + resume() { + const result = super.resume(); + + this.amplitudeRecorder.resume(); + + return result; + } + + /** + * Stop the recording and free up used resources + * @param options + * @param options.cancel if this is `true` no recording will be created, but resources will be freed + * @returns the recording + */ + async stop(options?: { cancel: boolean }) { + try { + const result = await super.stop(options); + + return result; + } finally { + this.amplitudeRecorder.stop(); + } + } +} diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/media-recorder.ts b/projects/stream-chat-angular/src/lib/voice-recorder/media-recorder.ts new file mode 100644 index 00000000..b81afca2 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/media-recorder.ts @@ -0,0 +1,270 @@ +import { BehaviorSubject, Observable } from 'rxjs'; +import { + createFileFromBlobs, + createUriFromBlob, + getExtensionFromMimeType, +} from '../file-utils'; +import { NotificationService } from '../notification.service'; +import { ChatClientService } from '../chat-client.service'; +import fixWebmDuration from 'fix-webm-duration'; +import { TranscoderService } from './transcoder.service'; +import { MediaRecording } from '../types'; + +export type MediaRecorderConfig = Omit & + Required>; + +export enum MediaRecordingState { + PAUSED = 'paused', + RECORDING = 'recording', + STOPPED = 'stopped', + ERROR = 'error', +} + +export type MediaRecordingTitleOptions = { + mimeType: string; +}; + +export abstract class MultimediaRecorder { + abstract config: MediaRecorderConfig; + customGenerateRecordingTitle: + | ((options: MediaRecordingTitleOptions) => string) + | undefined; + recordingState$: Observable; + recording$: Observable<(MediaRecording & T) | undefined>; + + protected recordingSubject = new BehaviorSubject< + (MediaRecording & T) | undefined + >(undefined); + + protected mediaRecorder: MediaRecorder | undefined; + protected startTime: number | undefined; + protected recordedChunkDurations: number[] = []; + private recordingStateSubject = new BehaviorSubject( + MediaRecordingState.STOPPED + ); + + constructor( + protected notificationService: NotificationService, + protected chatService: ChatClientService, + private transcoder: TranscoderService + ) { + this.recording$ = this.recordingSubject.asObservable(); + this.recordingState$ = this.recordingStateSubject.asObservable(); + } + + get durationMs() { + return ( + this.recordedChunkDurations.reduce((acc, val) => acc + val, 0) + + (this.startTime ? Date.now() - this.startTime : 0) + ); + } + + get mediaType() { + return this.config.mimeType.split('/')?.[0] || 'unknown'; + } + + get isRecording() { + return ( + this.recordingStateSubject.value === MediaRecordingState.RECORDING || + this.recordingStateSubject.value === MediaRecordingState.PAUSED + ); + } + + generateRecordingTitle = (mimeType: string) => { + if (this.customGenerateRecordingTitle) { + return this.customGenerateRecordingTitle({ mimeType }); + } else { + return `${ + this.mediaType + }_recording_${new Date().toISOString()}.${getExtensionFromMimeType( + mimeType + )}`; // extension needed so that desktop Safari can play the asset + } + }; + + async makeRecording(blob: Blob) { + const { mimeType } = this.config; + try { + if (mimeType.includes('webm')) { + // The browser does not include duration metadata with the recorded blob + blob = await fixWebmDuration(blob, this.durationMs, { + logger: () => null, // prevents polluting the browser console + }); + } + blob = await this.transcoder.transcode(blob); + + if (!blob) return; + + const file = createFileFromBlobs({ + blobsArray: [blob], + fileName: this.generateRecordingTitle(blob.type), + mimeType: blob.type, + }); + const previewUrl = await createUriFromBlob(file); + + const extraData = this.enrichWithExtraData(); + this.recordingSubject.next({ + recording: file, + duration: this.durationMs / 1000, + asset_url: previewUrl, + mime_type: mimeType, + ...extraData, + }); + return file; + } catch (error) { + this.logError(error as Error); + this.recordingStateSubject.next(MediaRecordingState.ERROR); + return undefined; + } + } + + handleErrorEvent = (e: Event) => { + /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */ + this.logError((e as ErrorEvent).error); + this.recordingStateSubject.next(MediaRecordingState.ERROR); + this.notificationService.addTemporaryNotification( + 'streamChat.An error has occurred during recording' + ); + void this.stop({ cancel: true }); + }; + + handleDataavailableEvent = (e: BlobEvent) => { + if (!e.data.size) return; + void this.makeRecording(e.data); + }; + + get recordingState() { + return this.recordingStateSubject.value; + } + + async start() { + if ( + [MediaRecordingState.RECORDING, MediaRecordingState.PAUSED].includes( + this.recordingStateSubject.value + ) + ) { + return; + } + + this.recordingSubject.next(undefined); + + // account for requirement on iOS as per this bug report: https://bugs.webkit.org/show_bug.cgi?id=252303 + if (!navigator.mediaDevices) { + console.warn( + `[Stream Chat] Media devices API missing, it's possible your app is not served from a secure context (https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts)` + ); + const error = new Error('Media recording is not supported'); + this.logError(error); + this.recordingStateSubject.next(MediaRecordingState.ERROR); + this.notificationService.addTemporaryNotification( + `streamChat.Media recording not supported` + ); + return; + } + + try { + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); + this.mediaRecorder = new MediaRecorder(stream, this.config); + + this.mediaRecorder.addEventListener( + 'dataavailable', + this.handleDataavailableEvent + ); + this.mediaRecorder.addEventListener('error', this.handleErrorEvent); + + this.startTime = new Date().getTime(); + this.mediaRecorder.start(); + + this.recordingStateSubject.next(MediaRecordingState.RECORDING); + } catch (error) { + this.logError(error as Error); + void this.stop({ cancel: true }); + this.recordingStateSubject.next(MediaRecordingState.ERROR); + const isNotAllowed = (error as Error).name?.includes('NotAllowedError'); + this.notificationService.addTemporaryNotification( + isNotAllowed + ? `streamChat.Please grant permission to use microhpone` + : `streamChat.Error starting recording` + ); + } + } + + pause() { + if (this.recordingStateSubject.value !== MediaRecordingState.RECORDING) + return; + if (this.startTime) { + this.recordedChunkDurations.push(new Date().getTime() - this.startTime); + this.startTime = undefined; + } + this.mediaRecorder?.pause(); + this.recordingStateSubject.next(MediaRecordingState.PAUSED); + } + + resume() { + if (this.recordingStateSubject.value !== MediaRecordingState.PAUSED) return; + this.startTime = new Date().getTime(); + this.mediaRecorder?.resume(); + this.recordingStateSubject.next(MediaRecordingState.RECORDING); + } + + async stop(options: { cancel: boolean } = { cancel: false }) { + if (this.startTime) { + this.recordedChunkDurations.push(new Date().getTime() - this.startTime); + this.startTime = undefined; + } + let recording!: MediaRecording & T; + this.mediaRecorder?.stop(); + try { + if ( + !options.cancel && + this.recordingStateSubject.value !== MediaRecordingState.ERROR + ) { + recording = await new Promise((resolve, reject) => { + this.recording$.subscribe((r) => { + if (r) { + resolve(r); + } + }); + this.recordingState$.subscribe((s) => { + if (s === MediaRecordingState.ERROR) { + reject(new Error(`Recording couldn't be created`)); + } + }); + }); + } + } catch { + this.notificationService.addTemporaryNotification( + 'streamChat.An error has occurred during recording' + ); + } finally { + this.recordedChunkDurations = []; + this.startTime = undefined; + + this.mediaRecorder?.removeEventListener( + 'dataavailable', + this.handleDataavailableEvent + ); + this.mediaRecorder?.removeEventListener('error', this.handleErrorEvent); + if (this.mediaRecorder?.stream?.active) { + this.mediaRecorder?.stream?.getTracks().forEach((track) => { + track.stop(); + this.mediaRecorder?.stream?.removeTrack(track); + }); + this.mediaRecorder = undefined; + } + + this.recordingStateSubject.next(MediaRecordingState.STOPPED); + } + + return recording; + } + + protected abstract enrichWithExtraData(): T; + + protected logError(error: Error) { + this.chatService.chatClient?.logger('error', error.message, { + error: error, + tag: ['MediaRecorder'], + }); + } +} diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/mp3-transcoder.ts b/projects/stream-chat-angular/src/lib/voice-recorder/mp3-transcoder.ts new file mode 100644 index 00000000..b2c63f31 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/mp3-transcoder.ts @@ -0,0 +1,90 @@ +const ENCODING_BIT_RATE = 128; // kbps; +const COUNT_SAMPLES_PER_ENCODED_BLOCK = 1152; +const SAMPLE_RATE = 16000; + +const readFileAsArrayBuffer = (blob: Blob): Promise => + new Promise((resolve, reject) => { + const blobReader = new FileReader(); + blobReader.onload = () => { + resolve(blobReader.result as ArrayBuffer); + }; + + blobReader.onerror = () => { + reject(blobReader.error); + }; + + blobReader.readAsArrayBuffer(blob); + }); + +const toAudioBuffer = async (blob: Blob) => { + const audioCtx = new AudioContext(); + + const arrayBuffer = await readFileAsArrayBuffer(blob); + const decodedData = await audioCtx.decodeAudioData(arrayBuffer); + if (audioCtx.state !== 'closed') await audioCtx.close(); + return decodedData; +}; + +const renderAudio = async (audioBuffer: AudioBuffer, sampleRate: number) => { + const offlineAudioCtx = new OfflineAudioContext( + audioBuffer.numberOfChannels, + audioBuffer.duration * sampleRate, + sampleRate + ); + const source = offlineAudioCtx.createBufferSource(); + source.buffer = audioBuffer; + source.connect(offlineAudioCtx.destination); + source.start(); + + return await offlineAudioCtx.startRendering(); +}; + +const float32ArrayToInt16Array = (float32Arr: Float32Array) => { + const int16Arr = new Int16Array(float32Arr.length); + for (let i = 0; i < float32Arr.length; i++) { + const float32Value = float32Arr[i]; + // Clamp the float value between -1 and 1 + const clampedValue = Math.max(-1, Math.min(1, float32Value)); + // Convert the float value to a signed 16-bit integer + int16Arr[i] = Math.round(clampedValue * 32767); + } + return int16Arr; +}; + +const splitDataByChannel = (audioBuffer: AudioBuffer) => + Array.from({ length: audioBuffer.numberOfChannels }, (_, i) => + audioBuffer.getChannelData(i) + ).map(float32ArrayToInt16Array); + +export async function encodeWebmToMp3(blob: Blob, lameJs: any) { + const audioBuffer = await renderAudio(await toAudioBuffer(blob), SAMPLE_RATE); + const channelCount = audioBuffer.numberOfChannels; + const dataByChannel = splitDataByChannel(audioBuffer); + const mp3Encoder = new lameJs.Mp3Encoder( + channelCount, + SAMPLE_RATE, + ENCODING_BIT_RATE + ); + + const dataBuffer: Int8Array[] = []; + let remaining = dataByChannel[0].length; + for ( + let i = 0; + remaining >= COUNT_SAMPLES_PER_ENCODED_BLOCK; + i += COUNT_SAMPLES_PER_ENCODED_BLOCK + ) { + const [leftChannelBlock, rightChannelBlock] = dataByChannel.map((channel) => + channel.subarray(i, i + COUNT_SAMPLES_PER_ENCODED_BLOCK) + ); + dataBuffer.push( + new Int8Array( + mp3Encoder.encodeBuffer(leftChannelBlock, rightChannelBlock) + ) + ); + remaining -= COUNT_SAMPLES_PER_ENCODED_BLOCK; + } + + const lastBlock = mp3Encoder.flush(); + if (lastBlock.length) dataBuffer.push(new Int8Array(lastBlock)); + return new Blob(dataBuffer, { type: 'audio/mp3;sbu_type=voice' }); +} diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/transcoder.service.ts b/projects/stream-chat-angular/src/lib/voice-recorder/transcoder.service.ts new file mode 100644 index 00000000..cbad74bc --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/transcoder.service.ts @@ -0,0 +1,194 @@ +import { Injectable, NgModule } from '@angular/core'; +import { readBlobAsArrayBuffer } from '../file-utils'; + +export type TranscoderConfig = { + sampleRate: number; +}; + +export type TranscodeParams = TranscoderConfig & { + blob: Blob; +}; + +const WAV_HEADER_LENGTH_BYTES = 44 as const; +const BYTES_PER_SAMPLE = 2 as const; +const RIFF_FILE_MAX_BYTES = 4294967295 as const; + +const HEADER = { + AUDIO_FORMAT: { offset: 20, value: 1 }, // PCM = 1 + BITS_PER_SAMPLE: { offset: 34, value: BYTES_PER_SAMPLE * 8 }, // 16 bits encoding + BLOCK_ALIGN: { offset: 32 }, + BYTE_RATE: { offset: 28 }, + CHANNEL_COUNT: { offset: 22 }, // 1 - mono, 2 - stereo + CHUNK_ID: { offset: 0, value: 0x52494646 }, // hex representation of string "RIFF" (Resource Interchange File Format) - identifies the file structure that defines a class of more specific file formats, e.g. WAVE + CHUNK_SIZE: { offset: 4 }, + FILE_FORMAT: { offset: 8, value: 0x57415645 }, // hex representation of string "WAVE" + SAMPLE_RATE: { offset: 24 }, + SUBCHUNK1_ID: { offset: 12, value: 0x666d7420 }, // hex representation of string "fmt " - identifies the start of "format" section of the header + SUBCHUNK1_SIZE: { offset: 16, value: 16 }, // Subchunk1 Size without SUBCHUNK1_ID and SUBCHUNK1_SIZE fields + SUBCHUNK2_ID: { offset: 36, value: 0x64617461 }, // hex representation of string "data" - identifies the start of actual audio data section + SUBCHUNK2_SIZE: { offset: 40 }, // actual audio data size +} as const; + +type WriteWaveHeaderParams = { + arrayBuffer: ArrayBuffer; + // 1 - mono, 2 - stereo + channelCount: number; + // Number of samples per second, e.g. 44100Hz + sampleRate: number; +}; + +type WriteAudioDataParams = { + arrayBuffer: ArrayBuffer; + dataByChannel: Float32Array[]; +}; + +/** + * The `TranscoderService` is used to transcibe audio recording to a format that's supported by all major browsers. The SDK uses this to create voice messages. + * + * If you want to use your own transcoder you can provide a `customTranscoder`. + */ +@Injectable({ providedIn: NgModule }) +export class TranscoderService { + config: TranscoderConfig = { + sampleRate: 16000, + }; + customTranscoder?: (blob: Blob) => Blob | Promise; + constructor() {} + + /** + * The default transcoder will leave audio/mp4 files as is, and transcode webm files to wav. If you want to customize this, you can provide your own transcoder using the `customTranscoder` field + * @param blob + * @param options + * @returns the transcoded file + */ + async transcode(blob: Blob) { + if (this.customTranscoder) { + return this.customTranscoder(blob); + } + if (blob.type.includes('audio/mp4')) { + return blob; + } + const audioBuffer = await this.renderAudio( + await this.toAudioBuffer(blob), + this.config.sampleRate + ); + const numberOfSamples = audioBuffer.duration * this.config.sampleRate; + const fileSizeBytes = + numberOfSamples * audioBuffer.numberOfChannels * BYTES_PER_SAMPLE + + WAV_HEADER_LENGTH_BYTES; + + const arrayBuffer = new ArrayBuffer(fileSizeBytes); + this.writeWavHeader({ + arrayBuffer, + channelCount: audioBuffer.numberOfChannels, + sampleRate: this.config.sampleRate, + }); + this.writeWavAudioData({ + arrayBuffer, + dataByChannel: this.splitDataByChannel(audioBuffer), + }); + return new Blob([arrayBuffer], { type: 'audio/wav' }); + } + + protected async renderAudio(audioBuffer: AudioBuffer, sampleRate: number) { + const offlineAudioCtx = new OfflineAudioContext( + audioBuffer.numberOfChannels, + audioBuffer.duration * sampleRate, + sampleRate + ); + const source = offlineAudioCtx.createBufferSource(); + source.buffer = audioBuffer; + source.connect(offlineAudioCtx.destination); + source.start(); + + return await offlineAudioCtx.startRendering(); + } + + protected async toAudioBuffer(blob: Blob) { + const audioCtx = new AudioContext(); + + const arrayBuffer = await readBlobAsArrayBuffer(blob); + const decodedData = await audioCtx.decodeAudioData(arrayBuffer); + if (audioCtx.state !== 'closed') await audioCtx.close(); + return decodedData; + } + + protected writeWavAudioData({ + arrayBuffer, + dataByChannel, + }: WriteAudioDataParams) { + const dataView = new DataView(arrayBuffer); + const channelCount = dataByChannel.length; + + dataByChannel.forEach((channelData, channelIndex) => { + let writeOffset = WAV_HEADER_LENGTH_BYTES + channelCount * channelIndex; + + channelData.forEach((float32Value) => { + dataView.setInt16( + writeOffset, + float32Value < 0 + ? Math.max(-1, float32Value) * 32768 + : Math.min(1, float32Value) * 32767, + true + ); + writeOffset += channelCount * BYTES_PER_SAMPLE; + }); + }); + } + + protected writeWavHeader({ + arrayBuffer, + channelCount, + sampleRate, + }: WriteWaveHeaderParams) { + const byteRate = sampleRate * channelCount * BYTES_PER_SAMPLE; // bytes/sec + const blockAlign = channelCount * BYTES_PER_SAMPLE; + + const dataView = new DataView(arrayBuffer); + /* + * The maximum size of a RIFF file is 4294967295 bytes and since the header takes up 44 bytes there are 4294967251 bytes left for the + * data chunk. + */ + const dataChunkSize = Math.min( + dataView.byteLength - WAV_HEADER_LENGTH_BYTES, + RIFF_FILE_MAX_BYTES - WAV_HEADER_LENGTH_BYTES + ); + + dataView.setUint32(HEADER.CHUNK_ID.offset, HEADER.CHUNK_ID.value); // "RIFF" + dataView.setUint32( + HEADER.CHUNK_SIZE.offset, + arrayBuffer.byteLength - 8, + true + ); // adjustment for the first two headers - chunk id + file size + dataView.setUint32(HEADER.FILE_FORMAT.offset, HEADER.FILE_FORMAT.value); // "WAVE" + + dataView.setUint32(HEADER.SUBCHUNK1_ID.offset, HEADER.SUBCHUNK1_ID.value); // "fmt " + dataView.setUint32( + HEADER.SUBCHUNK1_SIZE.offset, + HEADER.SUBCHUNK1_SIZE.value, + true + ); + dataView.setUint16( + HEADER.AUDIO_FORMAT.offset, + HEADER.AUDIO_FORMAT.value, + true + ); + dataView.setUint16(HEADER.CHANNEL_COUNT.offset, channelCount, true); + dataView.setUint32(HEADER.SAMPLE_RATE.offset, sampleRate, true); + dataView.setUint32(HEADER.BYTE_RATE.offset, byteRate, true); + dataView.setUint16(HEADER.BLOCK_ALIGN.offset, blockAlign, true); + dataView.setUint16( + HEADER.BITS_PER_SAMPLE.offset, + HEADER.BITS_PER_SAMPLE.value, + true + ); + + dataView.setUint32(HEADER.SUBCHUNK2_ID.offset, HEADER.SUBCHUNK2_ID.value); // "data" + dataView.setUint32(HEADER.SUBCHUNK2_SIZE.offset, dataChunkSize, true); + } + + protected splitDataByChannel = (audioBuffer: AudioBuffer) => + Array.from({ length: audioBuffer.numberOfChannels }, (_, i) => + audioBuffer.getChannelData(i) + ); +} diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.html b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.html new file mode 100644 index 00000000..5b2da986 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.html @@ -0,0 +1,17 @@ +
+ {{ formattedDuration }} +
+
+
+
+
+
diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.spec.ts b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.spec.ts new file mode 100644 index 00000000..e1c6ea6d --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.spec.ts @@ -0,0 +1,30 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { VoiceRecorderWavebarComponent } from './voice-recorder-wavebar.component'; +import { AudioRecorderService } from '../audio-recorder.service'; +import { AmplitudeRecorderService } from '../amplitude-recorder.service'; +import { TranscoderService } from '../transcoder.service'; + +describe('VoiceRecorderWavebarComponent', () => { + let component: VoiceRecorderWavebarComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [VoiceRecorderWavebarComponent], + providers: [ + AudioRecorderService, + AmplitudeRecorderService, + TranscoderService, + ], + }).compileComponents(); + + fixture = TestBed.createComponent(VoiceRecorderWavebarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.ts b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.ts new file mode 100644 index 00000000..d2f95dbc --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.ts @@ -0,0 +1,44 @@ +import { Component, OnDestroy } from '@angular/core'; +import { AmplitudeRecorderService } from '../amplitude-recorder.service'; +import { Observable } from 'rxjs'; +import { AudioRecorderService } from '../audio-recorder.service'; +import { formatDuration } from '../../format-duration'; + +/** + * The `VoiceRecorderWavebarComponent` displays the amplitudes of the recording while the recoding is in progress + */ +@Component({ + selector: 'stream-voice-recorder-wavebar', + templateUrl: './voice-recorder-wavebar.component.html', + styles: [], +}) +export class VoiceRecorderWavebarComponent implements OnDestroy { + amplitudes$: Observable; + formattedDuration: string; + durationComputeInterval: ReturnType; + isLongerThanOneHour = false; + + constructor( + private amplitudeRecorder: AmplitudeRecorderService, + private audioRecorder: AudioRecorderService + ) { + this.amplitudes$ = this.amplitudeRecorder.amplitudes$; + this.formattedDuration = formatDuration( + this.audioRecorder.durationMs / 1000 + ); + this.durationComputeInterval = setInterval(() => { + this.isLongerThanOneHour = this.audioRecorder.durationMs / 1000 > 3600; + this.formattedDuration = formatDuration( + this.audioRecorder.durationMs / 1000 + ); + }, 1000); + } + + trackByIndex(i: number) { + return i; + } + + ngOnDestroy(): void { + clearInterval(this.durationComputeInterval); + } +} diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.html b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.html new file mode 100644 index 00000000..fbd238fe --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.html @@ -0,0 +1,75 @@ +
+
+ + + + + + + + + + + + + +
+
diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.spec.ts b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.spec.ts new file mode 100644 index 00000000..96c17062 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { VoiceRecorderComponent } from './voice-recorder.component'; +import { VoiceRecorderModule } from './voice-recorder.module'; + +describe('VoiceRecorderComponent', () => { + let component: VoiceRecorderComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [VoiceRecorderModule], + }).compileComponents(); + + fixture = TestBed.createComponent(VoiceRecorderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.ts b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.ts new file mode 100644 index 00000000..e0ee32d7 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.component.ts @@ -0,0 +1,92 @@ +import { + Component, + Input, + OnChanges, + OnDestroy, + OnInit, + SimpleChanges, +} from '@angular/core'; +import { AudioRecorderService } from './audio-recorder.service'; +import { MediaRecordingState } from './media-recorder'; +import { Subscription } from 'rxjs'; +import { AudioRecording } from '../types'; +import { VoiceRecorderService } from '../message-input/voice-recorder.service'; + +/** + * The `VoiceRecorderComponent` makes it possible to record audio, and then upload it as a voice recording attachment + */ +@Component({ + selector: 'stream-voice-recorder', + templateUrl: './voice-recorder.component.html', + styles: [], + providers: [], +}) +export class VoiceRecorderComponent implements OnInit, OnDestroy, OnChanges { + @Input() voiceRecorderService?: VoiceRecorderService; + recordState: MediaRecordingState = MediaRecordingState.STOPPED; + isLoading = false; + recording?: AudioRecording; + readonly MediaRecordingState = MediaRecordingState; + private subscriptions: Subscription[] = []; + private isVisibleSubscription?: Subscription; + + constructor(public readonly recorder: AudioRecorderService) {} + + ngOnInit(): void { + this.subscriptions.push( + this.recorder.recordingState$.subscribe((s) => { + this.recordState = s; + if (this.recordState === MediaRecordingState.ERROR) { + this.voiceRecorderService?.isRecorderVisible$.next(false); + } + }) + ); + } + + ngOnChanges(changes: SimpleChanges): void { + if (changes.voiceRecorderService && this.voiceRecorderService) { + this.isVisibleSubscription = + this.voiceRecorderService.isRecorderVisible$.subscribe((isVisible) => { + if (!isVisible) { + this.recording = undefined; + this.isLoading = false; + } + }); + } else { + this.isVisibleSubscription?.unsubscribe(); + } + } + + ngOnDestroy(): void { + this.subscriptions.forEach((s) => s.unsubscribe()); + } + + cancel() { + if (this.recording) { + this.recording = undefined; + } else { + void this.recorder.stop({ cancel: true }); + } + this.voiceRecorderService?.isRecorderVisible$.next(false); + } + + async stop() { + this.recording = await this.recorder.stop(); + } + + pause() { + this.recorder.pause(); + } + + resume() { + this.recorder.resume(); + } + + uploadRecording() { + if (!this.recording) { + return; + } + this.isLoading = true; + this.voiceRecorderService?.recording$.next(this.recording); + } +} diff --git a/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.module.ts b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.module.ts new file mode 100644 index 00000000..5ca07c91 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recorder/voice-recorder.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { VoiceRecorderComponent } from './voice-recorder.component'; +import { VoiceRecordingModule } from '../voice-recording/voice-recording.module'; +import { IconModule } from '../icon/icon.module'; +import { TranslateModule } from '@ngx-translate/core'; +import { AudioRecorderService } from './audio-recorder.service'; +import { TranscoderService } from './transcoder.service'; +import { AmplitudeRecorderService } from './amplitude-recorder.service'; +import { VoiceRecorderWavebarComponent } from './voice-recorder-wavebar/voice-recorder-wavebar.component'; + +@NgModule({ + declarations: [VoiceRecorderComponent, VoiceRecorderWavebarComponent], + imports: [CommonModule, VoiceRecordingModule, IconModule, TranslateModule], + exports: [VoiceRecorderComponent, VoiceRecorderWavebarComponent], + providers: [ + AudioRecorderService, + TranscoderService, + AmplitudeRecorderService, + ], +}) +export class VoiceRecorderModule {} diff --git a/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts b/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts index 7d022d9b..e9b8f60c 100644 --- a/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts +++ b/projects/stream-chat-angular/src/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.ts @@ -10,6 +10,7 @@ import { SimpleChanges, ViewChild, } from '@angular/core'; +import { resampleWaveForm } from '../../wave-form-sampler'; /** * This component can be used to visualize the wave bar of a voice recording @@ -57,10 +58,10 @@ export class VoiceRecordingWavebarComponent ngOnChanges(changes: SimpleChanges): void { if (changes.waveFormData) { - this.resampledWaveFormData = - this.waveFormData.length > this.sampleSize - ? this.downsample() - : this.upsample(); + this.resampledWaveFormData = resampleWaveForm( + this.waveFormData, + this.sampleSize + ); } if (changes.audioElement) { this.ngZone.runOutsideAngular(() => { @@ -124,10 +125,10 @@ export class VoiceRecordingWavebarComponent ) { this.ngZone.run(() => { this.sampleSize = sampleSize; - this.resampledWaveFormData = - this.waveFormData.length > this.sampleSize - ? this.downsample() - : this.upsample(); + this.resampledWaveFormData = resampleWaveForm( + this.waveFormData, + this.sampleSize + ); if (this.isViewInited) { this.cdRef.detectChanges(); } @@ -135,132 +136,4 @@ export class VoiceRecordingWavebarComponent } } } - - private downsample() { - if (this.waveFormData.length <= this.sampleSize) { - return this.waveFormData; - } - - if (this.sampleSize === 1) return [this.mean(this.waveFormData)]; - - const result: number[] = []; - // bucket size adjusted due to the fact that the first and the last item in the original data array is kept in target output - const bucketSize = (this.waveFormData.length - 2) / (this.sampleSize - 2); - let lastSelectedPointIndex = 0; - result.push(this.waveFormData[lastSelectedPointIndex]); // Always add the first point - let maxAreaPoint, maxArea, triangleArea; - - for ( - let bucketIndex = 1; - bucketIndex < this.sampleSize - 1; - bucketIndex++ - ) { - const previousBucketRefPoint = this.waveFormData[lastSelectedPointIndex]; - const nextBucketMean = this.getNextBucketMean( - this.waveFormData, - bucketIndex, - bucketSize - ); - - const currentBucketStartIndex = - Math.floor((bucketIndex - 1) * bucketSize) + 1; - const nextBucketStartIndex = Math.floor(bucketIndex * bucketSize) + 1; - const countUnitsBetweenAtoC = - 1 + nextBucketStartIndex - currentBucketStartIndex; - - maxArea = triangleArea = -1; - - for ( - let currentPointIndex = currentBucketStartIndex; - currentPointIndex < nextBucketStartIndex; - currentPointIndex++ - ) { - const countUnitsBetweenAtoB = - Math.abs(currentPointIndex - currentBucketStartIndex) + 1; - const countUnitsBetweenBtoC = - countUnitsBetweenAtoC - countUnitsBetweenAtoB; - const currentPointValue = this.waveFormData[currentPointIndex]; - - triangleArea = this.triangleAreaHeron( - this.triangleBase( - Math.abs(previousBucketRefPoint - currentPointValue), - countUnitsBetweenAtoB - ), - this.triangleBase( - Math.abs(currentPointValue - nextBucketMean), - countUnitsBetweenBtoC - ), - this.triangleBase( - Math.abs(previousBucketRefPoint - nextBucketMean), - countUnitsBetweenAtoC - ) - ); - - if (triangleArea > maxArea) { - maxArea = triangleArea; - maxAreaPoint = this.waveFormData[currentPointIndex]; - lastSelectedPointIndex = currentPointIndex; - } - } - - if (typeof maxAreaPoint !== 'undefined') result.push(maxAreaPoint); - } - - result.push(this.waveFormData[this.waveFormData.length - 1]); // Always add the last point - - return result; - } - - private upsample = () => { - if (this.sampleSize === this.waveFormData.length) return this.waveFormData; - - // eslint-disable-next-line prefer-const - let [bucketSize, remainder] = this.divMod( - this.sampleSize, - this.waveFormData.length - ); - const result: number[] = []; - - for (let i = 0; i < this.waveFormData.length; i++) { - const extra = remainder && remainder-- ? 1 : 0; - result.push( - ...Array(bucketSize + extra).fill(this.waveFormData[i]) - ); - } - return result; - }; - - private getNextBucketMean = ( - data: number[], - currentBucketIndex: number, - bucketSize: number - ) => { - const nextBucketStartIndex = - Math.floor(currentBucketIndex * bucketSize) + 1; - let nextNextBucketStartIndex = - Math.floor((currentBucketIndex + 1) * bucketSize) + 1; - nextNextBucketStartIndex = - nextNextBucketStartIndex < data.length - ? nextNextBucketStartIndex - : data.length; - - return this.mean( - data.slice(nextBucketStartIndex, nextNextBucketStartIndex) - ); - }; - - private mean = (values: number[]) => - values.reduce((acc, value) => acc + value, 0) / values.length; - - private triangleAreaHeron = (a: number, b: number, c: number) => { - const s = (a + b + c) / 2; - return Math.sqrt(s * (s - a) * (s - b) * (s - c)); - }; - - private triangleBase = (a: number, b: number) => - Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2)); - - private divMod = (num: number, divisor: number) => { - return [Math.floor(num / divisor), num % divisor]; - }; } diff --git a/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts b/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts index e571c0ae..d7e66205 100644 --- a/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts +++ b/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts @@ -12,6 +12,7 @@ import { import { Attachment } from 'stream-chat'; import { DefaultStreamChatGenerics } from '../types'; import prettybytes from 'pretty-bytes'; +import { formatDuration } from '../format-duration'; /** * This component can be used to display an attachment with type `voiceRecording`. The component allows playing the attachment inside the browser. @@ -95,18 +96,7 @@ export class VoiceRecordingComponent implements OnChanges, AfterViewInit { } private getFormattedDuration(duration?: number) { - if (duration === undefined || duration <= 0) return '00:00'; - - const [hours, hoursLeftover] = this.divMod(duration, 3600); - const [minutes, seconds] = this.divMod(hoursLeftover, 60); - const roundedSeconds = Math.ceil(seconds); - - const prependHrsZero = hours.toString().length === 1 ? '0' : ''; - const prependMinZero = minutes.toString().length === 1 ? '0' : ''; - const prependSecZero = roundedSeconds.toString().length === 1 ? '0' : ''; - const minSec = `${prependMinZero}${minutes}:${prependSecZero}${roundedSeconds}`; - - return hours ? `${prependHrsZero}${hours}:` + minSec : minSec; + return formatDuration(duration); } private getFileSize() { @@ -118,8 +108,4 @@ export class VoiceRecordingComponent implements OnChanges, AfterViewInit { } return prettybytes(Number(this.attachment.file_size || 0)); } - - private divMod(num: number, divisor: number) { - return [Math.floor(num / divisor), num % divisor]; - } } diff --git a/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.module.ts b/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.module.ts new file mode 100644 index 00000000..dca95b42 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { VoiceRecordingComponent } from './voice-recording.component'; +import { VoiceRecordingWavebarComponent } from './voice-recording-wavebar/voice-recording-wavebar.component'; +import { IconModule } from '../icon/icon.module'; +import { TranslateModule } from '@ngx-translate/core'; + +@NgModule({ + declarations: [VoiceRecordingComponent, VoiceRecordingWavebarComponent], + imports: [CommonModule, IconModule, TranslateModule], + exports: [VoiceRecordingComponent, VoiceRecordingWavebarComponent], +}) +export class VoiceRecordingModule {} diff --git a/projects/stream-chat-angular/src/lib/wave-form-sampler.ts b/projects/stream-chat-angular/src/lib/wave-form-sampler.ts new file mode 100644 index 00000000..a8035f37 --- /dev/null +++ b/projects/stream-chat-angular/src/lib/wave-form-sampler.ts @@ -0,0 +1,124 @@ +export const resampleWaveForm = ( + waveFormData: number[], + sampleSize: number +) => { + return waveFormData.length > sampleSize + ? downsample(waveFormData, sampleSize) + : upsample(waveFormData, sampleSize); +}; + +const downsample = (waveFormData: number[], sampleSize: number) => { + if (waveFormData.length <= sampleSize) { + return waveFormData; + } + + if (sampleSize === 1) return [mean(waveFormData)]; + + const result: number[] = []; + // bucket size adjusted due to the fact that the first and the last item in the original data array is kept in target output + const bucketSize = (waveFormData.length - 2) / (sampleSize - 2); + let lastSelectedPointIndex = 0; + result.push(waveFormData[lastSelectedPointIndex]); // Always add the first point + let maxAreaPoint, maxArea, triangleArea; + + for (let bucketIndex = 1; bucketIndex < sampleSize - 1; bucketIndex++) { + const previousBucketRefPoint = waveFormData[lastSelectedPointIndex]; + const nextBucketMean = getNextBucketMean( + waveFormData, + bucketIndex, + bucketSize + ); + + const currentBucketStartIndex = + Math.floor((bucketIndex - 1) * bucketSize) + 1; + const nextBucketStartIndex = Math.floor(bucketIndex * bucketSize) + 1; + const countUnitsBetweenAtoC = + 1 + nextBucketStartIndex - currentBucketStartIndex; + + maxArea = triangleArea = -1; + + for ( + let currentPointIndex = currentBucketStartIndex; + currentPointIndex < nextBucketStartIndex; + currentPointIndex++ + ) { + const countUnitsBetweenAtoB = + Math.abs(currentPointIndex - currentBucketStartIndex) + 1; + const countUnitsBetweenBtoC = + countUnitsBetweenAtoC - countUnitsBetweenAtoB; + const currentPointValue = waveFormData[currentPointIndex]; + + triangleArea = triangleAreaHeron( + triangleBase( + Math.abs(previousBucketRefPoint - currentPointValue), + countUnitsBetweenAtoB + ), + triangleBase( + Math.abs(currentPointValue - nextBucketMean), + countUnitsBetweenBtoC + ), + triangleBase( + Math.abs(previousBucketRefPoint - nextBucketMean), + countUnitsBetweenAtoC + ) + ); + + if (triangleArea > maxArea) { + maxArea = triangleArea; + maxAreaPoint = waveFormData[currentPointIndex]; + lastSelectedPointIndex = currentPointIndex; + } + } + + if (typeof maxAreaPoint !== 'undefined') result.push(maxAreaPoint); + } + + result.push(waveFormData[waveFormData.length - 1]); // Always add the last point + + return result; +}; + +const upsample = (waveFormData: number[], sampleSize: number) => { + if (sampleSize === waveFormData.length) return waveFormData; + + // eslint-disable-next-line prefer-const + let [bucketSize, remainder] = divMod(sampleSize, waveFormData.length); + const result: number[] = []; + + for (let i = 0; i < waveFormData.length; i++) { + const extra = remainder && remainder-- ? 1 : 0; + result.push(...Array(bucketSize + extra).fill(waveFormData[i])); + } + return result; +}; + +const getNextBucketMean = ( + data: number[], + currentBucketIndex: number, + bucketSize: number +) => { + const nextBucketStartIndex = Math.floor(currentBucketIndex * bucketSize) + 1; + let nextNextBucketStartIndex = + Math.floor((currentBucketIndex + 1) * bucketSize) + 1; + nextNextBucketStartIndex = + nextNextBucketStartIndex < data.length + ? nextNextBucketStartIndex + : data.length; + + return mean(data.slice(nextBucketStartIndex, nextNextBucketStartIndex)); +}; + +const mean = (values: number[]) => + values.reduce((acc, value) => acc + value, 0) / values.length; + +const triangleAreaHeron = (a: number, b: number, c: number) => { + const s = (a + b + c) / 2; + return Math.sqrt(s * (s - a) * (s - b) * (s - c)); +}; + +const triangleBase = (a: number, b: number) => + Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2)); + +const divMod = (num: number, divisor: number) => { + return [Math.floor(num / divisor), num % divisor]; +}; diff --git a/projects/stream-chat-angular/src/public-api.ts b/projects/stream-chat-angular/src/public-api.ts index 5bc3c5b7..52033c53 100644 --- a/projects/stream-chat-angular/src/public-api.ts +++ b/projects/stream-chat-angular/src/public-api.ts @@ -11,9 +11,9 @@ export * from './lib/stream-i18n.service'; export * from './lib/avatar/avatar.component'; export * from './lib/avatar-placeholder/avatar-placeholder.component'; export * from './lib/icon/icon.component'; -export * from './lib/icon-placeholder/icon-placeholder.component'; -export * from './lib/loading-indicator/loading-indicator.component'; -export * from './lib/loading-indicator-placeholder/loading-indicator-placeholder.component'; +export * from './lib/icon/icon-placeholder/icon-placeholder.component'; +export * from './lib/icon/loading-indicator/loading-indicator.component'; +export * from './lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component'; export * from './lib/message-actions-box/message-actions-box.component'; export * from './lib/channel/channel.component'; export * from './lib/channel-header/channel-header.component'; @@ -43,7 +43,7 @@ export * from './lib/read-by'; export * from './lib/get-message-translation'; export * from './lib/get-channel-display-text'; export * from './lib/is-image-attachment'; -export * from './lib/is-image-file'; +export * from './lib/file-utils'; export * from './lib/message-preview'; export * from './lib/notification.service'; export * from './lib/transliteration.service'; @@ -67,3 +67,16 @@ export * from './lib/virtualized-list.service'; export * from './lib/virtualized-message-list.service'; export * from './lib/user-list/user-list.component'; export * from './lib/paginated-list/paginated-list.component'; +export * from './lib/is-safari'; +export * from './lib/voice-recorder/voice-recorder.module'; +export * from './lib/voice-recorder/amplitude-recorder.service'; +export * from './lib/voice-recorder/audio-recorder.service'; +export * from './lib/voice-recorder/media-recorder'; +export * from './lib/voice-recorder/transcoder.service'; +export * from './lib/voice-recorder/voice-recorder.component'; +export * from './lib/voice-recording/voice-recording.module'; +export * from './lib/icon/icon.module'; +export * from './lib/voice-recorder//voice-recorder-wavebar/voice-recorder-wavebar.component'; +export * from './lib/format-duration'; +export * from './lib/message-input/voice-recorder.service'; +export * from './lib/voice-recorder/mp3-transcoder';