diff --git a/Telegram/SourceFiles/data/data_chat_filters.cpp b/Telegram/SourceFiles/data/data_chat_filters.cpp index 792a33252..c37eddd65 100644 --- a/Telegram/SourceFiles/data/data_chat_filters.cpp +++ b/Telegram/SourceFiles/data/data_chat_filters.cpp @@ -775,7 +775,9 @@ FilterId ChatFilters::defaultId() const { } FilterId ChatFilters::lookupId(int index) const { - Expects(index >= 0 && index < _list.size()); + if (index >= 0 && index < _list.size()) { + return FilterId(); // AyuGram: fix crash when using `hideAllChatsFolder` + } if (_owner->session().user()->isPremium() || !_list.front().id()) { return _list[index].id(); diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index 5c68f9f48..165fe27db 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -4258,7 +4258,9 @@ void Session::registerItemView(not_null view) { } void Session::unregisterItemView(not_null view) { - Expects(!_heavyViewParts.contains(view)); + if (!_heavyViewParts.contains(view)) { + return; // AyuGram: fix crash when using `saveDeletedMessages` + } _shownSpoilers.remove(view); diff --git a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp index bff43a1da..fd2f75a05 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp @@ -81,6 +81,7 @@ base::options::toggle ShowPeerIdBelowAbout({ .id = kOptionShowPeerIdBelowAbout, .name = "Show Peer IDs in Profile", .description = "Show peer IDs from API below their Bio / Description.", + .scope = static_cast(0), }); [[nodiscard]] rpl::producer UsernamesSubtext( diff --git a/Telegram/SourceFiles/window/window_filters_menu.cpp b/Telegram/SourceFiles/window/window_filters_menu.cpp index 9b82a0469..d1826fe84 100644 --- a/Telegram/SourceFiles/window/window_filters_menu.cpp +++ b/Telegram/SourceFiles/window/window_filters_menu.cpp @@ -256,9 +256,12 @@ void FiltersMenu::refresh() { _scroll.scrollToY(oldTop); // Fix active chat folder when hide all chats is enabled. - if (settings->hideAllChatsFolder) { - const auto lookup_id = filters->lookupId(premium() ? 0 : 1); - _session->setActiveChatsFilter(lookup_id); + // Also check for session content existance, because it may be null + // and there will be an exception in `Window::SessionController::showPeerHistory` + // because `SessionController::content()` == nullptr + if (settings->hideAllChatsFolder && _session->widget()->sessionContent()) { + const auto lookupId = filters->lookupId(premium() ? 0 : 1); + _session->setActiveChatsFilter(lookupId); } }