Bug 1367266 - Properly calculate autoscroll prop; r=nchevobbe draft
authorJan Odvarko <odvarko@gmail.com>
Fri, 26 May 2017 12:51:36 +0200
changeset 585045 858c15dcf8122ee0604b09bca4f7c3d557d41824
parent 584877 5d6fe59a9a5dfd2d381d2cdfdc968d3305b417cf
child 630613 97a2f7432422f0369c8b21b1b3342f4cf2961010
push id60985
push userjodvarko@mozilla.com
push dateFri, 26 May 2017 10:52:47 +0000
reviewersnchevobbe
bugs1367266
milestone55.0a1
Bug 1367266 - Properly calculate autoscroll prop; r=nchevobbe MozReview-Commit-ID: K5fJX7HzxGD
devtools/client/webconsole/new-console-output/reducers/ui.js
--- a/devtools/client/webconsole/new-console-output/reducers/ui.js
+++ b/devtools/client/webconsole/new-console-output/reducers/ui.js
@@ -3,34 +3,38 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const {
   FILTER_BAR_TOGGLE,
   MESSAGE_ADD,
+  REMOVED_MESSAGES_CLEAR,
   TIMESTAMPS_TOGGLE
 } = require("devtools/client/webconsole/new-console-output/constants");
 const Immutable = require("devtools/client/shared/vendor/immutable");
 
 const UiState = Immutable.Record({
   filterBarVisible: false,
   filteredMessageVisible: false,
   autoscroll: true,
   timestampsVisible: true,
 });
 
 function ui(state = new UiState(), action) {
   // Autoscroll should be set for all action types. If the last action was not message
   // add, then turn it off. This prevents us from scrolling after someone toggles a
-  // filter, or to the bottom of the attachement when an expandable message at the bottom
+  // filter, or to the bottom of the attachment when an expandable message at the bottom
   // of the list is expanded. It does depend on the MESSAGE_ADD action being the last in
   // its batch, though.
-  state = state.set("autoscroll", action.type == MESSAGE_ADD);
+  // It also depends on REMOVED_MESSAGES_CLEAR action being sent after MESSAGE_ADD
+  // if number of messages reached the maximum limit.
+  let autoscroll = action.type == MESSAGE_ADD || action.type == REMOVED_MESSAGES_CLEAR;
+  state = state.set("autoscroll", autoscroll);
 
   switch (action.type) {
     case FILTER_BAR_TOGGLE:
       return state.set("filterBarVisible", !state.filterBarVisible);
     case TIMESTAMPS_TOGGLE:
       return state.set("timestampsVisible", action.visible);
 
   }