Skip to content

Commit

Permalink
MDL-64058 core_message: fix logic driving conversation section expansion
Browse files Browse the repository at this point in the history
Unread conversations should be given priority over read. If one or more
sections have unread conversations, prioritise favourites over group and
group over individual. The same applies if all conversations are read.
  • Loading branch information
snake committed Nov 20, 2018
1 parent da714be commit 4283291
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions message/lib.php
Expand Up @@ -869,6 +869,22 @@ function core_message_standard_after_main_region_html() {
// Get the unread counts for the current user.
$unreadcounts = \core_message\api::get_unread_conversation_counts($USER->id);

// Determine which section will be expanded.
// Default behaviour - if no unread counts exist.
$favouritesexpanded = !empty($favouriteconversationcount);
$groupmessagesexpanded = empty($favouriteconversationcount) && !empty($groupconversationcount);
$messagesexpanded = empty($favouriteconversationcount) && empty($groupconversationcount);

// There is an unread conversation somewhere, so that takes priority.
if ($unreadcounts['favourites'] > 0 || $unreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP] > 0 ||
$unreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL] > 0) {
$favouritesexpanded = $unreadcounts['favourites'] > 0;
$groupmessagesexpanded = !$favouritesexpanded &&
$unreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP] > 0;
$messagesexpanded = !$groupmessagesexpanded && !$favouritesexpanded &&
$unreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL] > 0;
}

return $renderer->render_from_template('core_message/message_drawer', [
'contactrequestcount' => $requestcount,
'loggedinuser' => [
Expand All @@ -877,23 +893,23 @@ function core_message_standard_after_main_region_html() {
],
'overview' => [
'messages' => [
'expanded' => empty($favouriteconversationcount) && empty($groupconversationcount),
'expanded' => $messagesexpanded,
'count' => [
'unread' => $unreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL],
'total' => $individualconversationcount
],
'placeholders' => array_fill(0, $individualconversationcount, true)
],
'groupmessages' => [
'expanded' => empty($favouriteconversationcount) && !empty($groupconversationcount),
'expanded' => $groupmessagesexpanded,
'count' => [
'unread' => $unreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP],
'total' => $groupconversationcount
],
'placeholders' => array_fill(0, $groupconversationcount, true)
],
'favourites' => [
'expanded' => !empty($favouriteconversationcount),
'expanded' => $favouritesexpanded,
'count' => [
'unread' => $unreadcounts['favourites'],
'total' => $favouriteconversationcount
Expand Down

0 comments on commit 4283291

Please sign in to comment.