From 8f5762219e91648f8021ca14c3a7095c865354e2 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 22 Dec 2023 08:19:47 -0600 Subject: [PATCH 1/6] application/windows: Guard from NULL dereference finding conversation * Happens from the native matrix plugin on a large account --- application/windows/MainWindow.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/application/windows/MainWindow.cpp b/application/windows/MainWindow.cpp index 02e1149..ab41e8e 100644 --- a/application/windows/MainWindow.cpp +++ b/application/windows/MainWindow.cpp @@ -23,6 +23,8 @@ #include #include +#include + #include "AccountDialog.h" #include "AccountsWindow.h" #include "AppMessages.h" @@ -683,7 +685,12 @@ ConversationItem* MainWindow::_EnsureConversationItem(BMessage* msg) { BString chat_id = msg->FindString("chat_id"); - Conversation* chat = Server::Get()->ConversationById(chat_id, msg->FindInt64("instance")); + int64 conversation_id = msg->FindInt64("instance"); + Conversation* chat = Server::Get()->ConversationById(chat_id, conversation_id); + if (chat == NULL) { + printf("error: Conversation %" B_PRId64 " in '%s' not found!\n", conversation_id, chat_id); + return NULL; + } _EnsureConversationView(chat); -- 2.46.0 From d4b934093d0fcbea7123be3306d59ffd9825e393 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 22 Dec 2023 08:21:01 -0600 Subject: [PATCH 2/6] protocols/matrix: Add some needed dependencies for the latest matrix_client --- protocols/matrix/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protocols/matrix/Makefile b/protocols/matrix/Makefile index 31506a7..78c6dc0 100644 --- a/protocols/matrix/Makefile +++ b/protocols/matrix/Makefile @@ -65,7 +65,7 @@ RSRCS = # - if your library does not follow the standard library naming scheme, # you need to specify the path to the library and it's name. # (e.g. for mylib.a, specify "mylib.a" or "path/mylib.a") -LIBS = be bnetapi localestub interface matrix_client network $(STDCPPLIBS) +LIBS = be bnetapi localestub interface matrix_client spdlog network $(STDCPPLIBS) # Specify additional paths to directories following the standard libXXX.so @@ -116,7 +116,7 @@ SYMBOLS := DEBUGGER := # Specify any additional compiler flags to be used. -COMPILER_FLAGS = -std=c++17 +COMPILER_FLAGS = -std=c++20 `pkg-config --cflags spdlog` # Specify any additional linker flags to be used. LINKER_FLAGS = -- 2.46.0 From 53a5c5ed1a1673cd1be9b6d2660ca54ad14af1c8 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 22 Dec 2023 08:59:46 -0600 Subject: [PATCH 3/6] protocols/matrix: Give the user notice on initial sync. * This can be 30+ seconds of silence, so give user a little feedback that "stuff is happening" --- protocols/matrix/MatrixApp.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/protocols/matrix/MatrixApp.cpp b/protocols/matrix/MatrixApp.cpp index 94bca1a..bce705a 100644 --- a/protocols/matrix/MatrixApp.cpp +++ b/protocols/matrix/MatrixApp.cpp @@ -153,6 +153,12 @@ MatrixApp::StartLoop() status.AddInt32("status", (int32)STATUS_ONLINE); SendMessage(status); + BMessage syncStatus(IM_MESSAGE); + syncStatus.AddInt32("im_what", IM_MESSAGE_RECEIVED); + syncStatus.AddString("user_name", APP_NAME); + syncStatus.AddString("body", B_TRANSLATE("Synchronizing with Matrix server. Please wait...")); + SendMessage(syncStatus); + mtx::http::SyncOpts opts; opts.timeout = 0; client->sync(opts, &initial_sync_handler); -- 2.46.0 From 496460543268ff8f1a5a501786da6a77b44602b4 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 22 Dec 2023 12:26:54 -0600 Subject: [PATCH 4/6] protocols/matrix: Add some basic room metadata for friendly room names --- protocols/matrix/MatrixApp.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/protocols/matrix/MatrixApp.cpp b/protocols/matrix/MatrixApp.cpp index bce705a..da29f17 100644 --- a/protocols/matrix/MatrixApp.cpp +++ b/protocols/matrix/MatrixApp.cpp @@ -282,6 +282,20 @@ room_sync(mtx::responses::Rooms rooms) app->fRoomList.Add(BString(chat_id)); } + // Grab the latest room metadata + BMessage metadataMsg(IM_MESSAGE); + metadataMsg.AddInt32("im_what", IM_ROOM_METADATA); + metadataMsg.AddString("chat_id", chat_id); + for (const auto &e : room.state.events) { + auto ev = std::get_if>(&e); + if (ev != nullptr) { + metadataMsg.AddString("chat_name", ev->content.name.c_str()); + break; + } + } + ((MatrixApp*)be_app)->SendMessage(metadataMsg); + + // Grab the room timeline and add it for (mtx::events::collections::TimelineEvents &ev : room.timeline.events) if (auto event = std::get_if>(&ev); event != nullptr) -- 2.46.0 From 1a0ee401bee3e9ee8cadf5e229e63020a2f87db1 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 22 Dec 2023 17:04:26 -0600 Subject: [PATCH 5/6] protocols/matrix: Record message when from server timestamp on initial_sync --- protocols/matrix/MatrixApp.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/protocols/matrix/MatrixApp.cpp b/protocols/matrix/MatrixApp.cpp index da29f17..d44a0d4 100644 --- a/protocols/matrix/MatrixApp.cpp +++ b/protocols/matrix/MatrixApp.cpp @@ -303,6 +303,7 @@ room_sync(mtx::responses::Rooms rooms) BMessage msg(IM_MESSAGE); msg.AddInt32("im_what", IM_MESSAGE_RECEIVED); msg.AddString("body", event->content.body.c_str()); + msg.AddInt64("when", event->origin_server_ts / 1000); msg.AddString("chat_id", chat_id); msg.AddString("user_id", event->sender.c_str()); app->SendMessage(msg); -- 2.46.0 From f78034cb84fb561794bb0089ed80ebc08be7a3ab Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 22 Dec 2023 17:18:30 -0600 Subject: [PATCH 6/6] data/icons: Use Haiku's App_Chat icon --- application/ChatOMatic.rdef | 15 +++++++++++++++ data/icons/AppIcon | Bin 11997 -> 6749 bytes data/icons/AppIcon.png | Bin 1492 -> 2131 bytes data/icons/AppIcon.rdef | 29 +++++++++++++---------------- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/application/ChatOMatic.rdef b/application/ChatOMatic.rdef index 8f55a60..9b252a9 100644 --- a/application/ChatOMatic.rdef +++ b/application/ChatOMatic.rdef @@ -16,3 +16,18 @@ resource app_flags B_SINGLE_LAUNCH; resource file_types message; +resource vector_icon { + $"6E636966040500020106033D835C3C19B2BA8B0B3C20794769624A510E00FFFF" + $"FFB4FFE405FFFFA405020106023D835C3C19B2BA8B0B3C20794769624A510E00" + $"FFE405FFFFA405020106033D429E3C5148BB5ADA3C5C1B4A23AA46EC1800FFFF" + $"FFB47FE583FF04B10C0902093F404644383C273F2E3A244122482245224D2755" + $"245126572256245725582A5828592C5A315C2F5B345D3C5E385E425E4957475C" + $"4D4E02043F4044433D3FBC95BE953B3D333D3D493844424E4A5148534A4A0403" + $"3B2F4E2F4E2D4E2A4D2F532D522F530003334F334F364F345337533755325636" + $"59325602085645C8FEC3AFCA30C0E55E3A5E405EBA4D52B58359B71B4AB38537" + $"B51D3EB31FBA16B69933353130363E4A4641444D475346C657C27B554BCB01C6" + $"35584F5A4F080239BA0539BA6B0802BD1CBC1DBD2FBCA908023E37423904032E" + $"4535473C4739473F4540070A000100123FFFFE2FDACEAFDACE3FFFFE3AB6A5B8" + $"4CC101178400040A010100000A020101000A000202031001178210040A000104" + $"1001178400040A030104000A000407050608100117821004" +}; diff --git a/data/icons/AppIcon b/data/icons/AppIcon index 5e6c4141667c03099cd97e9086a42d2679e03432..88531c478923951b381d2a45f5df9f6dd3c644b7 100644 GIT binary patch literal 6749 zcmdT|U2GIp6u#4T+b(UfngSIx84*K^5;5?AO~Y=NpF%9O(#DjeCf&AEc3``+%#P3+ zD~$?4<6lTj&?gd2M4wbN>Vs*65(t7IMli(SCW`URYC=MUWc|K7KRes*Hif3Kp5*K~ z_ueyS?)klUcFWfG=Eowfn-sBl$BxB9f)Z?QZr_>=3K2*~tyn4!&Xx(r$rBWXG8}Bi zPYLA?Dz2DvkUT*NZtrMcUkk1z5gpL(0@D+X#|){~LWo+dRs*{seE}$- ztp?)}&8+3=7AO1+J*i?upWEklt+D>q`6W<#Hb7j4Q>7K06DT z2_ZllI1M{j7qXKsZ-jkJ#TL*vK|6DI?z7XC{=$*|2(&L(+HWV9shr{+S>*-n6#2tR zD}@+PTsxHk@`MR}W{W z(qllTU@efosf|hj02CZv%A#@cs7UX z$dX4Rkt2yE;Mo)!bG2suc-V}bd8e{sIuVA9GMbX!f z0AoO?rN6mZqA#!DKuqL!x?JJvd7zVD=gAXnzkB_JYPBIvwTz^o-=)8cFi8owo=#(X zuK`KlYRVDu{AaHgkjnaFk{Ipd`-oZl6eVwWfDB<8c2z)(cJ&yRWekY?c6|$bK5r5u zXF*RCv}+0}zg-i=?!>NB*t8R`Q{)MG`rb;RsX0M#zHMc2IW}fb}V21`K6hud8GaJ`NeN!#cAi{K91vfs)Ur+ zFEt=UY04UkYpDfbZNmc#$P?`Q7mvYl`~;-ndW;+gttU^&Q=pAfcpXY!Iat-at+j<( z0=-7uFu`O*#{tFFqZ}Ylm_iSAOwf}#emoZquVbC%2P$V3n zGZ?K(pzV+h;kQ60^Ijkm=xA-(&zod0l*UJTqH$aT{^?HTh-d z^_nZ82d*x9dE+Y=L;ISZegB6`XGWhJ>3a8S`XcK>?YO@wOnS0=d7--4f9=Ig$;Xxd zL0vfaFYHf(>@{<>B1Eg07m8Wzx3InP>`O;Z-uKE2P1 zQ54s-us2;Xprd7}aUFEh;@!3`pGbYz8z-*UjfcGF%Th7JwCtO={k+{*3pML|wl7`w zSLV;qk-zs`HZLVyI_l0tN4Wm8lT6OB%KlGAy#ur?hUTg#c8V(YXP#v>1A0Q;tEcoH zJ+50rYN|IHX9)Zf(ZM_tBVpNQis2up-xiZ6ml=^kSpvrj?>gU zFnNBKTp@1a?Y1ApP4a|%eqiZLt`B-=>VF&Nxc&Y7ig5aa{Y6p0eoPB_cc3F!QeG}_ zf;R@~2d>CI!I{R@B0hWlASW|t&=15c_5-Is%<&{Z?>jxSbAlZy_ncUW8TXu!|4w+v zgncf|US8nE*-D*3Ud-k>;auY9cwX>-*y)}VtoODyE0(1K%#T!=Ei`lD-|3klo69{uX8MsIH-<5v>*>th| literal 11997 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 diff --git a/data/icons/AppIcon.png b/data/icons/AppIcon.png index 4c634e2ece31f6d0788e18257b3b5c6e9e29e2f2..b4d7524610fa8684533fe3ebf0e11714ad529c87 100644 GIT binary patch delta 2119 zcmV-N2)Osu3)2vgBYy}QNklN%w@nzR9CmBmp8>pcskRWcwi3MUrtq5Ti zCa6Lv6dH|h`NU3-G40DOOkOypwR=x$wLM_(0rsCNflC*!UUJ`8Z(mL#SWQhJLBgtl zTUA7?2q6_Fq=HyjC5x3%0Th+v^7*Q)qP=yGn0ExyLE`MkR$%RdufCZ;Q zU}4>qTFO$Uq)QZak&-x+#l;s7ExMve5l}%wDnwX?39ASp6(Xd91eAqBQ8#fMOMbi< zU=vV17JmX3Ffo`2;b;e2ij4RU*B^+_c`vo>Xv6%sHfB|oiAunqP={$K|z}ALLS;~0gAtJ~L%7QAu zq@~T!#9Cln@Fd_GIB1X9b3#>Nlvbp>QVe*5cz@zkk`f7>AZ&#ZS3^)?Yn!~zQ`9BO zQbyx*B8^}?Nb=fbH1kO2y0KJ2+tiC%7SvCvM-W;sJOdx0>^ZoUDM^XEljq*m>zQ@& zY>HNqykDT83nn~L#uXQhN#256ps(0Zzte;Lvh9zBK(FgNYo;%og=HzWKlmyQGaER( zw||QrPwyZyK1#4Ygk3C>wX;+;#*TrPD&g?)O>fXX!_Elle3~IIhyDCWd`tueJ{~x? z`s~Eatlpr)~w_cpzY8*piuo}_(SJIxE4Dd`d=Z9L>wDn$@%uSkEf zpLF2}osxy$+139o2fhHT1Qr2j0C6C&?SI~v2segloj09mD29tiO-l`5x#wc=1tqX| z+XpOKdl4eqSS%VrBS6_NGw2M_YxgqjKn1%v-VQhVz)&8l|BwM<~!w zshHwuriW>3wy^mAOK5AGL0zPdNFa=*1Ong{J&1*Iv|}_^5>Jb!JnjAHFomseTO(O z-bU9Ot9{XkFMP0RH&eejnT8oj1i=@dl3yh6=IOIDbmczfaPCubrG9KL1G|BDc`|@G z%U^$a%evMjOD@FR$na?RWfnJpQf`uHe?hNFy-qo9j8g(3|L zCs6ckhTLJYPL@9VC`Sq@I&+_rE~M#lh75Qbc!VKrRtAAp58b!qoG)EC3seMDHCVMk z08}lgc;$Tnk`4{|ejZ$t;j;D&cdg6t_LUtZ&ut>nTuV=;7nF&r=X(^igMZ@{$aoI; zfMm>B_#_?~t^_hc;O48Aj|V*jx&W33s0wJP5+N6)0Ff*-&L>!Yg^TCI`)%;nKj4Xn zQ~YUm3g#xwd=#&2lMJ8fL0f^RH~@T&%83{R=1rZH1FzG#+>e>p7RC!$l@L^eRS)qg zFn%7ScN34p^7*jrEZCod_J2beZdnT~1E!d**gyif6fpKYz;VZM5C{cTH+W&=X3;)g9}?0@mCxTXEz_khlVlz|M?0W*PU1x?Eqwf zi>Pc(rP~onnbrBXq+Gik>D}8T(mO}o^x1O%x}<#YW{XHqi%55qNIH4!|I&rXhlsp{ z$aBaga}dlVeWHYc4V8e6E^Y-@|L8WvKY+*)qjc{M1L7%9ut| zdCulxp1*X$Ap9T|ZArdkh^A2Hu{9>%&CnGQ_ xNz7GzF)$C4T=kW2SxmQk4fqw%eJbDp{|0+I&hUGnc;Wy6002ovPDHLkV1m?C-r@iN delta 1475 zcmV;!1w8uG5Y!8hBYy>(NklbBmbyYwYp10` zThSt=rBX^M)6U$FcYoZWv=z#r$Y#&4IrpCTJkNRWd(IsAKYwna{}tE*{sLrxD&SXu zalPO-1NEDqT_=4#b#kzNo2*;2On_s+I-unHgfC4b%Ffrmze~K#VUhF!k>MJV)a%mK zQ6W1kAC!eZFB9N3t|BWchcRJb^Ft5bcmMkJk5Ez^0T~2u0OVZucM3?8NvHTU*~uGk zH}TZ7d%pl?U4ILK!<8>?nf=>kcM-5$@Xlw!1K^zlNr4Q3qyZZ|8>h7eYe8jB^XnW0 zW-tHI35>xuaEF03$nZs=*nk7L;MzE!G$5b7o5QqzGjkf1c?b9S8@Q?rHDw{@(mU@FZ{se@~+f3uS6Q6IK9anP@AB3Rr&s0$c}CIz0LlT(KI) z3)~F6zkhP=#`V>;#{++TVeevJK#!9!E=pLIzu7LN-Y`LrB(|L^oRFjU>C$*S@xtmS zHivF2|1lykYmja<`D}9nH!Ju$ch!*ylw@?aoH%21;!HoWJcBti^O=5Q2+O)ypMR#I2pEdC4uiVxA5ypD9FIL+#WRn_S$gLb zj%MMj=FcbJG?^TaQxuPbQaHB52fJ(OtV~|A2*;cQXNO(>b7YW1?Sqt+hPb6PL_x@8 zc*v&mrAGeI&<}x|Apc7MX4aRo_LUO^fQN4_f!Lkrh!tVhtuq<+QX@;j(?r32M)dw&m}K7D%o zv17$~T8Bys3Wx>AUPRhI`ubAv!7O|yaMr*t_D_K=t&O!EAN=$0bHm}h!pLM_L?kOP z7M=$BfepZheO+B0TbrAII$osxqpv4~UoKk~a4*pIvn6Zg-Y4sX#Nz@S2i60tfd_!t zW#W4OG=IK)vV6I$At69F@I2?s#Z6T67Vx_)G;h?(ue1USxChvT|F@g-$|n+;bhSa> dA@2IN{{oHDLcV)$cAEeI002ovPDHLkV1lEv%>MuY diff --git a/data/icons/AppIcon.rdef b/data/icons/AppIcon.rdef index 50337a7..e488731 100644 --- a/data/icons/AppIcon.rdef +++ b/data/icons/AppIcon.rdef @@ -1,19 +1,16 @@ resource vector_icon array { - $"6E6369660E05000200060237E670B8880E39469D39AE144A52234B0D2500C6D7" - $"F5FF6B94DD03EC6666020006023B2B47BB18653D0FA53D225148297046CA1900" - $"FFEC4BFFF0A506020006023B3049396B0ABA90833C646E4A101543299500FFFF" - $"FFFFFFF289020006023C71E33A0C78BA15E43C7D2149055549455700E3EDFFFF" - $"9EC2FF03FFACAC020006023A1DA6393F04BBB5BC3C6B074AEA3648091100F99B" - $"05FFFCB23D03003CB00200060230B31E3A09B9BB024238A12F4BAB534AFF0B00" - $"A3043CFFFFDCE603CD4D4D030D296402000602BD498B3E1159BF219BBE7D2F4B" - $"E71F4AB31300C13E3EFFE27A7A0401740D0A06322E323E42464C3C4C2C3D260A" - $"04322E323E424642350A04322E42354C2C3D260A04423542464C3C4C2C0A0338" - $"423C4D3C440A08335C395C41544F5C555C6051594D3E510A0422422252325A32" - $"490A04224232493C402D3A0A043249325A3C503C400A043E42C35DC27AC751BE" - $"F3493A0A04C35DC27A4E495840C751BEF30A05424BC08BC7B74E5A4E49C35DC2" - $"7A0A053E423E52C08BC7B7424BC35DC27A100A0D0105000A0001003010340117" - $"8400040A0101012010340A0801032010340A0B01042020210A010107000A0001" - $"00302C3401178400040A02010B000A0A010C000A090103202C340A06010A000A" - $"0C0109000A0001001001178400040A030101000A040102000A07010300" + $"6E636966040500020106033D835C3C19B2BA8B0B3C20794769624A510E00FFFF" + $"FFB4FFE405FFFFA405020106023D835C3C19B2BA8B0B3C20794769624A510E00" + $"FFE405FFFFA405020106033D429E3C5148BB5ADA3C5C1B4A23AA46EC1800FFFF" + $"FFB47FE583FF04B10C0902093F404644383C273F2E3A244122482245224D2755" + $"245126572256245725582A5828592C5A315C2F5B345D3C5E385E425E4957475C" + $"4D4E02043F4044433D3FBC95BE953B3D333D3D493844424E4A5148534A4A0403" + $"3B2F4E2F4E2D4E2A4D2F532D522F530003334F334F364F345337533755325636" + $"59325602085645C8FEC3AFCA30C0E55E3A5E405EBA4D52B58359B71B4AB38537" + $"B51D3EB31FBA16B69933353130363E4A4641444D475346C657C27B554BCB01C6" + $"35584F5A4F080239BA0539BA6B0802BD1CBC1DBD2FBCA908023E37423904032E" + $"4535473C4739473F4540070A000100123FFFFE2FDACEAFDACE3FFFFE3AB6A5B8" + $"4CC101178400040A010100000A020101000A000202031001178210040A000104" + $"1001178400040A030104000A000407050608100117821004" }; -- 2.46.0