// The Construct // // Copyright (C) The Construct Developers, Authors & Contributors // Copyright (C) 2016-2020 Jason Volk // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice is present in all copies. The // full license for this software is available in the LICENSE file. namespace ircd::m { static void room_tombstone_effect_handler(const event &, vm::eval &); extern hookfn room_tombstone_effect_hook; } ircd::mapi::header IRCD_MODULE { "Matrix m.room.tombstone" }; decltype(ircd::m::room_tombstone_effect_hook) ircd::m::room_tombstone_effect_hook { room_tombstone_effect_handler, { { "_site", "vm.effect" }, { "type", "m.room.tombstone" }, } }; void ircd::m::room_tombstone_effect_handler(const m::event &event, m::vm::eval &) { assert(at<"type"_>(event) == "m.room.tombstone"); const m::room room { at<"room_id"_>(event) }; if(!creator(room, at<"sender"_>(event))) return; const m::room::aliases aliases { room }; aliases.for_each([](const auto &room_alias) { // Invalidate the alias cache immediately so we don't have to wait a TTL m::room::aliases::cache::del(room_alias); return true; }); }