From 2c33b2e4134fc4e3edc458d7287c36db7c2686bf Mon Sep 17 00:00:00 2001 From: Zita Szupera Date: Tue, 1 Oct 2024 16:56:09 -0500 Subject: [PATCH] feat: support custom attachments --- .../Angular/_common/supported-attachments.mdx | 16 ++ .../Angular/assets/payment-attachment.png | Bin 0 -> 34707 bytes .../docs/Angular/assets/payment-link.png | Bin 0 -> 24171 bytes .../docs/Angular/assets/payment-preview.png | Bin 0 -> 46032 bytes .../code-examples/custom-attachments.mdx | 251 ++++++++++++++++++ .../components/AttachmentListComponent.mdx | 25 +- .../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 | 26 +- .../components/MessageListComponent.mdx | 18 +- .../components/MessageReactionsComponent.mdx | 10 +- .../MessageReactionsSelectorComponent.mdx | 4 +- .../Angular/components/ModalComponent.mdx | 6 +- .../components/NotificationComponent.mdx | 4 +- .../components/PaginatedListComponent.mdx | 10 +- .../Angular/components/TextareaComponent.mdx | 12 +- .../Angular/components/UserListComponent.mdx | 8 +- .../components/VoiceRecordingComponent.mdx | 2 +- .../VoiceRecordingWavebarComponent.mdx | 6 +- .../services/AmplitudeRecorderService.mdx | 10 +- .../AttachmentConfigurationService.mdx | 18 +- .../Angular/services/AttachmentService.mdx | 40 ++- .../Angular/services/AudioRecorderService.mdx | 10 +- .../docs/Angular/services/ChannelService.mdx | 142 +++++----- .../Angular/services/ChatClientService.mdx | 22 +- .../services/CustomTemplatesService.mdx | 106 +++++--- .../Angular/services/DateParserService.mdx | 12 +- .../Angular/services/EmojiInputService.mdx | 2 +- .../services/MessageActionsService.mdx | 10 +- .../services/MessageInputConfigService.mdx | 12 +- .../services/MessageReactionsService.mdx | 10 +- .../docs/Angular/services/MessageService.mdx | 66 ++++- .../Angular/services/NotificationService.mdx | 6 +- .../Angular/services/StreamI18nService.mdx | 2 +- .../docs/Angular/services/ThemeService.mdx | 2 +- .../Angular/services/TranscoderService.mdx | 11 +- .../services/TransliterationService.mdx | 2 +- .../services/VirtualizedListService.mdx | 8 +- .../VirtualizedMessageListService.mdx | 8 +- .../Angular/services/VoiceRecorderService.mdx | 4 +- .../Angular/theming/component-variables.mdx | 81 +++--- .../docs/Angular/theming/global-variables.mdx | 17 +- .../attachment-list.component.html | 20 +- .../attachment-list.component.spec.ts | 138 +++++++++- .../attachment-list.component.ts | 45 +++- .../attachment-preview-list.component.html | 13 +- .../attachment-preview-list.component.spec.ts | 103 ++++++- .../attachment-preview-list.component.ts | 44 ++- .../src/lib/attachment.service.spec.ts | 32 ++- .../src/lib/attachment.service.ts | 45 +++- .../src/lib/custom-templates.service.ts | 15 ++ .../message-input.component.html | 4 +- .../message-input.component.spec.ts | 6 +- .../message-input/message-input.component.ts | 5 +- .../src/lib/message.service.spec.ts | 32 +++ .../src/lib/message.service.ts | 33 ++- projects/stream-chat-angular/src/lib/types.ts | 16 +- 64 files changed, 1221 insertions(+), 411 deletions(-) create mode 100644 docusaurus/docs/Angular/_common/supported-attachments.mdx create mode 100644 docusaurus/docs/Angular/assets/payment-attachment.png create mode 100644 docusaurus/docs/Angular/assets/payment-link.png create mode 100644 docusaurus/docs/Angular/assets/payment-preview.png create mode 100644 docusaurus/docs/Angular/code-examples/custom-attachments.mdx diff --git a/docusaurus/docs/Angular/_common/supported-attachments.mdx b/docusaurus/docs/Angular/_common/supported-attachments.mdx new file mode 100644 index 00000000..b517d9fd --- /dev/null +++ b/docusaurus/docs/Angular/_common/supported-attachments.mdx @@ -0,0 +1,16 @@ +import AttachmentsScreenshot from "../assets/attachments-screenshot.png"; +import VoiceRecordingScreenshot from "../assets/voice-recording-screenshot.png"; + +- Images (including GIFs) are displayed inline +- Videos are displayed inline +- Voice recordings are displayed inline +- Other files can be downloaded +- Links in a message are enriched with built-in open graph URL scraping + +**Example 1** - different type of attachments: + + + +**Example 2** - voice recording: + + diff --git a/docusaurus/docs/Angular/assets/payment-attachment.png b/docusaurus/docs/Angular/assets/payment-attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..304e638b669b5df88c4188a5588da914f23cd168 GIT binary patch literal 34707 zcmdq{1y@|lwg3t@&^QDS9^BobaS84c+=9D%a7*yu?oQC)Zo%E1;O_3PbMDRA`+naa zc;l@xs;gGjtXWmlYp(vLC@+DGfQJA80Fb35#gqX6NI!6U1r7%M`}+fG2mpX2WFac5 zC?zUNtmtTGYGG{x07!mIP>0n}8GN6q9UCKLo+AU_22ZLCDG8qg9kXT=L@q?l0uvBM zsHtktQ2f;oSr<#`n4LFQLj%)GpPrif=yO*^s}$sZbLAJicDvK(yDYXh9;efhHaCDG z&mh{j8bvigO>om@v5>x}$Y=D78K?mv>`%M~LmRtalhM#}0Erv7XFIFNev->&uFB=U zw{P>geOr6>5JIHH@*6w$KS>0D0KH#W-<%+br9Gx`n@DLwu*|<2`k^v?-(=^hh~32G zS)=;-?b~PJ6$HNk^iVQ+D4_?|?E{Y$_TroslwawK8wwuz`ZquC{u3crj`boB{yiN zOpD}ez;6l|N^5ZU9-{i9o*Uny=EXZpDgIdbFuS)~WiaOVzV{tpls;VVBPuN1&u)>> z`*>Ah0RHDjk%^Q59ap4Y5GvEg-n|6MqV;=)aJ*VT|5j;U7rV-twl-12Lob&(5C~sv8e>#Qih1$Ll6MOhnePWb&FPM(#n!;q<_wMN230)*~uY2q1 zVR$d<<~+E1QWQia*3_-?WI-!@uRM>(q^QwFqfR67&ZB!NH5aM) z2dd1hF8HXJ{=iCLjvw?hfKbvv4q{pe2G#kR&u>4=x!K)y$5QCD_DgNT}vFy|M^iYN&`` zj^Z6WED9cl9$y*YU;d=12l9TcGc2mQT2T4{F;R`7K{gjf7`OR-_C~C}Ii&65;O1Zu zD8Tm~-=}6uc9(kwbPf9Q{ch*dOnQCNk3)`KhF(%;ynt;3+h4&9vFSGNAnIL|JV3I8 z>2iKPO>)rs&bW3Gq1{QWAjP;{60#JTKJqt6#!Lkse$@)(g^|&y?uyqntp<%sX`^_sNuy8?9xZ4O>Bgr$F! zFfKI)var#_pgA6ha8v?ua>txUEAmwQXi{bW<27h0xLpXA*^lP4Rx*oeC=2uZ_fZsv zCCNBxp;$&H8XTWOIePZKU>$WoRz-886>T`LysP+4%=dn8bNa&Lp0yQn{oDLj`MugR z$y&58nIilnP&-6Qt|1 z9~I+@n`U-q@D42wp$=h9Qft~+wNr}t^qZ8M^d7=4Ww2_(nh;b>!lc`!Q-*{SWN5uh zjnxp<5@{t|GA#=%;|}F!AvjW(H0tc@tm{lHTV}?}Zi?e(7-n8(Jr08pwPzK|1Pcw> zRq(?53K(*2@-lK|5++mY*y?Odn5m*V5N6XlZKE z)xI-dop{W*$sV2AwPKpBm~PK~(KCyWihieGq+wP$=8~b%?5yj%D!Z!IjNE*8W6zJ@ zCfSDTiGMS;e-k-{v%?a`Tk1aJujF>Ei7W9s&H^&LPOp$MoBFxGbN$J)qq^N8rn=WX+#&SB3_~VPBMvgI zjq*;8rVwdbb(*7)q4332+!SMEH+eR7m4zyeZDe|MKBXb0qoJzyYlDXMq`{<7iP2#F zNW+i1Rajd?HC{Rx-IQH52x(%b$L`fgo!0M>vc{{@y*}Tt6vZmT<$q)478>_4QcrF!nsY+{d-!$rSWizVFYZ%p@3R z$kf$yt~9P3)ze+;TO&BLJd+S86yVD`5g1RN8$sH&-IdXY)vrD?T)(4to70(-5*%Tg zs9dP*(O(su>*#(H_LCCQ60#BU&35{I+!-evlpT|;Cd{=6W6jtSvPyJ}$H&#kAx1+E z$|v1cDwZqeuJwQfk+^ps!ryg|^aL3qZxE*wwu7F1f=qg^zmk3L9r!vhG*F~ul(#EZ z_i;M6Nc=3!2YUtyM6bR_}agtIF zQp<5Ll#dEJywzT@SNXY8T$I}KnLH2Am~AwgDp7K3DMKlq%qcMhS*>&rh*aq+qqvfW zMXCkYPMRw&E7*KQYj}E0>v8%+zKMq^TB%EMyD9aca;{b0Hu^S&PIOf`Jrkgb^^kiO zZe|mi6EmHFm0i7vtD|e2qHZ#cb%rUo&2Fvy_wr)N8ID!&$EAapP1K890&+7)d7}!L z=kIn&8d5&r`9`jW%0`};$!z<&QY_hm*_O=~N3=jknm$6Wc0Vr`R~8wZBKGLhuk0C} zP7^%_TH`$!uH^Qx$IkRn8x8hEhPp?BJFvMiKs?QPosbNW+2r+uzvrm*6Y#l%b6WQI-O6}I#N0` zIvz#|ccmExmIV(5(dr5sx*Z|yh3=!vbt?0jOir}RwNW+lH5FxiwXF_qi;oFM9jf{2 zI+fSuE7}G6b+v~tFl!-n_}-jzHmnP(H3!qCUAx-akPS2H+Nw!56t<(wkIvdF_4VsG z9kbT+%X&30NAEVGDl(LKwXJllEL{)Iw3NctzrVN*-*^E}+tTV<&iAMD=`Zqp{P%p5vz8Y`U4Z{UT z3!)vNC(*e?tKK8t&zn+XaZIbh3MC4|nYjFA2M)(POZXFB4-dV2t4v}{0(V$1CAVg? zGG$4jua^&HZGt%+PYL(4zmH7poY#-tkFM)Yh(G`CYB_exTF3UCc&WM~+cH`%x>pz% z7{3>JRDPX(w7P1DvAcu$2@Cs?fJNe#&aW%1un_Xx6BaNd1~5PWBA!Am_%?_@D)@5< z^h95O@G+ za0>!l1R(JL+ZKnQ20;C%9})lvwEzJB7e*dj|9N7-<6Z=lw+&bUj{$^LM5Uy_wTh9WiHWU~xt%kME9w!r1KwUz(+L20Pw}TfNGX$_gYnN< zsA@QC$jO3?>}(hfjqN_0FuL2=|G@*`a|eN&HYU!7#O^lMwoV{-e$xLyfWYlP-Ats! z{{eBf;wRORQzRC(b2K65WMpP!CKW&+CMM={G&Th(i;4g5bnqKLskyVWJ&1|P&CQL` zjg8UH(Ts_OhlhuWnU#r^l>rRF;N)TJZ0OEl>qPcHNdDpxGjTFsTK26*${#nV^>3@#}J|NSd5hfN!W~Tq*22bVt(+g6xa5u5m6tl1a z(+s?Z04pmq-+$o$|3>~<@n17F{+Y?i{(olvYvliTrkaz9qo|z?cu8l0f7tcE%l>=t ze<$)W{WJD+N3;PB07q-tqu+V;+TMR86WNtQbt{>?FDi)T~J=sDPHYV0b z;IA;!uTz-Sq{Rz}Q<(W~Ky*(;68@&A4!a)fT~05zrftSwts4@y!?iD_X1mK=XKnC~ zj>PZ*e#FFZaFG976~OotllT=BmhT8dLkJ6@q5^?`DrQtvNNT2l{{x8x0S5fhwd3$_ zKrq}Mg)U@vV`8R}0! z)c37Y7V@B;ZG|6h;lp&KH~(zeKY$cqwVC{tIE;pJs`IlbKxMIU3n@%J3}eMagiKDCcLvQG-e1s3Gv{0XvpOmeG7|6wJ~13=*JMK|XMQy*0Wc5c|43#$4A1~mnUgfR!2jb_?MG<$agd|_9j>8$2|1UZ5&;angj`oH!kl{f9kv%5=!7Tcx#6ET1 zOwGSij|y}KRuK?r4}koG0@oo)M*kdvdKIpdIsc2ZeU2t9HZ4R@@0oE} zqbJR3Wg}nPKZ3D90>Eb3$qRrpW}e7Vgg1c1|I)cH`hV0ZK*$zofQmj$4u+V3Bd&Mj z9hB*)>5<4zQ@zCgA0-5H!ap_);EGhzDbwY@##x~VmrehYI5V$!$ncK_2S)-D1L&$S zQTs^z5rRbk3Rg8uuQLB|@sB#6M+x!VqI`YxM}VO6!_|}reLv2R_#wnE!ZL_$wH&i7 z{crGWKe(V^RJDkAxm7Wp_ThdQLf>Dp&XHsOr80`NXmI(M%-O)0U|;9sh^-E$mnW3g zM2q8eugg{>gwNiAp`js4_JEsruTb`bWd9Xw2nm34=MYO5CLD=@5d3f4wWB-Cr+~grxQC8_@6_vppz!NYQO!5TM1yd?OeBk< zM?io#oaHN=AV}{$+SehR8L*e=aY&CsLV$<=xqoKZmf=P>C|UFy)l{TwL(<}z>(zdf zc~k|SJsLo80`*Q64kl@H$p#W*Sf0%Ce8RSbH5AkJV;cF zQtzCL>rsUS*)xqv{*wM4*Ppr`u0oa4&Z&v%BWwhqkc|lxJD}~0DQs_SGO_V;L_>EI zA-qPKXM}`~Lx5+C+I)UaO=)L{nR<=!k^7yp@vICrcP?w3utq8K6#_y*_79-6Ky8F_ z2G)R51@`)I{>U}vS_gMHL5eJ6#zA~)tXQuJPs;PG^^E`3JErq#dCeFpnZy>Ykyd8f z2oUF8D`m@*U)%>T-oU8LA;Tz?bxi5DWMDHQ?lX>4`(S<@Z+fkVg1mOuajQw7LEgxb zS151>X;pW1yZIlW2G^!dH#`2{-9}OPuWE^ZaqadZEh# zlzS7gRufIy!XlawFS?s|C2F_wdFkll!3tWZnW^bS>w3*RgNoNOAV@^+%!H}ue*XNrttN`ZMJXD zN*x|@vIm0RZztclUJ%k@5SrkP|%y<$-0Z>@(etm zGmzLacp(>jb?{i+IJ&o6dWv=947AB&5@gA9)Qh`o)X5?!oLv|@{+c(i2jhlQHFRS} z^SPctLxt3sIn|FM`c~vJESNX5ttxGDpfl{0s{G=~vDl!?99-=i7x4oXYZ$Oe^ya`9qVNj27>b8n%sbzz8vg)0>Np@xoZ{WcRl*&U&r0f$DS4xhf zaHgBDW+aa5-j^(0eulJM`B6S@=O4(kHi|JdN-@t16Ex*QKREp@oeC0eE2cjrSZQ(p zIQPcc6^Oc{>p8A@+b`AbMbUl!U}gr5B(rVxVO%pYlUE?Ubda@b+=d?hKM~{~=M_Nu z+s=&{95$Z6z@lrYZV0U~F4Z1daZb1>*BxS&sFhL1Ck)QDyraVCW=9C87L_s^Q>4e} z^t|agxa%064!QB#Z$*4me6M|Ty4;pQ8;_Esw?|c7p-*a~(D5zFb6Cl^I8a#_pb4pw zr-ilD{-Q71&rD7lq*Z(LvF`AJ5kjYmKHT(6f=#DVT9Tm|e;=cn#!MLo4=-fn+t;|c z8ccg3H}#*y{27E0VrfV|^r16yg!tm+nvUiYfbi0ne4T$O-A6z>Kp64`3sM9SUCknF zsr2w>WW0HIk}X%3R7KZeka#|utyM?+v$8`G)Ti9B+H$K@hgVmkBa5jfFNk72pE;V7-JAePg=p3?|bQakRzs|}x&W8801N}wCn9Vm(%zPZ(p zVLm_ReGJL`734}JS)E|{FvBPz4>~9;nqI7vb**vx@UAF?<0rm4m7^WKPX&VT-`4sjK7;a1AZh`EOVe_TFD|7cb#uABCA1cn+ssREV7b4cDO1 z{Y|uXvmd%wAhSeit9ho%kb%>5fPG;7VylR{RF+=men_$HcZ%#g(S6A|lk3SRqKWE2 z*kaG}ROi!Rb>%(V)d3HC+F$(?lkM5O=IT?pVZ4M2gjQU+lnIuK?#4L3ei7vm(nBLf zBjxO#Fclou;XhrwcJ3hRbPyvQ;);;L?$VzgiH)rT?VkjwR{1GH-E+U73Y%a(FCwDt z#8El?H5uQyQgv5FcJsRJot`Ui(S&7=IOIGLze%edx*~gfjSlSV zNU|}2z@|scgy)h>9wLqbqM95>I87y&R8$zKF5cU$vnM|~zbg!13LU7o2QfR+|8-fI z5Rf@t!m1hkLHBgPAV440`Fo3x{crpB&mXiJHf3CaC;9Ig@RVL)>NNTpzSX!VMbG4` zB1C`98L7oAO}?j{{jr&!Uo)>Fn^57*ZA*6aW|QB@zkF~#dBSdOuf{nxkoz)*hN(&! z(oknKyurFdL(7+5?n}0aaL;VB)*6?a44AW+3qItsjVp5Pa+?z%~y^V(WPFR zLANHjS_R+#j4U6z!#5()X{5V`I?I8L36n>{@TiuQXbuz5s`GE6a8 zLl$d8FnJ23ziOOiHwX-~zd(yfoR=k$J|6~6(P^Ly|8r@P1q)58;sVj}LUZD+-BVl? z5&t0Y1ZlQhJq_e)AThD?nL62|SaZxC{F6C8%`f z(iX@XMkrus);|sxxOi?fP*7p3GlLB@j zRa=jAP1vF(tB9~ge!Aj1XQoO@=Ju_B`}^Q}SD?hgy%AMQB8e!eM!N_-hwW;h<*eOl zfvH$q-!`}5E#4w!Ktq9s9oTf&z0>;1p)K*#F3A8?B+QvsOXf%YVYoZ&tH6-h^=8zE zg(5lco!Eb(=zCbO)6=u(b8u%Wf4QPd+%?>ba(4YeAcBUr(2d-p2b{c!E5U5AOS>=mcjXsy+$R`w`Wu4Le_J@tlf%mz-38Hk1U;6uz1DsYwIi`ns^+LF6T0M1h5 zZ8ea{rmozAm5LHY04}XN8h-_dnjS1ap2Cmogl`jTCv?RkO$g4kB>p##3+GU_78>Zu zDJjCRC{&8lQ#8%FqgkyolJvo|?OE^!{9_3&S5=^4P(ZxP46$DtCqY3amviA))`SxA z1e`I%pl=P~TP_Q-Yfy~@Omsy~nI?2x1@CRf?v&YbrJPu463XM+f@ie}3SV`nLDrAD zG+yxcb95pl@^veqKw3dNp#9Yc*cRVGmfKEFNB;4;b$H_=J*r3_9<%7phaZ(11p!Yr zYJ}VBe-DBRe2xZ3#7xPjt9AaL-kOq0$;eVhpq0$+zY0T&x{tmG`MnFv9*H0aQSHi< zYO_UjA4V8MYNWZne_??sTUG~Iz4W_I`$OUYoKbwbD6FsG0wqprB zn)Q4;Hom{}weru_b)W5WBuIF%^ZMhmy~9WVDI*;5*KC9rCODS*KrbIxPL?kZr_4*W z{Zee$W_C)U?)EBB2YJAMLJDfUKV+7KtLuQgKw&m8NHl3HH&9&vXr8Wu1EP zg*i*@GLE6}?Um`9EuGIvEN@X#mHm;Fy7S^n3~%t6b&`$E$@!^uw)A70f#>a*Vpt^F zK^E7K?e@RYi%R`xU!sY>95pq66!kAR@GRKrGs^%1-3Q-K2@-?`v341GWRl%bzeQ6a zl*X9m`}@2T*P|6j}Fj~?cS+KIko|Ep<91Q70Y zB)R%`2!fQv?-IN}{~oIJK1Vk-hZ}U%FBB?&d72H*t3q6dWGb&+y;nFz{CA2<1e{OR z5W$l!rTOdh|KvnEz`grSL(@n8PCZ!mspaNYufo&=d<_Pv?zZ?Q1$POYV237^J$E&LRqlQ2TUlL;AgubM- zz`qg1qk<(XF(xF|^55yZ-%Q}%M?|SXiGLyRM-TYJgegU3xqs8Gj^{!IqbWQYB0b&a`&DSF1zIjyR|5(G z@$tr5k2|Df7Li&m#lz72Bi72Xar=2ZKh5tdPMlvRmP<^I>Ua5l3EXLyi5_G=1PJ+{ zol9hm*)6`xQhASLneUFtz!})e>Qp>GJdM|S^a%FVg(c8VcUsvwH=Uhs&kSPJnsdHCrtSQZlu^D5+?A?L2rt#P*ug;|sdtE;ze|n- zb{P(!{R4=9M+@l2T)rfHdQ9$!sU4Sq%jRd?o#mi=%f_!bw#oE8A4JEd3H0c3Jl_^I zGJieB?VAPN;7!a6Ru&c)o6FGiU;!aR{iYA{8Sv-hdJeLys_ZT2HVKxypIJ1W?bd_d z5k_!b+O5@KdEac&F4sJJPfi0b?xEh;$o)!3X0Je4l&yAnz8v|I?a!r z^l1i%B@}-;X?`8jx_m$(`?E=c-!u^dp9nI479SD=nNbD=J=dwVxX--FOasN`%r6wm zz-h8>n<3v%Ns$=F!-VU8>K;j{D+3_+B4u0u&6dt2fWnKdQl!_<0C@7;fSpvl5mvLyufQ z5xAgVz36zdRxvd(oyu;ig;o*U+yNyMuhP1CiinE*gqo1EX-eC27XWZE?iPV zgQ-%VuEgd0dhw}Va0nf89|coJ{{z@&>8I`OeG3NcqSY}8q$r?7w68|IT&0%R53^jY z`6gw0y8l2!QBE=$o>xgIogH!hBS-HcgXI8-M@`p`2!TNdI|u#2O5ijrp##qt9oXJo zg{dAyQ308wPf)x|wJVwe3@`)i4|bsTBU2C~jBfV!zxT|vSmCQE-yd&t?KkH%lrA%N zn4v37kDX}4&&A;$9H_RLGFVPjeUmtnlGKnV5H#I}3dB^1O@z95f_I6Eh#;lz+~X3; zZL%4r%*%}N>lUe%x_TcXuc>!AG9X#h=H)tBak5NJP5m{s<^!HHsi=s^3MDM%yU;*z z_Orw>;g~{JEt+td6TgpLBdk&{FL9ZVZ*^d3i1lXnb8>!vV&!kn$Lc%@Y6gacfWW{K z@zEvQEt0V)8|{0Z2D~65?uXCUP%llZKaO0sCxmISwKFYiD%7WU86q85-yiP6EFH|0 z#65q=%%SsiW;fc%`v~2N;m(D+BKQ7Vk;1f~Z)L8SkGgi9gWj^ zwK;cg!7t|ko5kA9vESa7Q|X6XmezB>7~6}iG9_`=Qba@F;S7>MM40HPb$WShpOb9W z>NH)d*6Y*CcaU(Hugp+nNJr}{m>gZ8H!__6fP3UE@2~!lmzBpz z=icgZpV<c=gt3DAePnFKP*01Gqs0`MDawTt2!%V=DSAkOtiE7!Wo+|G7tEuRl>Zzq$Prjq-Zo)=L zeP9H(HkVy?#!3f^t8mhLqB~E&c#pfNlaOB?i;mSZ%_mJkEFdNb9D@k{D&H)U@(QIg zPL55V@AKELCXGka$$73P3zn_xINJD}7N!D4x&m`nibV@;PWXghmlf)c=87mswJzPU ztRi=Bb+YaP0s~4Oc*>DwS=yI^g>G3|E~S?_Nc;q9??1RwIaoBfnj&Zrd{+Flk;6i^ zKOMb?Q*;7y&V|;0jj7&8O%027QOsC_QJoS!_C>nl59&s6;4px77@qF3Y|*ncTmBybv@j75y7ROgPr9u!=1@~qN{E7&~(-zS}Er!veugc<*7&8qZ@zZLiCOx(=iVy&=j#{e z@eHo%p`DIYhZ%^|$o9AIIz&2|L!T_Tp0Bu8*^4V5l;Dm}eXlKCmQT)Zpcr#HKD`{= z3fO9>lL$SVwq4=nFfc1=L-hr`t=_@uemU5g)7Bezx{;X+)Z@PM_Vi!YDd{VgJzo>J z?{%6vs+-@SxCOO@ZWDI?7~v7*)~D-kG$iI}G6me?T)LYq(s#z5-D%eA8&vG*sFL`MbD+x;rK=V4CuZs<=Rl>GaWZz{UGA}<0_ z826&Us}H-FR)EaD{?YKtUC%kNfLifOZ#AI`5or@*&{1jtSDUeYW;u_9R(-q)>5-1=Dg12ruXR;^lpNP;DemKW0xVh6_h^`246TYo4A#_g2 zU*}qxN!ohGOJt}?q%5bIwLgD@s2zsJZlV|-Knd(;^0jfIE2vKV=H!dkspk7CPG*aD z%*wNn;MT*?gY0P3*6`erg;Y{=(|ogXs$11JIesMq(DyN-M8U%j@<91`cd4#bDOWm%6_x)YGS6S&UL3|=9k-3m^4sV159)Vg{#^1K2et{S`mneL@`&FfBK;;KPR8H!3q?4OEqE z8^MviP+NbCy^@nc1Fb+s^KZpEd3xgME|!(y!g7&7AC1j*nP`;OZbs{y!}He8c953q z-v@sLQ1QL`4JYBHABkAn%cr?IGYdqSc07d)8$bN25!9tTF`U2QqWHW&qXA?0ONLZw zaWNh}Y|=YUSJoB)BzVk?~ViVhF%y0e9p^j7xgts08LaKhfElM0sSg6Dv+ z)0=sHpkkIWF&g1jr%|6omu;pyFZb*c8N#^%zZWN z`O-sG@D9XkF#hV`uY=F0M@;*^4eQytQ#}fD`L@`)pVKRK+X8k+eL|BKIPvyk@Y-%( z`%QK1V8I5b6G8 zW5G9;O(AdS*sNBV7N2jm)J0U$$oqRSnT#)&D%dpNZ}^2%pQBJTGEct9N8uCje&f3g zReiY(uUVJ7E+hJ6U8_qgp<^`xPkg!og+cU@uu;G7s%G!$to4*Nr0iN}m2O>J9q|$X4ZDE2YG-diRuXXA^0n@Jxmfelf3tG>s|LugU;yzPWie^Z^V3wlX}C&HT&WHvi=+A zbZ+KdgcqOsV_QF4I`+*mcpm4Md|U|y{Ssx9y-OF~QLoa7f{q_7)Ai+t=uO!m2sE%jQl-8kaZGM;v|h>IPe*%FcDECj zw^u~;R_z*^QlYT^%6QQJ_^NQV7Lyj*vXb_;*s#kVAAaZ2-^Ir0aGr^R;~t57){Gz8 zwBn|ITeCjj#5X>TQPiA2eROuBQAuTA8(w)w#W$P>_BUanZbf?(-Xmth9ZTNi6zY5} z&kmzYOiJ$_vpEF%KD3sVGPJmyZJ-xrZw0P>U=z^Uj%_F%CQ}eFOMJU$V_ND{awzY3 zsONb@n8XcQ%RBR4*vX_-iM~1w&1&rJ`gt(UVm7Iq z^fX{}avR9_@{x!PAuqaQk2sM%RDpO|4qXSx}wtD^BAg!2#;>?mpT)CMD|3XS?@Lkz*}P$Q zpMuxtPML3<5kUe%{D#|A)~jl6!=25>Yt3P~huf#>NdOV`Y58?Eb*O-CjBzt$W>@od z@}g+FNM4)v>E^Hy-W$~IqG*c2csth_V)Oatn(eUX#(~6s zTZ10Q=~FH!XUne_vEy}7Bi2xDUhLf zpZH!nHAb9BW!LwD-{p7(D@hl!k6{L7BbB6Q|AD3n8Q)%EozU#%G_SBL%~oUA!mMN( z9)2cAbL=(;|CK*;&*2l5->D?+;a9)tnQ##Mu)s#gC)rVa+jsT0OP#ce8Idg@nuaki zt9ruo;xgn_ry#|(3MB?nY;hts1cn0NAi(?V4Z#$_Y}L>f`D{9y6Rl+~H*D()HCLLsNXxXqpGN-?r6RW(NJkbH8F@2wlW9{f@sj+A3&) z5S&z<-QN(ErLc61rD(By3Hwci# zAsJM2ygftwA71T$Gd_IKl!~K*G@peKd+{F+rmyY+E*E4P=SJ)+hw_h0|A^D*^Nq&|T|fIVAqPi6xCcUYvCTuEDIKgzm~ zoZG5nq{CpGT7&$xGh}fCIP6*#PbgKL{^`aO;**ZBw)E*&Po+HIL?`jUq1t}FRy>Le z#*Gf$zUOCRc~vxlfO#W!x3u`?flA0^axCo;P%$af3xD|Lalha5t?x$Ynx(CE%9S2i z1z>n*@}#G$h0mjr6nbr)L(cm}vVJ(AmAdIDj)q(yIUWsC4p1%=w~Ru$$at|oZt8}F z*dS$%_IS|mGzve-nAyA=1<;ZT39Ixmyn*Y%4eF-!qs9natFo$OE~slPgrz z)WXIlWfFYDY~w$n;J3_-y1G2w$2|xdmDamC<#nF@(+R`0O+psnk_ugvz6Q5Sbl zfB&1`bF-^uwDlTl=H$@IF5k+om18`Fk+w}hcv~HEe^gGgrEfOkZXqm3uf8<;5xVQe zeo|Q_HmBn0@hB4TxMX%?;xIEAcdc1jCJ(q`O*uM2o)?bhk27M?iMfDqnMz7_>Gt;m z9cZ;|#fxqWW)y(@CN?F%~FkE zSKd#xmgb(xeO)dT*J^ZeKG{qhSvu8XbNYkBL?em>z-Chw@Ex{LmN$D+yNNoYG-Qw$ ztpSbYBP`;mi7y>QZ8M_s!Fh}Cx*nNA?*TZV%zQ~9v2h^vD@Iw1tQ6EYm-KZB|Gc8I z5qY;eU7)U0BH#9Uh!Iq0cVOIq2&;G&=TGcc+&J64depNZHgRN81XbL?5_{Ba%DIR; zT%(csvFgxk@t68M`0k?nNwS|WnCEBV^mMebujIbWC^R9FYRY3xLu|!?C2q{KFyy`! zwKe2^$ywg%1kJBddvo)z8@DiX4Ic0yh}tV@!%-+u+Rz!*%A62ww1IB9;=%blgV3^t zORPvWR9^V(Q!9+e?K9u&1nJB@{Wjlaic1NipTiBcIv9`|eu-mr5J63k32iMn6gwv8 zGZfkr3_Yw60rG$>_fwPRhuiOcE=O7SjovePMowF-I@%<=odl#PK6V08F2+<7j;ZL;aUC9srx6pW4E-~J5G4k4y{ee2jT zax9Z^vU%vew8Zq|!tlpjt1Hjdr9v4e{vln=OnrquI3i^^e$RPXtlsh6Vj>{z@wre2 zAgq@&9`)PenT53RA@9yk3|@@LNyWLO@sHwkch`A)w2JqlY=dzxD@&pd zBw837#7x$_rDDOEa&G@m-Z?6`BQf=4bfK4?(}$uDju#LI;bfnW*mi>fhvG)lg7>{! z@>PPgq|J~r;w;9_PEs*xc~Lfo(93GAOy0OrV`YS#v&79gRJhwPc5*{%5wO~C&=gzzARyKnv^!$uswmKZV8ecuVPXo*|ej|=Xg@Vl41e>vv# znDsdCugL>PBiCLZzH~3tj4)>2qzVXQQb5cMhg@lM^L|<$GTaOxJENU-TnW&~>RD}) z2Ta~hxYWU{GQdAR@wsmK^M{s0@S-6fPp`(;`&`dPhio}m@wGS|wFJ37pT|+u(~>r8 zqiz=*O<_5InK*L&^AVyUtDTE+!$_qm^TIeer>KFK5&RXse{FgUbQj{^SL?R71pXJP z=inaVp0c<&Wi)i$Qwjn=z^$tQ8#q#HF{x0mHC?-8w}DQ8Bon3ta*LIlkoHMWGN z6)Z~e)Z49E-ybM{zcvxonWg}7XFV-8%#_Hu5u|p3?jOOHd&kHaK}J{-(xv0`1XgP* z6?&aSg#dRa5$2)a`O2_e&F44fEsYodq}MbUT~p~d`?e~0;-MK>Pu^|_8j@RkerM(n zlabjNTHfCfK|T|9@W_ZNN|E}jo61Rm%|hD)WXP8XH($kKa+}&vJmRyR(81dppHw`{*_|1m`KPqgec-cY_sn#f@|NZWzGL10q@f zIfxnX+99eccTGw9d8kMIu^B}Wy19`xCtrp)@{G=R_+=w59PUQ#taKkarkW8yL4I|2 z<<-gNhq*rd94nilNGvDZ54)Yyy*VyW=q2$^rD(TOATt^J$~`+85#%r%husSYe9*Xy zZ@_@_`z`D9Dm85q%>=_s4dxEFL=~Rf@6`6T4`VlKM91Q6#b?2d)^tdIL&Mv9na+!o zz0!bkqR9m|_x*A=JdaYr7B|~G0qk1!q7Wv9Ybv0^%d)=r2z?{w2k=K{p}Z#%z@%o# z#qQPPoN^4_XZ!-@Td&%%29)kwLs}ur^OLh9N1mctSnA&3tvC`V zb#=(E>}>0q;u!sc5u#+-jP|Z8`I<71;e={$y+8#n*9pS5L;XleqyvrdHE(3Pg*vNG zOL)@zQ1t?nKxtUio9@1Sja)Sd{moUz)?N+HrFxIRCfUN%Ep;lt<~77qVNj?^Z2b?u z$O05e%5$|c$okSi)>ef6s1Gdk11ELHw0L#G3kbj43+4B1V#O+ zevWv5hMUK#oR4{wqmky1#v68!Um=~n6=HOEXkn$d7dY)6YX>PO`(Ae5j&se|KCm!# zO#_wUfv7I?s|LSU9)&}#)&g8`kuR#(Emt3rk-X`HF;;?GSuFxm2nD#S^qFq6e~G=z zqkGZ4`uG?sd*fsAz8lv59nv@CJ~-}bbs}HdF*n~IMwc;ds^M0D9C-VEU0Ga10uF!M zYPCQ+Oc)?nM-njm-j^Geq`y9URI8qn-mXVO`otvSsom%Kz#H#C&2PJYIhda&@aEO$ z*|j60|*93jNhZlW*g=KpEupW^H4y8i)m$83YfMq@R$ZQE*W+qTg- zjcr?v)!0_EW9#fb@AG^A@7=jNcV}Pi&suY>HRqUP4t~eLHIH^#w!CKdE%|*KJhmkT zaCnnrga7@IGSV9R^p%`Ew05HMXKT3C+qbLVJt$j*K8R1riy&A4fbIeTOoZ{#sL!Mn z7iJkfE|$&dJ&pe5tlT|bLU%y_y4^%-L%HXf{P2m`U&GU%si`}+XiWQK$b{DzSVBMU ziACFKBNZnI{#kdSUQiLaH#*uG$78&S{zc<-I@Gw;9?U{DQ7#*>+g&{q>*NN8Dn=`< z>5^DGO#?07iJ1ewYELeWRTavTGgs=>9_HinsfVG5F$o&6eY5qaJO;>GI;JS}U@&Of zs?kGw!}>B{#eDc^;=XSYNNEWkZZ=;x#F+)X*L6*HOpWi!wZVW#es+}OJ##-GDj#Ir zbzb$bo_%J5a1J@ZvXNG#%hmA~3i6^gKyG9Hd%h`!VSVwHvz`VdGHQ1TVb>B%@|6k& z?GK};-)VV0Zp&ewPc{4*)Nrm({_Z}HqjNf3oJRl6c_n?8?3>2R0 zlVO&Z&!Km@BD1*urt*iH$MJNe)zgVFb8H6AI;d*Fz; zJNT}-w?T-S<1`1xiEh5)`pWBZ8!VI42girSELGZbUDzuYk9*4gdj-$lUV9CgXOUe) z$WOW6Thm1bOuD?6k2D(#pv4cN4eFUywua)K?*qAF^1TtX50LK)35BtK0 zFp1O%N{5W=)7mYQD^%he19pPLFua6#XQA*MOD!pbZ8d`IN)Bd~VGfEmK8K?tIks8G z?5=sXj{?G8JH|se0?#uaDL*$ox8~cL*Oo4`+_lk9mw!^e~Cx@kjOht9T=&p=oQT|+~|7H8{L7yCtwdOh`}JtslV{tiYF zCkQGP?2r5lHsH9Frc}Qzz5A!-ot8$stF##XbYuIQr%V5{zWUky$HRG?xr6eVOh+0E zE#x&$Ks{6!@4bW`34nK42?rG%1p3;?0_T(k5OCfi9lqOfeV6(16PvZW4(gCjFT>bf zQao6|mWT-a8+&x(ts)5aMI0Xk=@pau;g zf_z{5XV5`Ok^5~xhtj9vTTTQAs~`7ev7@md_}a-AWUzET(lX+|Yj~9ZvV9Ar`>{yM z$qCoj_oUdN7i7KTaC<38t9^|hcnwvkbWmQZS;7~IL6bx0lkfvRU|miC(!iEb@Z>KR z4zz@SzR4s3x(FR0>GB`a{BvX96`Ta%^a3mO0m6X&-_UqL&_!lgnQ{;`?H?+FZV%ZuiI#ol1S33dJ9&8wf+zYULBpe(X-tKQ>hUNB!HIvU3 z860Y8Ma3=?HOeO$QYdidM5EJ#4v9(=GVc>Q#o;GIw_4AO~UkMSA`wAjIMQr4) zIKS0|y8 zDuAJ{uMY_gl`k@iTB_H;b;@QQjdS;-KqzJP@(!UjH0KxDUnX$=OA`*ESEQR6{+G)K z{WS*-I`RFZqp(6Go{LUR`n`hQ^7dqYF7vQt_y|mi!yJoA7crO)&1}QZe z>4&?n`(K`%O0FiOB}-L%P;AearTOPlx73Xnko0#->!E=g9rBuBd$%8&n~@DCr$uY( zZ<0!!@2FqCAm<{-1m=g#RBAdkb{FDWvRem$k0qKfP9xOrV}mxvAGR0K8+LbZ@A6L` zm`1mWVR;3)+zXyA@K5%shTQTK@NC8Xjl~E0ekz3kF7=<>}WcB;T(t*b?yFg5B>3K4AE@6S&9U5kYl9MwWsyS#Q$u$ zj7%=q*+c=y4|ypR1lkBR>n(L|C$D>@g}iyXb3e%7p*{ARfo~{;gi%#zOGZxxZOd)O z+*83Jef-~GFYg26P`v_tM=7^!n!6HrlCr{SB=uSokE50$S&?SM+kC#DB4eWj9MWlR zr>?E#KiTLih_rQpUYS_=CaaV*g;vKQN%J|c8 z+?<*KN2X_BHYmH>H$6?r`kSZd4<$t`q39Vo>!h~wS7lnSc6TWN0iU~oCaUtF<)oHN zir3V%p*lt96Bl15k6y0Vc?{g~!zEGJUHwZQGg!LnUgE~|McIqEn9gwH6{)>lPXMKQ z6Fpm%b^toU(QaJKkH+{LWuPwM*Fp&aCQFQa!EB``g+dK~#}`lHQVGf_aft1cacAo$#sN?H*<=(yHr{M}YWfq`-|8R^-i zX{04!Ka=UWSzbtGRb~`}3*aKVAP`;S9hT=k#GN$yqNmP|; ztpUeH<{vqz{%U=V)*HE{O6TS7P4~A05q5^VYlV0D?Bw3zn-55}Ia7>li$`@@fR(;V ztTa4`T`q1%(KoM5RvYm0h0=&}*0Y_nY4V*1mmXqrYWQw2u*(N2ft%fKb5(NW1u1CK zuPlJkZa7Mn8dP{z^O$8)FXXx-B#~ZBKZ1zn?khuB<2a+r8obZMva@&Wv9li%wbGhqcD9Q3=LC9528 zvMh`<7r^a@8ztSXet-M4y+Or1)3xLS9Qf6rSq(|lk+8Ct7!sFR)>0tq^OF1H@=QKT zu~Y!8OAlD4YzUioz(57&rgkNM22UKW2-N#P_CrIw6%}x>Q#oDGhKfQPIMGidJzW+Y z422|;X^UHM7NFJjLZSKS3W6zM~w(bu-+W*3@3At97XT0h=$r~=s`1D)vDf!uC~QbL^I zYdv4sO61^3-WTG-b%(62OBmD|9kI$>hWo6x;Q4a;kX^eU1(!!T8js~|K}QUFA|v#= zvwkxTl)81zj+D|UAQiy=R|QNRXY)GYI5^Z9i0sbC-7Yk(xt)gY6mBur&}!B<3Xh{4 z9pEjuz?8@lh@+E3vEkyjKT+biKi`Z<8i~u- z36UyQ>LQ0nqf9U6x)8Pkzln3P-5BKQ@w_2$>X4W*Ib!)DMwv>lJk_~- zyc5LLN+hCbg`KZk?JXK+Jc!WGpa;-3r?no?Y$W}12C9fe7>UCN(_OZ1DfgW6?jwHI zg7*04-nWUF0fEt%_Nu75k;@vA+$$fg$htr4A1xFvoo0{rDCQPvs+YDmYtdPZ7Cj0WIN_ z)#^;g>%M)M@57IXLM#`PE|rNcFqZ-P`tpNNtmI~^@GLQ!CT*b3{GMeZ>pkN0>b=iBF%%>oBIc`f=Dn< z3{YvKi>y#RKc60QC~3*=!V#AsRKnx#N?O?7VeCVhpM305Zac6f3slKTRD%4MO(YsE z)Wi>_xc2K8TllL5L4d_cuGig69$(t-^rr-miFQFS&ix{k=cqo&a!w>&WfGd+wC}%`NsWcr>&JxZt!@c-382?!Bp9^c@|;y2V;5OxRG4n z*)q!2&MS6AKVXE)8#B&s+TtV9_n(mh**{xlGA@f1hjzTg3d$`~id<4n_o@pup5MT| zFM+t<2df-{q*TjyvPW|Z4EJzjgb!bO`FMMsztYmM{}FkLOqp~V9%kUD8){8pDDjYE z^4v+8ZM_Hxo9!64`An*{5~>SG>~lUSW-W+|d8zgDey^9R#Tk0e_!hgeb>Xv39F5IC z#M5cA!|r~6_3rr*^&~ypxlnb;X&hvfGR<;yBOfDNw#hl|a>*>54W0S3{EtD{#3uGl zIh95XwaNW@ZNhOOI0o=!b(o4-eQ!6y;XwpuF{0W^?vH z?k2sikI?y!27RGJX8!g(uHx!9>4WhG13#|n<#E#V-jMo8`b#W(qJ#MZn>W`9UFBA- z-UnqFT2^$}SxBA;7-6vZkfE?6Ee_@l%RZEiZHT3}K@;$zC zmt2#t;)A{FWN~tz?}pTA2EKiyMTN`X_77c3AA7jjt@9s~p&6;v?oItt1Sum&FfbJV z6GSC3C?Y3FzRF6LlL)cR#f115m%C~A%T3#M^{f_A8viaj@g+{r=v&CVyUxP17~_Xq zALPQ#%;e#~`yTB1Z-*&IF_v;$*kl`fK)&ZrZgBhl-x;!REsUvuN!6Qb@09F$#;)2D4^n4P|Gol-yTuEY;?6iSb^Bt zWw(;d$x5Af2!ad0md%gDumy`?hAO$B=ZE3yp5}}tj@8nwT1LJXOG)apf%1?+jPOS7fSZ?x-eZKGAK+M~o4rX>;4Dk=!!ouo2-vgs(F8HC$ zrn3`5#>LQe6n{9&&CNqrX-0>2^WchGx+fJ#yXo=(bA49Ag2H4~ts?KX?Y$5tK|ae^ z1Hi5dfq=fB{-F499|a44r|NUM#)Zf}(!FqH<_9Jwc3l6H@D6&S{~JZk_69@j?&FF3 z;Lr%=xEm`E|E{b`r2~X_mPo$#3&Yx916BrP`^;lwY7M8m8eeSr8NMzrIiG*0v+Mhd zN6}jmfrHm#J*Eb3Hk(pMiL0lq-ybg8sQL@Svb{D#^V8?#j&X@Dm9Qo*Qv+gfXUJBI zeayaPIMq9%Z>%;8Q@fQYPQTltyWjKpJIinV4AeqIKoeCAo8ndI(1SQAj~Y77O)IW9 zkbA$C&c0l2h0&d(!_{d@o&^`RGR^N7ys)tmXz0F^UT=L52qO@m$6!Cnazw+r=w|Ha2m#e87`@lKcv{fz z<osIs{Ek=((p zP;~Z)AHB{BPuGctNb6jKt2U)Lki+VS+{tHK;M&sgS$Ao{^7n2r{o?fO0}Xp|eSdv_ zy1IVvN3mb&+4YU+l?Y2Og?sJQP~+44p)P%UIj7pC2|D=lkDl0l$%eLF_~;I{AaK1weL#{hsLWT{nUU- zDa)YI13U9M83a3c`jrjJ%3B^`Fo=IKquNZHh~rP=aSDGqwQ`Z zi@NXoXtGLb_R1FBNDQ5=oNAm?Pg2Z|HycQ$pqZ5Xzv zZhbuZJx9%&_bOW${L$Zyt)xZ!$;-WNvW`RJyA}!(T=ip$XuNYRCANX!SJR*lf)n@+QyESv(4pRO_`C&c&xDjRN{6g*tO$=zP6>Pvco3@*|8g&ZgTZLD}+vTG!u6pFvj5Zuh`RERcRd-+n z%v~J5BXJ4T=}5@k7WI(_6ZT8L-J!YjD_Grg+(t3$20efi=+v#9?-$-Suv+SL_$WyG z^vpc*gI9a<13@IC7qZjYN^+k@6;ILhM?v_s=+}=ogg})`TXz+nF*da`2#Vnf&Wg17 zN}V1vhGB!rordGp&hoj?&F~0mCEHz-uT)X`qy1p%ExUN%-;j%G{UyWIDk6B8ov~~? zo01$M(wN(cF8)dZCU8zYKu&A&&&8$*-*O;qFTuH1CVkUR;U@G(VC>j;)AP0(FYTM( zsa;v$a+m_P=mG2(ycuHl>6pb0J5qqTa%V+NFOA5GJT%hyzSXa1EMWv*!uK(%Skwxzh4KD;9JM>EJgl4Odwr`sarvLpk`B|%S zEdFwY=*{=tu#2?gqRn!ck=@zFl%1`5W+`<$|I+O7gjz4M>n9p8tn6^q11XYkBAO6y zoyaxd-2J4ewbn~;>#L1;QczFCrrhOh~`ziehx|GFsu3WJN+RtmtmCBc$Rxj^ZO)|W)8gd?MH3xE*?u?tZ&-R8xYAu_w(>>3dox|M@ zI-+fxuEsVuwYn1;P}{FXR!!VnmDVe@kp=SI>2YhTE{$1t(SV<-r=gZ)vMr{$U~$_| zhJ}-a#AUYWec6Nt*(`l9jVg=Lr& zh{7w4B$8GH%6zXq)t z@~x+ia{jRix{j~V99qf)#0rl_V#b`^HQwyl)J;M_y^x2HMxdr*1)klb)6^%sLbjmmi)`Fol@g^2SgrbF0dn|= z{v3nRegF}?KY0Cqx|6a1Q3))Q3G;^*loYvU zP+pa&eMqQK>AnhqqgH~Ct%sf zX6dM6mP)NSEKqlpf`tvpk|7#F=yg(0MER0?14T3+eu)qjqDHAjrjv3)C^xuPs9XtX zgr1@9HA44yCZ136t|H?F`*o+L@8SE+S9@>W(Qti@9^jExkU(V>&A?VzeYKe{jdZIN zKpd;IXc7uA!Ab8IRZ_CV^7*!Tq*b7_f$py(8AM}QyIjM#+SILG0$3i3Rt12~h>vdQOuw|Vc-F4Dc= zI2}!>!DV*E+h4J8sUrvkSiYBP6Ctm$<@5z4)wR}%8LCw1B0`N}i2BTslR*YU_URYJD(V?`vR`ocDpdp?cQTBbzOG-QlrA;0!eexu zg3HfSae{)p0nr1Y`;6;%_+xuj8f zZc+>|`FTX@b0I~#c|2tbt_@!X4uz0$bBG5gaG$1zSB$r#LvICS%3&VsrN~)ux~YUq zbqWH!J_fl>!tVMaAPZ9QI%Szequ#h8>A9XYhk%YB|z>k#G za0q<GhDe5`kA<{#Uch=XAkk>gfmoz?m2MY*plOk zs^Ip$yt=aE`cXf$DoVRiEQbP~Ez}C^*a2_?qJ?9f_A+QMFftTUnK+f(SirO znhk*yWgMRSSX1SIntr&QV`Y9UhmbA>#gLEc6>k*9Sv_+FKCF~-Opyq#h4>m1)vsAw zp_fS|+iCkz{i;!!I75o^lV7rK7l>&!3Cj*4pG%WP(q{6FDQoqN(s-GFn1?)CHZheW;ku26OlL00T32F2Oqw8^XmIu@+`zwSn z3rxwn)K5D(&(!%&U<|MIcO;)f$nsQto7VL+43evqAfd*~4hXsy+Iu3*`ZCyj^TC!I zU+_BNVG5lF<}}()ImoB@BQ9z5Jg0~tt_eJ?k-4^Bu)x=Ks%P(i)q|QB34A679nQS# z@7ppWsP){Rzk&qZRcDPCx3!vdVO^`^mKG_Q<`NECJUY1jbal_n-Tn7YRvl4Gttw76 zFp0i~-4Rg<1zY)QeUR5yq7sqfGH^OX4UI+odJtGK>Q|-jUDMN|Xk4RQMgWTP%W#Ej9ZvY`jV>NQUrTgk#}A2AK3; z156_Js4!9WIpB{ALi zr)3ZXffoQZ4Vdt;1!d>5wSpdfZ_;%E%{GeD&R34_Bu9)|2q7pCGTqtS(uB?0fRp-i zy;IBfD5TdzZ<}&3l}53gW1$H+K$1jKCvxDiph`#QzZ}^Xz<5qSQ$JX zgTlB=)63CT+#3&H`+8%^-E{`w6S>#!y`h#&nUZ)hTRM%du-am2{-<9Tfrw!nojsfU=Hl0Va05+zS=7n5#b?5^~Dy>Zu^xyz4|Crn-Jl! zQAH~qs0`MmAzec~60r>GM|9JqbA3QI|A|}Jy_hQ+FV$=y_pG>;bdc&C5gEyo+fysm z>SD8_5e2Dx9SI_J*j`vxq)R2XX$WUfYtvgq1;x6>qFhQ0TV)I;{uCLv`OqyTO&$() z`=^>Ur6TE3c(7m7CrJ=522Y70hvLo3Egi|Y&#nrW_D|fxCRpf|;PE4sG!gc>YB`5v zObSh&vRNv#LkQiORZBAmoEV2eg-x?sm5L2KQ|5;Behc|dZYpJJ^I8ih%@o~(x^SO1 z)1^IK)Fr#|;dl#;(XOH}Cz#dw>Y}ja;RLLb=`JRxF`Xn9?S7*n@;R2+SATEdLZ3J? z9ArqNHF+igWj4F`F81BFzWvy3#TuW>fYG()kV0|3v9Y-;=g6Y&E4uk}rrp5F{ofGZ z(NqqYAEG8d?!IVLi=P0%)n?1G*lU-Wsf8lQGTNU~9zo!}mdn>331d1t*5z!m{Oj*4 zY8Ppez%HYi_Dc55w5zZ=pKx^{hEfS4sZ>OzG94jRJppv2#H`>3vw}J~O*l-u&geIa zU6j&mNHI}8LEn_p_swpf+595_zDfOI*ve@;PHUNsI$tWDphFB$#i2Qeo|5YZ z1?GD$6EKEwxX!q1yxhhRIizM}XcAm_4ffjMl+6m(bRTd!=(l*U$beGjSnL!vapdw6O^#60 zR|s#QkmYfc{>8a#2Pg0!xpOR`Q%AVC?zk>rV{c0ikxG5zdj;Ryp)5hU& zy=(010VA}m{iOK-tEJiDzp?Y6>AtpT9gE@G%d7OlenJ6eRVIfsrNA5v|4zGlty8;; zSpIK*_an=lrU<)xUsOzL#_`7l{Zem5TXm7lfH*n!I7kO& zd^mpyR3rO~xa%E2L{ANS`@bd{q3U6Da4QowcG{nmv{7HISDp|SqiCRs$UIMQ2I>$@ z>Y4NIYn9W=*!lBWzu5Xo<*1T73+X9A%G;VYX~-#7=V;NY za;;h-K~yc z$4u63ml|n18P4w1^kDgL1H`e@+BNfDS3ZNs22y8j*Q}(HSNCGj~~! z2m(5NAS#(uA2klsoZk0^qEb%JN1}pi9YMw>di%Ovb&BQ=FL}9Beov96{M3koZ5oZz z+K#kS&p*PT>P;!5A6a8UiTPqo`AnirFT?#;g;Bp1^NA|e>%u)OFGeMrzN!za&wazS zcM2*~F;9RSB|L4k1G0!NeMA_Gqm-)ol`7Olit`uhXogCTB&qOAr%-vx_VEFEgyl+; zkO^x(x|j|6)#0k^55~^wMq|4bAqiGH5NI%_`ii%fb_YklZG5u3!@l1&Q`Uq^0nUef zsC$(4P|xN*JA8rg22oShO@On^jz86l=?8yFb2)I_9*Li8`p* z;V1*Eg9P^O-u6=s?#bo=wNk$euTdpO8Kr-gv2Ht#&Gb|nB~a?oqwFp~_$DmRvgx!` zxd-f&%`jK*NEh6cr9hs8VPdvuI+@3}5eFeUS@ejjG)j;BKhWI6d;fwzePt{Le^ zzMg?P07y>3gH59tNyfBKtr=BRSMg?2d^7nl8CaNh-sRbd_ zcGV%wT)WTCy2V$ruLXITNLZDpdS{LP)-c5QAQ(;W*Z2xZgH9$0Jq0SmL3s1nTx%01 zF!85ToejqcZo*>^r|Q#RoW$|Ekme}S5s@N;2lj)d0`zj?SL$s%Z>ma1y?I2BPcYQu zIgThaij;p9W~VHXI-J1g5Dl=Kdl)7PKKve*qc=NfJwK1|c_3rTSckINaW7^`%6{;_ z0G|LnA)+NXfoeoY#RJIb(c$oIJSNw<7+Uh)Wc;vqPJdyThclh9tbKi9QQO5*Rm^D5 zRFc1#pMOw5$iG~`;|&T`rplufC8-@OZ2M^6(7^u>ViYVeMI289MRet0id>CM0-7Ee zh#&ra))>;U3ZP<@N~)vNhmC7fM)&WHzwjhcq9u5NSb~PdFdFr5LwSFX*?*q;d-DNy z-xBPXcyy#Pa6A3$Hx7}=e^>I)%LSex9lHSgq+-KNyfTS;mppIcsW|_g5C}eH_vP0Y z@Oa^0{_(I)N)m~KA+Ig`v)8x(9RfmTT}K1cN!D#(6fe#CCkZbAq zm6IYKXaI-!B=1*!u=D@0Qkam}S%CcpCN2)8wqVmHWK2?qlK)OT;Da`RhYG-%84VvB zExjnDpoaJ~?c06O_y3-UfxNB+u;iqS4~tR}Q!WYwg?Iix(A9@2_@mY>^q)>1kn8@aT zKNj$T7XU7}`HOJ7ZDgtrL*Rv!8b93J6eU`lYx9mx~Dx<oTCtnl&chdgI_Hq6o&AzbAGWpG5!vPb_!c<8AvosLvg#(=9l79a$opXpmc(ZB5BA)R7VZ;CL zlMLt-CL$q0O=A!@ISv4afKd1;v4g0alrUD){Z78SyKBG2>$VdbddK8wkyDL}?EwXY zgshd!1TQghKnr{}fPFDfEF(rR*ea1b(AB+XUzrDFIb{&boj1}Vs@ zKUMv$Os9+_FzAM}Yj`E%7md38^&pjwTJES4ne@+c3{=!;a3~>V{089HuV1%sPa2*T z-d~AfKTX>4o;!1E-aYM)e)HjzV5HM2&6{su@)UyHZc0o#`wyjh$pTuAhR>Q-!ZvC! zm?sUMY-f=k&mUs2+smEH65W9r6im*tV$?k>);~RSzTN^CAlTV#k`ttzOg07wMU=CW zDHRd<`1r6-DKsZ?Ug(-Z-7XHf?Ck6iJ#Ph7%2kLb+ipM0JZ~H0ar=^VS-QVWF3sO& z^q*ANbq^fUtmM=q7X@LTepC)l9)6ZBEW{L2(6y{#)(=}kO> zgr1k5^%2jL7*Se}Uy3vy&OEJ>PHfX?w4sG_JZU#Pm$Zm$-~=LRBk3?4N%`FnhW2hV z^bI}&f}T;e`l*u{V6-meLbBO@U_Z`4lxh}cwp~mOr?YPj6-lSfS6O2EqxtDiJ&~sn z6}d}=%lD2dQ!TQvtybGuIh!w$Z`{YgpTG$e5`=6!2}9@G?+6VO+hDUo5+U)u+!7^I zDUb17SnmZP@ed`Cj@+KWqmS*BQ4lz&-DSo_0Xn}sJLdm~A2~=2(EWI}+Vhe4Jg2r4 z7ZCBI!lMUE8842lpl>^nT+V)v&DRctYMn|X z+pV7unW)LK9WLgAEjLn zkWy2_U(nP^2aH{>USjIB+qx9_=_7(kq}^-VMSqi@1^2u%;_%h)f$LMN&l*=#2;hYFON-==R;^4MwITTqJ<(gv7o7h^%;0Sd-$%J&5lj0Nagb zh_&X6L9l}Y69GVof+;IumD=QK>r*j?=ho+#{*w_?eyb&BIt5xZl$Omo)N@d`r!a;STeo+HcEKni{nE^_+Dg>|Mooo zUDpg(xmZ?QV;Q^A(u0)C)%-{C>Y|Nb*;ByQ@g4)u!&j+P%IX%69+bjOAsLzIO+scz zj=(_h$usO%W=reHl(a>*j&Nq0Rkme%x-jpayTjDu)q~I4G07X#-zWR3dmfI>e9YD* z!d(8qY@ql%M2*=xpL6H^XoLy)w(XC>Xcj_Z{VOT% z1Xcwe4PFv{VmJopINa#PB`O8ismhT`DLw}GMJrPP#>)qYi@_;=ZiMp;n`fdnG3R+|kP!l*Rqah>-9M3a#5Z&UD{OSTG?+&p{ke|7pNwq|AT zU9$qPe--ni*?fsvcP2LSuHkpBpza%~7-Sx)63ATsM`qP$3#f(j^Zf*YVP0Z&AC2zS zGbJ4L+PPM1hidDyJFZ=mm}i&_g%KXriKuwuu>>$f(Tv2o zE>++`7(bT8d#dQPvOX5nCoiaL0*R+`xJ%YpNHRL8DrV?Dv_cLU9tqCa-}9@q(cE2^ zZhtY_1(m60!HL}WX{CQRdG#VZ7LIN|Uu}bsqKv|w&zoT_Q_e4KVBo2sbs&qXsH7YX zkBONVIxdvwn_uFsCUG54rTWBR$1tyD(Iqa{Y;0u2co=iFdYw57ySU+XZ#ZnGZ<+AB zd?-evm^Kq_QY_!AWzvSdP&MlNF!9YBI$5Q~xy|Z6^t#hS_MyXBDDj;8pHV@Grqae7 zx5o2Wz)t~uM$4@3*Ue4driB!4HL%Cs8+pUm;A97!+vOlG-PkwZi*9yNZFAh;H5Eft z{QM+<^JJ619a}+W!(XyS@bi^&gJ06IdgNe`M>0-9G_+$^dKo8_?cj=d{$}A~ozqwg?^m@>v ztIYLt{g&=Jq;>3@d%fd)gDgriWaK%75BAHM!?~|P140HA5u-P2pNcCdM9+%6ybSVD z-gy39HlKd^uHy6Ogo1D=mA~aoMS=vNY?$~r#{ts*zYxL2r@!uHAnjhhE5B3fua6(l z)hoT$k%Cm#84qpy_OW9_+865li^0+PTf<05^7|t0)Kp>&vn7X3tfRO(4X8Z6?cE`J zn)y#WI#8@wAqCO96SfD;>pjl0bD}2^M&Y{{lbO5KIl7bN%)$UI2&`2aM$2q3^UdX< z&;=KnGzQ%}nLrss$))oW=57VxHswZt-Uxw`T4UsQt3^g5fZRog7o~$P)Ya8ho~c7$ zKiNs7L<8e^C^5hz+(IY1-*q~NyCz7N@>Fx#4BoA98H(t|eE*@LBkvP?H;RVwem@$R z`Ao9gzpF(9NAu&=ixEuD%*~ab9M|Vyn<;~xu)G?9k&_3slbYj2bQO-oT8$H3?9dYC zEF>OE02~h@AwKX1^9RIJUf7hTHKQV97Z(YdtuXy7d^IZ|wWVYw2f0;kVy<>InY^@+F1A{kGq&@vS1dP0=yv@nE3CGsB{hkvkX?&#X z!B+|}QHb;a5#%*T^A9$tQAn*u4{9=#O^)n+xmp*%RBN^Z-&Fr=jFlQ)hG;k%ub7k3 z^mA1S&vYXvS^@~whKtSlPgM#sI00#`iy!K9_lXYV_cV}l1wkh)o}LX(OERI-f{nk0 zb!lu2@_IRg(Fuj6EJQmsXk_V*wE2Q|a>=C<-2UU;@AB$a^O<8Kw#jlq;LcLjc~fwT zU+3z^5}(%^)4$XIVZZAW`?n;l`R9~bvh#Gm*ggVU#KcndmS(*aQjIEN+|uXX6iV}_ z30g37moBEOn{7d)5)`3!r;l#?oJ}q=cUyCXi_FyD#^t!}kyNQVMUMH8+&+i2@aVMW zha1MIr)@WfXF1EdwTpaOEuX+76u-+t+EndXuO$E)BR^nX9t5*jS?_pcwb-9L_Ky-p zA@i8a9d-UAyO=_HbEP2pwgn)k-l_U@He=ZDO%l!A2te5)bC(M(QpPG9r;K{IFUsVr z{1vI^MnAtnAf{)A46V3`Ia8m3&L_(3_+Ft{XQgtN{TihXeGC{%EF@77G!~CRYe2?F z>}*d~iFn@WPBAe)(VP}&8GFB} zPP@D3!6`L3LwwTZAmb567Wl&az1=+pA{Mm#{HK_Kvds*m(3?BT`lN6FlAp zkx`}A01VM*=Y+*5c#%u%T*I8V06ijPkyq=9644$13khzBnsDSWv)S~Cuo{?oB_B#A zKfhS#bAdyIubCzC)JY-P*k3Z|(^I>QC;A;tcQHPrLqc-sQ;{sl{*J8^iZGOH%sJ{5 zp&uVMY5_?oqbxXmpZp}u_R6gfBC>qvD+xxgDnA=LbqoL1E#UsB65$jg*yD7caQeN26g&aE zW~7qW7#@m$*@)o%fBY|^C|Hg!0V~AskH0{Xcq<%~>iXF-W9}KcQFB>ns!N`zg@s`s za=k+yE)2aT%_^JmPIsBfK2B|CZJZ%$PzEdNNVBzH_~yIpcF7j?T zA=^_goA**ky|(My!e^&N#qhdsBukl&BU)W~s0&#^W@zx!lYX|!)zdf@YMgb&zw$+I zP*~;T{%FYMzz>LNIP&!Rk`j0m3%UY z0W0F9cgQW8&;0f^u3II4BA{lr{{gdsGB>6vx$4}Jb%Iv%12Xf8>J57?yM9xfF94%91;6~q9dSv6L0-?iZp7XFOs zH-Lj@7q-53-{NyC%+C}yX9)FL=8)Tw#O%3S9U;Vz7jwtC!|%e)rEt6*#1q&fSVXs~ z1S1~yr~}}9-Pirs>j9r`WyE0E{Z)IQvx1F0O;1sUsgley9QFPg8Q6BlcWoMAa-EmUHdEB;= zGaT`)R^?O*x7^2#`}R*|Q_=jqOy`#F!v?A?%GZE=RcN#TY%08?*;wVv(xb+9i0kpXi;;yo*~GS=6iQ zFi1;Cj^IA~z8aoU#aVlm!4-@WSV-dhClVFFBfV{}!8C?`Gsbr1R%JkSO6h1G;Iwog zZiQ0i>Kvlf%842k`#f+qmBU-Jo-OD}pI^vzZ!AMDgVJlI-DDlg-Qm`(K03n}V$zyP zVdmCRyadbX;K9Mqzr}JxKHtH{Jk89M>Vd-vosxoFUp=#X+MUdX2)}~_m^#{rr_+I! zA5#T|iE8TO{~J%zl_(b42=&&43L4ftuG8H(Q-0Y}Ois zyP=@pVFi_l{EHg&mWIg2b@Bh~b+A7Pa#d=0;o1^qw1$ralwa#v0b6yF8?ikvsGdm= ziMLJd-+=nu~!#_$+!N;M{zY)ZPYt)P;}88QM+s=t=mzix7;IHGVOxa>oA(j`^pg~o6R8$52>ky5F&Npr literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Angular/assets/payment-link.png b/docusaurus/docs/Angular/assets/payment-link.png new file mode 100644 index 0000000000000000000000000000000000000000..ebf7193ad833ba58df4d0ea7c06da2c6b4f46eb1 GIT binary patch literal 24171 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 literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Angular/assets/payment-preview.png b/docusaurus/docs/Angular/assets/payment-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..9acc104e72037d617517ec8b9e13a3ad3b32db20 GIT binary patch literal 46032 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 W7Gcng@=NC)@B + +This guide will show you how to create custom attachments. In the example, we'll allow users to make payment links to send money to each other, but the same logic works for any attachment. + +## Creating the attachment + +Let's add a button to the message input component to make a payment link. How we create the attachment doesn't matter; the important part is to create an `Attachment` object we can provide to the [`AttachmentService`](../../services/AttachmentService). + +```html showLineNumbers + + + + +``` + +```typescript showLineNumbers {18-22} +// Optionally, you can define the shape of your custom attachments to get proper compile checks +type MyGenerics = DefaultStreamChatGenerics & { + attachmentType: { + type: 'custom'; + subtype: 'payment'; + value: string; + paymentLink: string; + }; +}; + +createPaymentLink(attachmentService: AttachmentService) { + const attachment: Attachment = { + type: 'custom', + subtype: 'payment', + value: `${Math.ceil(Math.random() * 99)}$`, + paymentLink: 'pay/me/or/else', + }; + // Insert the attachment to the list of custom attachments + attachmentService.customAttachments$.next([ + ...attachmentService.customAttachments$.value, + attachment, + ]); +} +``` + + + +Clicking the "Payment link" will add the attachment to the message, but we don't yet have any visual indicator of this. + +## Custom attachment preview + +Let's add a preview of the payment attachment. + +To do this, we define the HTML template code for the preview that uses the `AttachmentService` to display the previews of the custom attachments: + +```html showLineNumbers + +
+ + + +
+
+``` + +If you have multiple different types of custom attachments, you can display them all here. + +Next, we register the template for the `customAttachmentPreviewListTemplate$` field of the [`CustomTemplatesService`](../../services/CustomTemplatesService): + +```typescript showLineNumbers {8-10} +export class AppComponent implements AfterViewInit { + @ViewChild("customAttachmentPreviews") + customAttachmentPreviewsTemplate!: TemplateRef; + + constructor(private customTemplateService: CustomTemplatesService) {} + + ngAfterViewInit(): void { + this.customTemplateService.customAttachmentPreviewListTemplate$.next( + this.customAttachmentPreviewsTemplate + ); + } +} +``` + +If we click the "Payment link" button, the preview is now visible: + + + +## Delete attachment preview + +Let's allow deleting a payment link by extending the template of the preview: + +```html showLineNumbers {10-11} + +
+ + + +
+
+``` + +This is the implementation of the delete payment attachment method: + +```typescript showLineNumbers {5-8} +deletePaymentLink( + attachment: Attachment, + attachmentService: AttachmentService +) { + attachmentService.customAttachments$.next( + attachmentService.customAttachments$.value.filter( + (a) => a.paymentLink !== attachment.paymentLink + ) + ); +} +``` + +## Loading state + +Sometimes, creating attachments happens asynchronously. If that's the case, you should disable message sending while the attachment is processing. + +Here is how you can do that by extending the `createPaymentLink` method: + +```typescript showLineNumbers {2-5,23-26} +async createPaymentLink(attachmentService: AttachmentService) { + // Increment the upload counter to disable message send + attachmentService.attachmentUploadInProgressCounter$.next( + attachmentService.attachmentUploadInProgressCounter$.value + 1 + ); + const attachment: Attachment = { + type: 'custom', + subtype: 'payment', + value: `${Math.ceil(Math.random() * 99)}$`, + paymentLink: '', + }; + // simulate network call + await new Promise((resolve) => { + setTimeout(() => { + attachment.paymentLink = 'pay/me/or/else'; + resolve(); + }, 2000); + }); + attachmentService.customAttachments$.next([ + ...attachmentService.customAttachments$.value, + attachment, + ]); + // Attachment is ready, decrease the upload counter + attachmentService.attachmentUploadInProgressCounter$.next( + attachmentService.attachmentUploadInProgressCounter$.value - 1 + ); + } +``` + +## Custom attachment inside the message list + +The last missing step is to display the payment link inside the message list. This will be very similar to how we created the attachment preview. + +First, let's define an HTML template: + +```html showLineNumbers + +
+ +``` + +The `attachments` template variable will contain the list of custom attachments. + +:::note +By default the SDK will treat all `image`, `file`, `giphy`, `video` and `voiceRecording` attachments as built-in. All other type of attachments are treated as custom attachments. + +If you want to change the filtering logic, provide your own implementation using the `filterCustomAttachment` method of the [`MessageService`](../../services/MessageService/#filtercustomattachment). +::: + +Next, we register the template for the `customAttachmentListTemplate$` field of the [`CustomTemplatesService`](../../services/CustomTemplatesService): + +```typescript showLineNumbers {8-10} +export class AppComponent implements AfterViewInit { + @ViewChild("customAttachments") + customAttachmentsTemplate!: TemplateRef; + + constructor(private customTemplateService: CustomTemplatesService) {} + + ngAfterViewInit(): void { + this.customTemplateService.customAttachmentListTemplate$.next( + this.customAttachmentsTemplate + ); + } +} +``` + +This is how the attachment looks like inside the message list: + + + +If you need reference to the message ID (and parent message ID for thread replies) the attachments belong to, this is how you can access them: + +```html showLineNumbers {4-5} + +
+ {{ messageId }} {{ parentMessageId }} {{ attachment | json }} +
+
+``` diff --git a/docusaurus/docs/Angular/components/AttachmentListComponent.mdx b/docusaurus/docs/Angular/components/AttachmentListComponent.mdx index ed212008..309ee29f 100644 --- a/docusaurus/docs/Angular/components/AttachmentListComponent.mdx +++ b/docusaurus/docs/Angular/components/AttachmentListComponent.mdx @@ -1,25 +1,12 @@ -import AttachmentsScreenshot from "../assets/attachments-screenshot.png"; -import VoiceRecordingScreenshot from "../assets/voice-recording-screenshot.png"; import ImageSizingScreenshot1 from "../assets/image-sizing-screenshot-1.png"; import ImageSizingScreenshot2 from "../assets/image-sizing-screenshot-2.png"; import ImageSizingScreenshot3 from "../assets/image-sizing-screenshot-3.png"; import AttachmentSizeWarning from "../assets/attachment-size-warning.png"; +import SupportedAttachments from "../_common/supported-attachments.mdx"; The `AttachmentList` component displays the attachments of a message. The following attachments are supported: -- Images (including GIFs) are displayed inline -- Videos are displayed inline -- Voice recordings are displayed inline (the Angular SDK doesn't support recording, only playback) -- Other files can be downloaded -- Links in a message are enriched with built-in open graph URL scraping - -**Example 1** - different type of attachments: - - - -**Example 2** - voice recording: - - + ## Basic Usage @@ -122,7 +109,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/c4925a571484c046f73b9e63286a2e64380af0c6/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:44](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L44) --- @@ -134,7 +121,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/c4925a571484c046f73b9e63286a2e64380af0c6/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:48](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L48) --- @@ -146,7 +133,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/c4925a571484c046f73b9e63286a2e64380af0c6/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:52](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L52) --- @@ -158,6 +145,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/c4925a571484c046f73b9e63286a2e64380af0c6/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:56](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts#L56) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/AttachmentPreviewListComponent.mdx b/docusaurus/docs/Angular/components/AttachmentPreviewListComponent.mdx index 3fc748a9..28186a7e 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/c4925a571484c046f73b9e63286a2e64380af0c6/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:28](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L28) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/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:32](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L32) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/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:36](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts#L36) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/AutocompleteTextareaComponent.mdx b/docusaurus/docs/Angular/components/AutocompleteTextareaComponent.mdx index 4a17a50c..526a3129 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 16de5550..fce5494c 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 b5f30ff9..8356d1f1 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 090a41fd..511f3107 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 7cc5cb57..f32795f6 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:39](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/icon/icon.component.ts#L39) +[projects/stream-chat-angular/src/lib/icon/icon.component.ts:39](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 f66b7fe9..e6ef2452 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/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) +[projects/stream-chat-angular/src/lib/icon/icon-placeholder/icon-placeholder.component.ts:18](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 a2c194d2..77838759 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 e7871d5a..a78ab288 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 9ff99e01..c7a651c0 100644 --- a/docusaurus/docs/Angular/components/MessageInputComponent.mdx +++ b/docusaurus/docs/Angular/components/MessageInputComponent.mdx @@ -72,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:64](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L64) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:64](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L64) --- @@ -84,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:68](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L68) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:68](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L68) --- @@ -96,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:72](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L72) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:72](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L72) --- @@ -108,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:76](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L76) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:76](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L76) --- @@ -120,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:80](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L80) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:80](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L80) --- @@ -132,7 +132,7 @@ The message to edit #### Defined in -[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) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:84](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L84) --- @@ -144,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:88](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L88) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:88](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L88) --- @@ -156,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:92](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L92) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:92](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L92) --- @@ -168,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:96](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L96) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:96](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L96) --- @@ -182,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:102](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L102) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:102](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L102) --- @@ -194,7 +194,7 @@ 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:106](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L106) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:106](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L106) --- @@ -206,7 +206,7 @@ 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) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:110](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L110) --- @@ -218,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:114](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input.component.ts#L114) +[projects/stream-chat-angular/src/lib/message-input/message-input.component.ts:114](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 7a936cac..5f7e6cf5 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:63](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L63) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:63](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:67](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L67) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:67](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:72](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L72) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:72](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:76](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L76) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:76](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:80](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L80) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:80](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:84](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L84) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:84](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:88](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L88) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:88](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:95](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L95) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:95](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:99](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-list/message-list.component.ts#L99) +[projects/stream-chat-angular/src/lib/message-list/message-list.component.ts:99](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 d1e78d4a..eee6edbc 100644 --- a/docusaurus/docs/Angular/components/MessageReactionsComponent.mdx +++ b/docusaurus/docs/Angular/components/MessageReactionsComponent.mdx @@ -53,7 +53,7 @@ The id of the message the reactions belong to #### Defined in -[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) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:36](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L36) --- @@ -65,7 +65,7 @@ The number of reactions grouped by [reaction types](https://github.com/GetStream #### 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) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:40](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L40) --- @@ -81,7 +81,7 @@ use `messageReactionGroups` #### Defined in -[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) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:47](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L47) --- @@ -97,7 +97,7 @@ you can fetch the reactions using [`messageReactionsService.queryReactions()`](h #### Defined in -[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) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:53](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L53) --- @@ -109,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:57](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts#L57) +[projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts:57](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 9214ea13..46dc8c12 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 520c891a..5aabe950 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 1e760ad4..a54fdae4 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 accfa433..616af15b 100644 --- a/docusaurus/docs/Angular/components/PaginatedListComponent.mdx +++ b/docusaurus/docs/Angular/components/PaginatedListComponent.mdx @@ -35,7 +35,7 @@ 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) +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:28](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L28) --- @@ -47,7 +47,7 @@ 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) +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:32](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L32) --- @@ -59,7 +59,7 @@ 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) +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:36](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L36) --- @@ -73,7 +73,7 @@ The `trackBy` to use with the `NgFor` directive #### 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) +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:42](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts#L42) --- @@ -87,6 +87,6 @@ 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) +[projects/stream-chat-angular/src/lib/paginated-list/paginated-list.component.ts:49](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 c82cdb17..8f6efc53 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 385e2b65..10adc55b 100644 --- a/docusaurus/docs/Angular/components/UserListComponent.mdx +++ b/docusaurus/docs/Angular/components/UserListComponent.mdx @@ -29,7 +29,7 @@ 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) +[projects/stream-chat-angular/src/lib/user-list/user-list.component.ts:17](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/user-list/user-list.component.ts#L17) --- @@ -41,7 +41,7 @@ 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) +[projects/stream-chat-angular/src/lib/user-list/user-list.component.ts:21](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/user-list/user-list.component.ts#L21) --- @@ -53,7 +53,7 @@ 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) +[projects/stream-chat-angular/src/lib/user-list/user-list.component.ts:25](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/user-list/user-list.component.ts#L25) --- @@ -67,6 +67,6 @@ 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) +[projects/stream-chat-angular/src/lib/user-list/user-list.component.ts:31](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/user-list/user-list.component.ts#L31) [//]: # "End of generated content" diff --git a/docusaurus/docs/Angular/components/VoiceRecordingComponent.mdx b/docusaurus/docs/Angular/components/VoiceRecordingComponent.mdx index b1295cae..33bc2543 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:29](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts#L29) +[projects/stream-chat-angular/src/lib/voice-recording/voice-recording.component.ts:29](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 e6f56be5..4593d1b5 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: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) +[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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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: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) +[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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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: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) +[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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 index 00dda070..d2986cd0 100644 --- a/docusaurus/docs/Angular/services/AmplitudeRecorderService.mdx +++ b/docusaurus/docs/Angular/services/AmplitudeRecorderService.mdx @@ -16,7 +16,7 @@ The recorded amplitudes #### 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) +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:76](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L76) ## Methods @@ -32,7 +32,7 @@ Temporarily pause amplitude recording, recording can be resumed with `resume` #### 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) +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:96](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L96) --- @@ -48,7 +48,7 @@ Resume amplited recording after it was pasued #### 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) +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:104](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L104) --- @@ -70,7 +70,7 @@ Start amplitude recording for the given media stream #### 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) +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:84](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts#L84) --- @@ -86,4 +86,4 @@ Stop the amplitude recording and frees up used resources #### 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) +[projects/stream-chat-angular/src/lib/voice-recorder/amplitude-recorder.service.ts:129](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 17c34680..fdcd0d67 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 93981cba..9d653f75 100644 --- a/docusaurus/docs/Angular/services/AttachmentService.mdx +++ b/docusaurus/docs/Angular/services/AttachmentService.mdx @@ -14,13 +14,17 @@ You can read more about [uploads](https://getstream.io/chat/docs/javascript/file ### attachmentUploadInProgressCounter$ -• **attachmentUploadInProgressCounter$**: `Observable`\<`number`\> +• **attachmentUploadInProgressCounter$**: `BehaviorSubject`\<`number`\> Emits the number of uploads in progress. +You can increment and decrement this counter if you're using custom attachments and want to disable message sending until all attachments are uploaded. + +The SDK will handle updating this counter for built-in attachments, but for custom attachments you should take care of this. + #### Defined in -[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) +[projects/stream-chat-angular/src/lib/attachment.service.ts:34](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L34) --- @@ -32,7 +36,21 @@ Emits the state of the uploads ([`AttachmentUpload[]`](https://github.com/GetStr #### Defined in -[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) +[projects/stream-chat-angular/src/lib/attachment.service.ts:38](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L38) + +--- + +### customAttachments$ + +• **customAttachments$**: `BehaviorSubject`\<`Attachment`\<`T`\>[]\> + +You can get and set the list if uploaded custom attachments + +By default the SDK components won't display these, but you can provide your own `customAttachmentPreviewListTemplate$` and `customAttachmentListTemplate$` for the [`CustomTemplatesService`](../../services/CustomTemplatesService). + +#### Defined in + +[projects/stream-chat-angular/src/lib/attachment.service.ts:44](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L44) ## Methods @@ -56,7 +74,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:157](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L157) +[projects/stream-chat-angular/src/lib/attachment.service.ts:166](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L166) --- @@ -78,7 +96,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:246](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L246) +[projects/stream-chat-angular/src/lib/attachment.service.ts:256](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L256) --- @@ -100,7 +118,7 @@ Deletes an attachment, the attachment can have any state (`error`, `uploading` o #### Defined in -[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) +[projects/stream-chat-angular/src/lib/attachment.service.ts:191](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L191) --- @@ -124,7 +142,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:99](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L99) +[projects/stream-chat-angular/src/lib/attachment.service.ts:108](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L108) --- @@ -142,7 +160,7 @@ the attachments #### Defined in -[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) +[projects/stream-chat-angular/src/lib/attachment.service.ts:221](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L221) --- @@ -158,7 +176,7 @@ Resets the attachments uploads (for example after the message with the attachmen #### Defined in -[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) +[projects/stream-chat-angular/src/lib/attachment.service.ts:65](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L65) --- @@ -182,7 +200,7 @@ A promise with the result #### Defined in -[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) +[projects/stream-chat-angular/src/lib/attachment.service.ts:176](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L176) --- @@ -206,4 +224,4 @@ 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:66](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/attachment.service.ts#L66) +[projects/stream-chat-angular/src/lib/attachment.service.ts:75](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/attachment.service.ts#L75) diff --git a/docusaurus/docs/Angular/services/AudioRecorderService.mdx b/docusaurus/docs/Angular/services/AudioRecorderService.mdx index d1479ed6..4b36566d 100644 --- a/docusaurus/docs/Angular/services/AudioRecorderService.mdx +++ b/docusaurus/docs/Angular/services/AudioRecorderService.mdx @@ -25,7 +25,7 @@ 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) +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:24](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L24) ## Methods @@ -45,7 +45,7 @@ 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) +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:62](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L62) --- @@ -65,7 +65,7 @@ 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) +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:73](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L73) --- @@ -85,7 +85,7 @@ 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) +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:49](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts#L49) --- @@ -114,4 +114,4 @@ 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) +[projects/stream-chat-angular/src/lib/voice-recorder/audio-recorder.service.ts:87](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 401c59d5..b52bbbd2 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L596) --- @@ -1007,7 +1007,7 @@ use [`messageReactionsService.queryReactions()`](https://getstream.io/chat/docs/ #### Defined in -[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) +[projects/stream-chat-angular/src/lib/channel.service.ts:1643](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1643) --- @@ -1034,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L730) --- @@ -1061,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L766) --- @@ -1084,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1263) --- @@ -1100,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L796) --- @@ -1122,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L658) --- @@ -1144,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L697) --- @@ -1168,7 +1168,7 @@ the result of the request #### Defined in -[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) +[projects/stream-chat-angular/src/lib/channel.service.ts:1676](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1676) --- @@ -1190,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1299) --- @@ -1211,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1143) --- @@ -1234,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L822) --- @@ -1256,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L876) --- @@ -1272,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L780) --- @@ -1294,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1122) --- @@ -1318,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1085) --- @@ -1345,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L837) --- @@ -1368,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L563) --- @@ -1391,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L623) --- @@ -1413,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1595) --- @@ -1435,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1604) --- @@ -1457,7 +1457,7 @@ 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L1318) --- @@ -1479,7 +1479,7 @@ Updates the message in the active channel #### Defined in -[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) +[projects/stream-chat-angular/src/lib/channel.service.ts:893](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/channel.service.ts#L893) --- @@ -1503,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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 7a610f46..ba76f4f7 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:226](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L226) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:226](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:188](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L188) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:188](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:217](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L217) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:217](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:198](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/chat-client.service.ts#L198) +[projects/stream-chat-angular/src/lib/chat-client.service.ts:198](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 3886bd43..4070a8a3 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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L276) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:278](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L278) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L109) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:111](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L111) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L116) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:118](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L118) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L123) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:125](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L125) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L270) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:272](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L272) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L102) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:104](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L104) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L227) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:229](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L229) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L329) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:331](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L331) --- @@ -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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L67) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:69](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L69) --- @@ -130,7 +130,31 @@ 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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L60) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:62](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L62) + +--- + +### customAttachmentListTemplate$ + +• **customAttachmentListTemplate$**: `BehaviorSubject`\<`undefined` \| `TemplateRef`\<`CustomAttachmentListContext`\>\> + +The template used to display custom attachments in the [message component](../../components/MessageComponent.mdx) + +#### Defined in + +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:343](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L343) + +--- + +### customAttachmentPreviewListTemplate$ + +• **customAttachmentPreviewListTemplate$**: `BehaviorSubject`\<`undefined` \| `TemplateRef`\<`CustomAttachmentPreviewListContext`\>\> + +The template used to display custom attachment previews in the [message input component](../../components/MessageInputComponent.mdx) + +#### Defined in + +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:337](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L337) --- @@ -142,7 +166,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L234) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:236](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L236) --- @@ -154,7 +178,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L220) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:222](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L222) --- @@ -166,7 +190,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L288) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:290](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L290) --- @@ -180,7 +204,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L195) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:197](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L197) --- @@ -192,7 +216,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L81) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:83](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L83) --- @@ -204,7 +228,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L310) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:312](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L312) --- @@ -216,7 +240,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L316) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:318](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L318) --- @@ -228,7 +252,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L264) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:266](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L266) --- @@ -240,7 +264,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L258) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:260](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L260) --- @@ -252,7 +276,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L130) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:132](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L132) --- @@ -264,7 +288,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L240) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:242](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L242) --- @@ -276,7 +300,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L137) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:139](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L139) --- @@ -288,7 +312,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L54) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:56](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L56) --- @@ -300,7 +324,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L74) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:76](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L76) --- @@ -312,7 +336,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L151) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:153](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L153) --- @@ -324,7 +348,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L144) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:146](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L146) --- @@ -336,7 +360,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L322) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:324](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L324) --- @@ -348,7 +372,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L165) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:167](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L167) --- @@ -360,7 +384,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L158) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:160](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L160) --- @@ -372,7 +396,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L95) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:97](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L97) --- @@ -384,7 +408,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L172) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:174](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L174) --- @@ -398,7 +422,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L296) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:298](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L298) --- @@ -412,7 +436,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L304) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:306](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L306) --- @@ -424,7 +448,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L179) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:181](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L181) --- @@ -438,7 +462,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L213) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:215](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L215) --- @@ -452,7 +476,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L204) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:206](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L206) --- @@ -464,7 +488,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L282) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:284](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L284) --- @@ -476,7 +500,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L186) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:188](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L188) --- @@ -488,7 +512,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L88) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:90](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L90) --- @@ -500,7 +524,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L252) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:254](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L254) --- @@ -512,4 +536,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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L246) +[projects/stream-chat-angular/src/lib/custom-templates.service.ts:248](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/custom-templates.service.ts#L248) diff --git a/docusaurus/docs/Angular/services/DateParserService.mdx b/docusaurus/docs/Angular/services/DateParserService.mdx index ebcd547f..0a861ee0 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 8623f9c7..4c9ce3b2 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 73182f55..21e6afc4 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 a991c948..11d7d13e 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:29](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L29) +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:29](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L21) --- @@ -60,7 +60,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-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) +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:25](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts#L25) --- @@ -73,4 +73,4 @@ If `false`, the recording will added to the attachment preview, and users can co #### 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) +[projects/stream-chat-angular/src/lib/message-input/message-input-config.service.ts:34](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 14cfa6e7..31c39dcb 100644 --- a/docusaurus/docs/Angular/services/MessageReactionsService.mdx +++ b/docusaurus/docs/Angular/services/MessageReactionsService.mdx @@ -28,7 +28,7 @@ The event handler can retrieve all reactions of a message using the [`messageRea #### Defined in -[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) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:32](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:20](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L20) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:20](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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:49](https://github.com/GetStream/stream-chat-angular/blob/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L49) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:49](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L49) • `set` **reactions**(`reactions`): `void` @@ -76,7 +76,7 @@ Sets the enabled reactions #### Defined in -[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) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:42](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-reactions.service.ts#L42) ## Methods @@ -102,4 +102,4 @@ 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) +[projects/stream-chat-angular/src/lib/message-reactions.service.ts:60](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 005455dc..ff93df84 100644 --- a/docusaurus/docs/Angular/services/MessageService.mdx +++ b/docusaurus/docs/Angular/services/MessageService.mdx @@ -2,6 +2,12 @@ The message service contains configuration options related to displaying the message content +## Type parameters + +| Name | Type | +| :--- | :---------------------------------------------------------------- | +| `T` | extends `DefaultStreamChatGenerics` = `DefaultStreamChatGenerics` | + ## Properties ### customLinkRenderer @@ -26,13 +32,13 @@ 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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message.service.ts#L24) +[projects/stream-chat-angular/src/lib/message.service.ts:28](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message.service.ts#L28) --- ### displayAs -• **displayAs**: `"html"` | `"text"` = `'text'` +• **displayAs**: `"html"` \| `"text"` = `'text'` Decides if the message content should be formatted as text or HTML @@ -43,4 +49,58 @@ 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/c4925a571484c046f73b9e63286a2e64380af0c6/projects/stream-chat-angular/src/lib/message.service.ts#L17) +[projects/stream-chat-angular/src/lib/message.service.ts:21](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message.service.ts#L21) + +--- + +### filterCustomAttachment + +• `Optional` **filterCustomAttachment**: (`attachment`: `Attachment`\<`T`\>) => `boolean` + +The SDK supports the following attachment types: `image`, `file`, `giphy`, `video` and `voiceRecording` attachments. + +All other types are treated as custom attachments, however it's possible to override this logic, and provide a custom filtering method which can be used to treat some built-in attachments as custom. + +Provide a method which retruns `true` if an attachment should be considered as custom. + +#### Type declaration + +▸ (`attachment`): `boolean` + +##### Parameters + +| Name | Type | +| :----------- | :------------------ | +| `attachment` | `Attachment`\<`T`\> | + +##### Returns + +`boolean` + +#### Defined in + +[projects/stream-chat-angular/src/lib/message.service.ts:36](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message.service.ts#L36) + +## Methods + +### isCustomAttachment + +▸ **isCustomAttachment**(`attachment`): `boolean` + +Tells if an attachment is custom (you need to provide your own template to display them) or built-in (the SDK supports it out-of-the-box) + +#### Parameters + +| Name | Type | +| :----------- | :------------------ | +| `attachment` | `Attachment`\<`T`\> | + +#### Returns + +`boolean` + +`true` if the attachment is custom + +#### Defined in + +[projects/stream-chat-angular/src/lib/message.service.ts:45](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message.service.ts#L45) diff --git a/docusaurus/docs/Angular/services/NotificationService.mdx b/docusaurus/docs/Angular/services/NotificationService.mdx index e15c38dd..f825424d 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 f7383536..aa9303ac 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 cc567dad..4e2ad2cc 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 index 8e1283ac..f8538f30 100644 --- a/docusaurus/docs/Angular/services/TranscoderService.mdx +++ b/docusaurus/docs/Angular/services/TranscoderService.mdx @@ -8,16 +8,15 @@ If you want to use your own transcoder you can provide a `customTranscoder`. ### transcode -▸ **transcode**(`blob`, `options`): `Promise`<`Blob`\> +▸ **transcode**(`blob`): `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` | +| Name | Type | +| :----- | :----- | +| `blob` | `Blob` | #### Returns @@ -27,4 +26,4 @@ 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) +[projects/stream-chat-angular/src/lib/voice-recorder/transcoder.service.ts:63](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/voice-recorder/transcoder.service.ts#L63) diff --git a/docusaurus/docs/Angular/services/TransliterationService.mdx b/docusaurus/docs/Angular/services/TransliterationService.mdx index ec004153..ed6402f2 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 b34fba33..e2264d70 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 8cc76f6a..121ffd9f 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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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/c4925a571484c046f73b9e63286a2e64380af0c6/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/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 index c709229e..74598f01 100644 --- a/docusaurus/docs/Angular/services/VoiceRecorderService.mdx +++ b/docusaurus/docs/Angular/services/VoiceRecorderService.mdx @@ -12,7 +12,7 @@ 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) +[projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts:15](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts#L15) --- @@ -24,4 +24,4 @@ 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) +[projects/stream-chat-angular/src/lib/message-input/voice-recorder.service.ts:19](https://github.com/GetStream/stream-chat-angular/blob/233af9a28d1b6ecdfe793362d5f20b0e8b749c16/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 e629202b..e25ac13d 100644 --- a/docusaurus/docs/Angular/theming/component-variables.mdx +++ b/docusaurus/docs/Angular/theming/component-variables.mdx @@ -5,19 +5,6 @@ title: Component variables keywords: [v2, theme-v2, theming-v2, theming, component variables] --- -import SDKSpecific from "./SDKSpecific"; -import V2Warning from "./V2Warning"; - - - -:::info - - - -::: - - - CSS variables are the easiest way to customize the theme. The variables are organized into two layers: - Global @@ -32,35 +19,39 @@ Component variables can be further grouped in the following ways: You can find the list of components below: -| Component name | Variables | -| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `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) | +| Component name | Variables | +| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AttachmentList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/AttachmentList/AttachmentList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/AttachmentList/AttachmentList-layout.scss) | +| `AttachmentPreviewList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/AttachmentPreviewList/AttachmentPreviewList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/AttachmentPreviewList/AttachmentPreviewList-layout.scss) | +| `AudioRecorder` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/AudioRecorder/AudioRecorder-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/AudioRecorder/AudioRecorder-layout.scss) | +| `Autocomplete` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Autocomplete/Autocomplete-theme.scss) | +| `Avatar` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Avatar/Avatar-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Avatar/Avatar-layout.scss) | +| `Channel` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Channel/Channel-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Channel/Channel-layout.scss) | +| `ChannelHeader` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ChannelHeader/ChannelHeader-theme.scss) | +| `ChannelList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ChannelList/ChannelList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ChannelList/ChannelList-layout.scss) | +| `ChannelPreview` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ChannelPreview/ChannelPreview-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ChannelPreview/ChannelPreview-layout.scss) | +| `ChannelSearch` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ChannelSearch/ChannelSearch-theme.scss) | +| `ChatView` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ChatView/ChatView-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ChatView/ChatView-layout.scss) | +| `CircleFAButton` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/CircleFAButton/CircleFAButton-theme.scss) | +| `CTAButton` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/CTAButton/CTAButton-theme.scss) | +| `EditMessageForm` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/EditMessageForm/EditMessageForm-theme.scss) | +| `Icon` (Angular SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Icon/Icon-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Icon/Icon-layout.scss) | +| `ImageCarousel` (Angular SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ImageCarousel/ImageCarousel-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ImageCarousel/ImageCarousel-layout.scss) | +| `LoadingIndicator` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/LoadingIndicator/LoadingIndicator-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/LoadingIndicator/LoadingIndicator-layout.scss) | +| `Message` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Message/Message-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Message/Message-layout.scss) | +| `MessageActionsBox` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageActionsBox/MessageActionsBox-theme.scss) | +| `MessageBouncePrompt` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageBouncePrompt/MessageBouncePrompt-theme.scss) | +| `MessageInput` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageInput/MessageInput-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageInput/MessageInput-layout.scss) | +| `MessageList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageList/MessageList-theme.scss) | +| `MessageNotification` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageNotification/MessageNotification-theme.scss) | +| `MessageReactions` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageReactions/MessageReactions-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageReactions/MessageReactions-layout.scss) | +| `MessageReactionsSelector` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/MessageReactionsSelector/MessageReactionsSelector-theme.scss) | +| `Modal` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Modal/Modal-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Modal/Modal-layout.scss) | +| `Notification` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Notification/Notification-theme.scss) | +| `NotificationList` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/NotificationList/NotificationList-theme.scss) | +| `Thread` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Thread/Thread-theme.scss) | +| `ThreadList` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ThreadList/ThreadList-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/ThreadList/ThreadList-layout.scss) | +| `Tooltip` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/Tooltip/Tooltip-theme.scss) | +| `TypingIndicator` | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/TypingIndicator/TypingIndicator-theme.scss) | +| `UnreadCountBadge` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/UnreadCountBadge/UnreadCountBadge-theme.scss), [layout variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/src/v2/styles/UnreadCountBadge/UnreadCountBadge-layout.scss) | +| `VirtualizedMessageList` (React SDK only) | [theme variables](https://github.com/GetStream/stream-chat-css/tree/v5.1.0/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 fd206abd..434275a1 100644 --- a/docusaurus/docs/Angular/theming/global-variables.mdx +++ b/docusaurus/docs/Angular/theming/global-variables.mdx @@ -5,19 +5,6 @@ title: Global variables keywords: [v2, theme-v2, theming-v2, theming, global variables] --- -import SDKSpecific from "./SDKSpecific"; -import V2Warning from "./V2Warning"; - - - -:::info - - - -::: - - - CSS variables are the easiest way to customize the theme. The variables are organized into two layers: - Global @@ -27,8 +14,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.17.5/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/v5.1.0/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.17.5/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/v5.1.0/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/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.html b/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.html index 984f9015..cb95b589 100644 --- a/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.html +++ b/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.html @@ -1,4 +1,10 @@ -
+
@@ -414,6 +420,18 @@
+ + + { let component: AttachmentListComponent; @@ -50,6 +61,8 @@ describe('AttachmentListComponent', () => { { provide: ChannelService, useValue: { sendAction: sendAction } }, StreamI18nService, AttachmentConfigurationService, + CustomTemplatesService, + MessageService, ], imports: [TranslateModule.forRoot()], }).compileComponents(); @@ -174,6 +187,24 @@ describe('AttachmentListComponent', () => { expect(queryVideos().length).toBe(1); }); + it('should filter custom attachments', () => { + const messageService = TestBed.inject(MessageService); + messageService.filterCustomAttachment = (attachment: Attachment) => + !attachment.customLink; + const imageAttachment = { + type: 'image', + image_url: 'url/to/image', + }; + const customImageAttachment = { + type: 'image', + customLink: 'load/from/here', + }; + component.attachments = [imageAttachment, customImageAttachment]; + component.ngOnChanges({ attachments: {} as SimpleChange }); + + expect(component.orderedAttachments.length).toBe(1); + }); + it('should display voice recording', () => { component.attachments = [mockVoiceRecording]; component.ngOnChanges({ attachments: {} as SimpleChange }); @@ -558,6 +589,7 @@ describe('AttachmentListComponent', () => { const thumbUrl = 'https://getstream.io/images/og/OG_Home.png'; component.attachments = [ { + type: 'image', author_name: 'GetStream', image_url: undefined, og_scrape_url: 'https://getstream.io', @@ -603,6 +635,7 @@ describe('AttachmentListComponent', () => { thumb_url: 'https://getstream.io/images/og/OG_Home.png', title, title_link: '/', + type: 'image', }, ]; component.ngOnChanges({ attachments: {} as SimpleChange }); @@ -626,6 +659,7 @@ describe('AttachmentListComponent', () => { title: 'Stream', text, title_link: '/', + type: 'image', }, ]; component.ngOnChanges({ attachments: {} as SimpleChange }); @@ -641,6 +675,7 @@ describe('AttachmentListComponent', () => { const titleLink = 'https://getstream.io'; component.attachments = [ { + type: 'image', author_name: 'GetStream', image_url: undefined, og_scrape_url: 'https://getstream.io/home', @@ -668,6 +703,7 @@ describe('AttachmentListComponent', () => { title: 'Stream', text: 'Build scalable in-app chat or activity feeds in days. Product teams trust Stream to launch faster, iterate more often, and ship a better user experience.', title_link: undefined, + type: 'image', }, ]; component.ngOnChanges({ attachments: {} as SimpleChange }); @@ -1000,3 +1036,101 @@ describe('AttachmentListComponent', () => { expect(videoElements[0].poster).toContain(attachments[0].thumb_url); }); }); + +describe('AttachmentListComponent with custom attachments', () => { + @Component({ + selector: 'stream-test-component-attachment-list', + template: ` + +
+ + + +
+
`, + }) + class TestHostComponentAttachmentListComponent implements AfterViewInit { + @ViewChild('customAttachments') + template!: TemplateRef; + attachments: Attachment[] = []; + constructor(private customTemplatesService: CustomTemplatesService) {} + + ngAfterViewInit(): void { + this.customTemplatesService.customAttachmentListTemplate$.next( + this.template + ); + } + } + + let hostComponent: TestHostComponentAttachmentListComponent; + let hostFixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ + AttachmentListComponent, + TestHostComponentAttachmentListComponent, + ], + providers: [CustomTemplatesService], + }).compileComponents(); + + hostFixture = TestBed.createComponent( + TestHostComponentAttachmentListComponent + ); + hostComponent = hostFixture.componentInstance; + hostFixture.detectChanges(); + }); + + it('should display custom attachments', () => { + expect( + hostFixture.nativeElement.querySelectorAll('.payment-link').length + ).toBe(0); + + const customAttachment = { + type: 'custom', + subtype: 'payment', + value: '30$', + link: 'pay/me/or/else', + }; + hostComponent.attachments = [customAttachment]; + hostFixture.detectChanges(); + + expect( + hostFixture.nativeElement.querySelectorAll('.payment-link').length + ).toBe(1); + }); + + it(`shouldn't display attachments if no template is provided`, () => { + const customTemplatesService = TestBed.inject(CustomTemplatesService); + customTemplatesService.customAttachmentListTemplate$.next(undefined); + + const customAttachment = { + type: 'custom', + subtype: 'payment', + value: '30$', + link: 'pay/me/or/else', + }; + hostComponent.attachments = [customAttachment]; + hostFixture.detectChanges(); + + expect( + hostFixture.nativeElement.querySelector('.str-chat__attachment-list') + ).toBeNull(); + }); + + it(`shouldn't display attachments if there are no attachments`, () => { + expect( + hostFixture.nativeElement.querySelector('.str-chat__attachment-list') + ).toBeNull(); + }); +}); diff --git a/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts b/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts index c83410a5..3ce94f68 100644 --- a/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts +++ b/projects/stream-chat-angular/src/lib/attachment-list/attachment-list.component.ts @@ -4,6 +4,8 @@ import { HostBinding, Input, OnChanges, + OnDestroy, + OnInit, Output, SimpleChanges, TemplateRef, @@ -17,12 +19,15 @@ import { VideoAttachmentConfiguration, ImageAttachmentConfiguration, AttachmentContext, + CustomAttachmentListContext, } from '../types'; import prettybytes from 'pretty-bytes'; import { isImageAttachment } from '../is-image-attachment'; import { ChannelService } from '../channel.service'; import { CustomTemplatesService } from '../custom-templates.service'; import { AttachmentConfigurationService } from '../attachment-configuration.service'; +import { Subscription } from 'rxjs'; +import { MessageService } from '../message.service'; /** * The `AttachmentList` component displays the attachments of a message @@ -32,7 +37,7 @@ import { AttachmentConfigurationService } from '../attachment-configuration.serv templateUrl: './attachment-list.component.html', styles: [], }) -export class AttachmentListComponent implements OnChanges { +export class AttachmentListComponent implements OnChanges, OnInit, OnDestroy { /** * The id of the message the attachments belong to */ @@ -53,8 +58,10 @@ export class AttachmentListComponent implements OnChanges { >(); @HostBinding() class = 'str-chat__attachment-list-angular-host'; orderedAttachments: Attachment[] = []; + customAttachments: Attachment[] = []; imagesToView: Attachment[] = []; imagesToViewCurrentIndex = 0; + customAttachmentsTemplate?: TemplateRef; @ViewChild('modalContent', { static: true }) private modalContent!: TemplateRef; private attachmentConfigurations: Map< @@ -63,34 +70,58 @@ export class AttachmentListComponent implements OnChanges { | VideoAttachmentConfiguration | ImageAttachmentConfiguration > = new Map(); + private subscriptions: Subscription[] = []; constructor( public readonly customTemplatesService: CustomTemplatesService, private channelService: ChannelService, - private attachmentConfigurationService: AttachmentConfigurationService + private attachmentConfigurationService: AttachmentConfigurationService, + private messageService: MessageService ) {} + ngOnInit(): void { + this.subscriptions.push( + this.customTemplatesService.customAttachmentListTemplate$.subscribe( + (t) => (this.customAttachmentsTemplate = t) + ) + ); + } + ngOnChanges(changes: SimpleChanges): void { if (changes.attachments) { - const images = this.attachments.filter(this.isImage); + const builtInAttachments: Attachment[] = []; + const customAttachments: Attachment[] = []; + this.attachments.forEach((a) => { + if (this.messageService.isCustomAttachment(a)) { + customAttachments.push(a); + } else { + builtInAttachments.push(a); + } + }); + const images = builtInAttachments.filter(this.isImage); const containsGallery = images.length >= 2; this.orderedAttachments = [ ...(containsGallery ? this.createGallery(images) : images), - ...this.attachments.filter((a) => this.isVideo(a)), - ...this.attachments.filter((a) => this.isVoiceMessage(a)), - ...this.attachments.filter((a) => this.isFile(a)), + ...builtInAttachments.filter((a) => this.isVideo(a)), + ...builtInAttachments.filter((a) => this.isVoiceMessage(a)), + ...builtInAttachments.filter((a) => this.isFile(a)), ]; this.attachmentConfigurations = new Map(); // Display link attachments only if there are no other attachments // Giphy-s always sent without other attachments if (this.orderedAttachments.length === 0) { this.orderedAttachments.push( - ...this.attachments.filter((a) => this.isCard(a)) + ...builtInAttachments.filter((a) => this.isCard(a)) ); } + this.customAttachments = customAttachments; } } + ngOnDestroy(): void { + this.subscriptions.forEach((s) => s.unsubscribe()); + } + trackByUrl(_: number, attachment: Attachment) { return ( attachment.image_url || 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 5a0525d1..b72923ff 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 @@ -1,5 +1,8 @@
@@ -101,6 +104,14 @@ >
+ + +
diff --git a/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.spec.ts b/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.spec.ts index 32726c11..a52a47e7 100644 --- a/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.spec.ts +++ b/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.spec.ts @@ -1,8 +1,16 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { BehaviorSubject, Subject } from 'rxjs'; -import { AttachmentUpload } from '../types'; +import { AttachmentUpload, CustomAttachmentPreviewListContext } from '../types'; import { AttachmentPreviewListComponent } from './attachment-preview-list.component'; +import { + AfterViewInit, + Component, + TemplateRef, + ViewChild, +} from '@angular/core'; +import { CustomTemplatesService } from '../custom-templates.service'; +import { AttachmentService } from '../attachment.service'; describe('AttachmentPreviewListComponent', () => { let component: AttachmentPreviewListComponent; @@ -299,3 +307,96 @@ describe('AttachmentPreviewListComponent', () => { expect(queryPreviewFiles().length).toBe(1); }); }); + +describe('AttachmentPreviewListComponent with custom attachments', () => { + @Component({ + selector: 'stream-test-component', + template: ` + +
+ + + +
+
`, + }) + class TestHostComponent implements AfterViewInit { + @ViewChild('customAttachments') + template!: TemplateRef; + constructor(private customTemplatesService: CustomTemplatesService) {} + + ngAfterViewInit(): void { + this.customTemplatesService.customAttachmentPreviewListTemplate$.next( + this.template + ); + } + } + + let hostFixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [AttachmentPreviewListComponent, TestHostComponent], + providers: [AttachmentService, CustomTemplatesService], + }).compileComponents(); + + hostFixture = TestBed.createComponent(TestHostComponent); + hostFixture.detectChanges(); + }); + + it('should display custom attachments', () => { + expect( + hostFixture.nativeElement.querySelectorAll('.payment-link').length + ).toBe(0); + + const customAttachment = { + type: 'custom', + subtype: 'payment', + value: '30$', + link: 'pay/me/or/else', + }; + const attachmentService = TestBed.inject(AttachmentService); + attachmentService.customAttachments$.next([customAttachment]); + hostFixture.detectChanges(); + + expect( + hostFixture.nativeElement.querySelectorAll('.payment-link').length + ).toBe(1); + }); + + it(`shouldn't display attachments if no template is provided`, () => { + const customTemplatesService = TestBed.inject(CustomTemplatesService); + customTemplatesService.customAttachmentPreviewListTemplate$.next(undefined); + + const customAttachment = { + type: 'custom', + subtype: 'payment', + value: '30$', + link: 'pay/me/or/else', + }; + const attachmentService = TestBed.inject(AttachmentService); + attachmentService.customAttachments$.next([customAttachment]); + hostFixture.detectChanges(); + + expect( + hostFixture.nativeElement.querySelector( + '.str-chat__attachment-preview-list' + ) + ).toBeNull(); + }); + + it(`shouldn't display attachments if there are no attachments`, () => { + expect( + hostFixture.nativeElement.querySelector( + '.str-chat__attachment-preview-list' + ) + ).toBeNull(); + }); +}); diff --git a/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts b/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts index 5efab4b8..da6757e0 100644 --- a/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts +++ b/projects/stream-chat-angular/src/lib/attachment-preview-list/attachment-preview-list.component.ts @@ -1,6 +1,17 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; -import { Observable } from 'rxjs'; -import { AttachmentUpload } from '../types'; +import { + Component, + EventEmitter, + Input, + OnDestroy, + OnInit, + Output, + TemplateRef, +} from '@angular/core'; +import { Observable, Subscription } from 'rxjs'; +import { AttachmentUpload, CustomAttachmentPreviewListContext } from '../types'; +import { CustomTemplatesService } from '../custom-templates.service'; +import { AttachmentService } from '../attachment.service'; +import { Attachment } from 'stream-chat'; /** * The `AttachmentPreviewList` component displays a preview of the attachments uploaded to a message. Users can delete attachments using the preview component, or retry upload if it failed previously. @@ -10,7 +21,7 @@ import { AttachmentUpload } from '../types'; templateUrl: './attachment-preview-list.component.html', styles: [], }) -export class AttachmentPreviewListComponent { +export class AttachmentPreviewListComponent implements OnInit, OnDestroy { /** * A stream that emits the current file uploads and their states */ @@ -23,8 +34,31 @@ export class AttachmentPreviewListComponent { * An output to notify the parent component if the user wants to delete a file */ @Output() readonly deleteAttachment = new EventEmitter(); + customAttachments: Attachment[] = []; + customAttachmentsPreview?: TemplateRef; + private subscriptions: Subscription[] = []; - constructor() {} + constructor( + private customTemplateService: CustomTemplatesService, + public readonly attachmentService: AttachmentService + ) {} + + ngOnInit(): void { + this.subscriptions.push( + this.customTemplateService.customAttachmentPreviewListTemplate$.subscribe( + (t) => (this.customAttachmentsPreview = t) + ) + ); + this.subscriptions.push( + this.attachmentService.customAttachments$.subscribe( + (a) => (this.customAttachments = a) + ) + ); + } + + ngOnDestroy(): void { + this.subscriptions.forEach((s) => s.unsubscribe()); + } attachmentUploadRetried(file: File) { this.retryAttachmentUpload.emit(file); diff --git a/projects/stream-chat-angular/src/lib/attachment.service.spec.ts b/projects/stream-chat-angular/src/lib/attachment.service.spec.ts index c137f653..57411343 100644 --- a/projects/stream-chat-angular/src/lib/attachment.service.spec.ts +++ b/projects/stream-chat-angular/src/lib/attachment.service.spec.ts @@ -7,6 +7,7 @@ import { NotificationService } from './notification.service'; import { AttachmentUpload, DefaultStreamChatGenerics } from './types'; import { Subject } from 'rxjs'; import { ChatClientService } from './chat-client.service'; +import { MessageService } from './message.service'; describe('AttachmentService', () => { let service: AttachmentService; @@ -44,11 +45,10 @@ describe('AttachmentService', () => { getAppSettings, }, }, + MessageService, ], }); - service = TestBed.inject( - AttachmentService - ) as AttachmentService; + service = TestBed.inject(AttachmentService); }); it('should delete attachment, if file is already uploaded', async () => { @@ -382,11 +382,13 @@ describe('AttachmentService', () => { it('should reset attachments', () => { const spy = jasmine.createSpy(); + service.customAttachments$.next([{ type: 'custom' }]); service.attachmentUploads$.subscribe(spy); spy.calls.reset(); service.resetAttachmentUploads(); expect(spy).toHaveBeenCalledWith([]); + expect(service.customAttachments$.value).toEqual([]); }); it('should map to attachments', async () => { @@ -433,6 +435,15 @@ describe('AttachmentService', () => { service.addAttachment(customAttachment); + const customPaymentAttachment: Attachment = { + type: 'custom', + subtype: 'payment', + value: '30$', + link: 'pay/me/or/else', + }; + + service.customAttachments$.next([customPaymentAttachment]); + expect(service.mapToAttachments()).toEqual([ { fallback: 'flower.png', @@ -462,10 +473,22 @@ describe('AttachmentService', () => { thumb_url: 'url/to/my/thumb', isCustomAttachment: true, }, + customPaymentAttachment, ]); }); it('should create attachmentUploads from attachments', () => { + const messageService = TestBed.inject(MessageService); + const filterSpy = spyOn( + messageService, + 'isCustomAttachment' + ).and.callThrough(); + const customAttachment = { + type: 'custom', + subtype: 'payment', + value: '30$', + link: 'pay/me/or/else', + }; const attachments = [ { fallback: 'flower.png', @@ -495,6 +518,7 @@ describe('AttachmentService', () => { mime_type: 'application/pdf', isCustomAttachment: true, }, + customAttachment, ]; const imageFile = { name: 'flower.png', type: undefined }; const dataFile = { name: 'note.txt', size: 3272969, type: undefined }; @@ -547,6 +571,8 @@ describe('AttachmentService', () => { service.createFromAttachments(attachments); expect(spy).toHaveBeenCalledWith(jasmine.arrayContaining(result)); + expect(service.customAttachments$.value).toEqual([customAttachment]); + expect(filterSpy).toHaveBeenCalledTimes(attachments.length); }); it('should ignore URL attachments if creating from attachments', () => { diff --git a/projects/stream-chat-angular/src/lib/attachment.service.ts b/projects/stream-chat-angular/src/lib/attachment.service.ts index 5b4b57e6..25ac3ad1 100644 --- a/projects/stream-chat-angular/src/lib/attachment.service.ts +++ b/projects/stream-chat-angular/src/lib/attachment.service.ts @@ -11,6 +11,7 @@ import { DefaultStreamChatGenerics, } from './types'; import { ChatClientService } from './chat-client.service'; +import { MessageService } from './message.service'; /** * The `AttachmentService` manages the uploads of a message input. @@ -25,14 +26,22 @@ export class AttachmentService< > { /** * Emits the number of uploads in progress. + * + * You can increment and decrement this counter if you're using custom attachments and want to disable message sending until all attachments are uploaded. + * + * The SDK will handle updating this counter for built-in attachments, but for custom attachments you should take care of this. */ - attachmentUploadInProgressCounter$: Observable; + attachmentUploadInProgressCounter$ = new BehaviorSubject(0); /** * Emits the state of the uploads ([`AttachmentUpload[]`](https://github.com/GetStream/stream-chat-angular/blob/master/projects/stream-chat-angular/src/lib/types.ts)), it adds a state (`success`, `error` or `uploading`) to each file the user selects for upload. It is used by the [`AttachmentPreviewList`](../components/AttachmentPreviewListComponent.mdx) to display the attachment previews. */ attachmentUploads$: Observable; - private attachmentUploadInProgressCounterSubject = - new BehaviorSubject(0); + /** + * You can get and set the list if uploaded custom attachments + * + * By default the SDK components won't display these, but you can provide your own `customAttachmentPreviewListTemplate$` and `customAttachmentListTemplate$` for the [`CustomTemplatesService`](../../services/CustomTemplatesService). + */ + customAttachments$ = new BehaviorSubject[]>([]); private attachmentUploadsSubject = new BehaviorSubject( [] ); @@ -41,10 +50,9 @@ export class AttachmentService< constructor( private channelService: ChannelService, private notificationService: NotificationService, - private chatClientService: ChatClientService + private chatClientService: ChatClientService, + private messageService: MessageService ) { - this.attachmentUploadInProgressCounter$ = - this.attachmentUploadInProgressCounterSubject.asObservable(); this.attachmentUploads$ = this.attachmentUploadsSubject.asObservable(); this.chatClientService.appSettings$.subscribe( (appSettings) => (this.appSettings = appSettings) @@ -56,6 +64,7 @@ export class AttachmentService< */ resetAttachmentUploads() { this.attachmentUploadsSubject.next([]); + this.customAttachments$.next([]); } /** @@ -211,7 +220,7 @@ export class AttachmentService< */ mapToAttachments() { const attachmentUploads = this.attachmentUploadsSubject.getValue(); - return attachmentUploads + const builtInAttachments = attachmentUploads .filter((r) => r.state === 'success') .map((r) => { let attachment: Attachment = { @@ -237,6 +246,7 @@ export class AttachmentService< return attachment; }); + return [...builtInAttachments, ...this.customAttachments$.value]; } /** @@ -245,7 +255,16 @@ export class AttachmentService< */ createFromAttachments(attachments: Attachment[]) { const attachmentUploads: AttachmentUpload[] = []; + const builtInAttachments: Attachment[] = []; + const customAttachments: Attachment[] = []; attachments.forEach((attachment) => { + if (this.messageService.isCustomAttachment(attachment)) { + customAttachments.push(attachment); + } else { + builtInAttachments.push(attachment); + } + }); + builtInAttachments.forEach((attachment) => { if (isImageAttachment(attachment)) { attachmentUploads.push({ url: (attachment.img_url || @@ -296,6 +315,10 @@ export class AttachmentService< ...attachmentUploads, ]); } + + if (customAttachments.length > 0) { + this.customAttachments$.next(customAttachments); + } } private async createPreview(file: File | Blob) { @@ -318,8 +341,8 @@ export class AttachmentService< } private async uploadAttachments(uploads: AttachmentUpload[]) { - this.attachmentUploadInProgressCounterSubject.next( - this.attachmentUploadInProgressCounterSubject.getValue() + 1 + this.attachmentUploadInProgressCounter$.next( + this.attachmentUploadInProgressCounter$.value + 1 ); const result = await this.channelService.uploadAttachments(uploads); const attachmentUploads = this.attachmentUploadsSubject.getValue(); @@ -362,8 +385,8 @@ export class AttachmentService< ); } }); - this.attachmentUploadInProgressCounterSubject.next( - this.attachmentUploadInProgressCounterSubject.getValue() - 1 + this.attachmentUploadInProgressCounter$.next( + this.attachmentUploadInProgressCounter$.value - 1 ); this.attachmentUploadsSubject.next([...attachmentUploads]); } diff --git a/projects/stream-chat-angular/src/lib/custom-templates.service.ts b/projects/stream-chat-angular/src/lib/custom-templates.service.ts index 415bbc31..cc7f8ad8 100644 --- a/projects/stream-chat-angular/src/lib/custom-templates.service.ts +++ b/projects/stream-chat-angular/src/lib/custom-templates.service.ts @@ -10,6 +10,8 @@ import { ChannelPreviewContext, ChannelPreviewInfoContext, CommandAutocompleteListItemContext, + CustomAttachmentListContext, + CustomAttachmentPreviewListContext, CustomAttachmentUploadContext, CustomMetadataContext, DateSeparatorContext, @@ -329,5 +331,18 @@ export class CustomTemplatesService< channelPreviewInfoTemplate$ = new BehaviorSubject< TemplateRef | undefined >(undefined); + /** + * The template used to display custom attachment previews in the [message input component](../../components/MessageInputComponent.mdx) + */ + customAttachmentPreviewListTemplate$ = new BehaviorSubject< + TemplateRef | undefined + >(undefined); + /** + * The template used to display custom attachments in the [message component](../../components/MessageComponent.mdx) + */ + customAttachmentListTemplate$ = new BehaviorSubject< + TemplateRef | undefined + >(undefined); + 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 6a0c1cef..7c120496 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 @@ -147,7 +147,9 @@ class="str-chat__send-button" [disabled]=" (attachmentUploadInProgressCounter$ | async)! > 0 || - (!textareaValue && (attachmentUploads$ | async)!.length === 0) + (!textareaValue && + (attachmentUploads$ | async)!.length === 0 && + (customAttachments$ | async)!.length === 0) " (click)="messageSent()" (keyup.enter)="messageSent()" 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 3e499f76..1113bf1d 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 @@ -10,7 +10,7 @@ import { import { By } from '@angular/platform-browser'; import { TranslateModule } from '@ngx-translate/core'; import { BehaviorSubject, Subject, of } from 'rxjs'; -import { Channel, UserResponse } from 'stream-chat'; +import { Attachment, Channel, UserResponse } from 'stream-chat'; import { AttachmentService } from '../attachment.service'; import { ChannelService } from '../channel.service'; import { ChatClientService } from '../chat-client.service'; @@ -36,6 +36,7 @@ import { AttachmentPreviewListComponent } from '../attachment-preview-list/attac import { MessageActionsService } from '../message-actions.service'; import { StreamAvatarModule } from '../stream-avatar.module'; import { VoiceRecorderService } from './voice-recorder.service'; +import { CustomTemplatesService } from '../custom-templates.service'; describe('MessageInputComponent', () => { let nativeElement: HTMLElement; @@ -54,6 +55,7 @@ describe('MessageInputComponent', () => { let channel: Channel; let user: UserResponse; let attachmentService: { + customAttachments$: BehaviorSubject; attachmentUploadInProgressCounter$: Subject; attachmentUploads$: Subject; resetAttachmentUploads: jasmine.Spy; @@ -84,6 +86,7 @@ describe('MessageInputComponent', () => { typingStartedSpy = jasmine.createSpy(); typingStoppedSpy = jasmine.createSpy(); attachmentService = { + customAttachments$: new BehaviorSubject([]), resetAttachmentUploads: jasmine.createSpy(), attachmentUploadInProgressCounter$: new BehaviorSubject(0), attachmentUploads$: new BehaviorSubject([]), @@ -110,6 +113,7 @@ describe('MessageInputComponent', () => { useValue: AutocompleteTextareaComponent, }, VoiceRecorderService, + CustomTemplatesService, ], }, }); 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 bd83c16c..0e076658 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 @@ -22,7 +22,7 @@ import { } from '@angular/core'; import { combineLatest, Observable, Subject, Subscription, timer } from 'rxjs'; import { first, map, take, tap } from 'rxjs/operators'; -import { Channel, UserResponse } from 'stream-chat'; +import { Attachment, Channel, UserResponse } from 'stream-chat'; import { AttachmentService } from '../attachment.service'; import { ChannelService } from '../channel.service'; import { textareaInjectionToken } from '../injection-tokens'; @@ -123,6 +123,7 @@ export class MessageInputComponent canSendLinks: boolean | undefined; canSendMessages: boolean | undefined; attachmentUploads$: Observable; + customAttachments$: Observable; attachmentUploadInProgressCounter$: Observable; textareaValue = ''; textareaRef: ComponentRef> | undefined; @@ -214,6 +215,7 @@ export class MessageInputComponent }) ); this.attachmentUploads$ = this.attachmentService.attachmentUploads$; + this.customAttachments$ = this.attachmentService.customAttachments$; this.attachmentUploadInProgressCounter$ = this.attachmentService.attachmentUploadInProgressCounter$; this.isFileUploadEnabled = this.configService.isFileUploadEnabled; @@ -470,6 +472,7 @@ export class MessageInputComponent attachmentUploads$: this.attachmentService.attachmentUploads$, deleteUploadHandler: this.deleteUpload.bind(this), retryUploadHandler: this.retryUpload.bind(this), + service: this.attachmentService, }; } diff --git a/projects/stream-chat-angular/src/lib/message.service.spec.ts b/projects/stream-chat-angular/src/lib/message.service.spec.ts index 1db761b5..2392dc5f 100644 --- a/projects/stream-chat-angular/src/lib/message.service.spec.ts +++ b/projects/stream-chat-angular/src/lib/message.service.spec.ts @@ -1,6 +1,7 @@ import { TestBed } from '@angular/core/testing'; import { MessageService } from './message.service'; +import { Attachment } from 'stream-chat'; describe('MessageService', () => { let service: MessageService; @@ -13,4 +14,35 @@ describe('MessageService', () => { it('should be created', () => { expect(service).toBeTruthy(); }); + + it('should filter custom attachments', () => { + const attachment: Attachment = { + type: 'image', + }; + + expect(service.isCustomAttachment(attachment)).toBeFalse(); + + attachment.type = 'video'; + + expect(service.isCustomAttachment(attachment)).toBeFalse(); + + attachment.type = 'file'; + + expect(service.isCustomAttachment(attachment)).toBeFalse(); + + attachment.type = 'voiceRecording'; + + expect(service.isCustomAttachment(attachment)).toBeFalse(); + + attachment.type = 'custom'; + + expect(service.isCustomAttachment(attachment)).toBeTrue(); + + service.filterCustomAttachment = (a: Attachment) => + a.type === 'image' || a.type === 'custom'; + + attachment.type = 'image'; + + expect(service.isCustomAttachment(attachment)).toBeTrue(); + }); }); diff --git a/projects/stream-chat-angular/src/lib/message.service.ts b/projects/stream-chat-angular/src/lib/message.service.ts index 9d71b5cb..9427f382 100644 --- a/projects/stream-chat-angular/src/lib/message.service.ts +++ b/projects/stream-chat-angular/src/lib/message.service.ts @@ -1,4 +1,6 @@ import { Injectable } from '@angular/core'; +import { Attachment } from 'stream-chat'; +import { DefaultStreamChatGenerics } from './types'; /** * The message service contains configuration options related to displaying the message content @@ -6,7 +8,9 @@ import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root', }) -export class MessageService { +export class MessageService< + T extends DefaultStreamChatGenerics = DefaultStreamChatGenerics +> { /** * Decides if the message content should be formatted as text or HTML * @@ -22,6 +26,33 @@ export class MessageService { * @returns the HTML markup as a string for the link */ customLinkRenderer?: (url: string) => string; + /** + * The SDK supports the following attachment types: `image`, `file`, `giphy`, `video` and `voiceRecording` attachments. + * + * All other types are treated as custom attachments, however it's possible to override this logic, and provide a custom filtering method which can be used to treat some built-in attachments as custom. + * + * Provide a method which retruns `true` if an attachment should be considered as custom. + */ + filterCustomAttachment?: (attachment: Attachment) => boolean; constructor() {} + + /** + * Tells if an attachment is custom (you need to provide your own template to display them) or built-in (the SDK supports it out-of-the-box) + * @param attachment + * @returns `true` if the attachment is custom + */ + isCustomAttachment(attachment: Attachment) { + if (this.filterCustomAttachment) { + return this.filterCustomAttachment(attachment); + } else { + return ( + attachment.type !== 'image' && + attachment.type !== 'file' && + attachment.type !== 'video' && + attachment.type !== 'voiceRecording' && + attachment.type !== 'giphy' + ); + } + } } diff --git a/projects/stream-chat-angular/src/lib/types.ts b/projects/stream-chat-angular/src/lib/types.ts index 3dd6aaf9..d0d3bc33 100644 --- a/projects/stream-chat-angular/src/lib/types.ts +++ b/projects/stream-chat-angular/src/lib/types.ts @@ -187,10 +187,15 @@ export type ChannelActionsContext< T extends DefaultStreamChatGenerics = DefaultStreamChatGenerics > = { channel: Channel }; -export type AttachmentListContext = { +export type CustomAttachmentListContext< + T extends DefaultStreamChatGenerics = DefaultStreamChatGenerics +> = { messageId: string; - attachments: Attachment[]; + attachments: Attachment[]; parentMessageId?: string; +}; + +export type AttachmentListContext = CustomAttachmentListContext & { imageModalStateChangeHandler?: (state: 'opened' | 'closed') => void; }; @@ -224,6 +229,7 @@ export type AttachmentPreviewListContext = { attachmentUploads$: Observable | undefined; retryUploadHandler: (f: File) => void; deleteUploadHandler: (u: AttachmentUpload) => void; + service: AttachmentService; }; export type IconContext = { @@ -482,3 +488,9 @@ export type MediaRecording = { mime_type: string; asset_url: string | ArrayBuffer | undefined; }; + +export type CustomAttachmentPreviewListContext< + T extends DefaultStreamChatGenerics = DefaultStreamChatGenerics +> = { + attachmentService: AttachmentService; +};