mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 20:51:08 +08:00
DEV: defines a constant for INPUT_DELAY (#9169)
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
import discourseComputed from "discourse-common/utils/decorators";
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
import { debounce } from "@ember/runloop";
|
import { debounce } from "@ember/runloop";
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
const { get } = Ember;
|
const { get } = Ember;
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ export default Controller.extend({
|
|||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
filterReports(filter) {
|
filterReports(filter) {
|
||||||
debounce(this, this._performFiltering, filter, 250);
|
debounce(this, this._performFiltering, filter, INPUT_DELAY);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default AdminEmailLogsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
@observes("filter.{status,user,address,type}")
|
@observes("filter.{status,user,address,type}")
|
||||||
filterEmailLogs: discourseDebounce(function() {
|
filterEmailLogs: discourseDebounce(function() {
|
||||||
this.loadLogs();
|
this.loadLogs();
|
||||||
}, 250)
|
}, INPUT_DELAY)
|
||||||
});
|
});
|
||||||
|
@ -2,12 +2,13 @@ import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
|||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import IncomingEmail from "admin/models/incoming-email";
|
import IncomingEmail from "admin/models/incoming-email";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default AdminEmailLogsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
@observes("filter.{status,from,to,subject}")
|
@observes("filter.{status,from,to,subject}")
|
||||||
filterIncomingEmails: discourseDebounce(function() {
|
filterIncomingEmails: discourseDebounce(function() {
|
||||||
this.loadLogs(IncomingEmail);
|
this.loadLogs(IncomingEmail);
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
loadMore() {
|
loadMore() {
|
||||||
|
@ -2,12 +2,13 @@ import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
|||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import IncomingEmail from "admin/models/incoming-email";
|
import IncomingEmail from "admin/models/incoming-email";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default AdminEmailLogsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
@observes("filter.{status,from,to,subject,error}")
|
@observes("filter.{status,from,to,subject,error}")
|
||||||
filterIncomingEmails: discourseDebounce(function() {
|
filterIncomingEmails: discourseDebounce(function() {
|
||||||
this.loadLogs(IncomingEmail);
|
this.loadLogs(IncomingEmail);
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
loadMore() {
|
loadMore() {
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default AdminEmailLogsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
@observes("filter.{status,user,address,type,reply_key}")
|
@observes("filter.{status,user,address,type,reply_key}")
|
||||||
filterEmailLogs: discourseDebounce(function() {
|
filterEmailLogs: discourseDebounce(function() {
|
||||||
this.loadLogs();
|
this.loadLogs();
|
||||||
}, 250)
|
}, INPUT_DELAY)
|
||||||
});
|
});
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default AdminEmailLogsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
@observes("filter.{status,user,address,type}")
|
@observes("filter.{status,user,address,type}")
|
||||||
filterEmailLogs: discourseDebounce(function() {
|
filterEmailLogs: discourseDebounce(function() {
|
||||||
this.loadLogs();
|
this.loadLogs();
|
||||||
}, 250)
|
}, INPUT_DELAY)
|
||||||
});
|
});
|
||||||
|
@ -4,6 +4,7 @@ import { outputExportResult } from "discourse/lib/export-result";
|
|||||||
import { exportEntity } from "discourse/lib/export-csv";
|
import { exportEntity } from "discourse/lib/export-csv";
|
||||||
import ScreenedIpAddress from "admin/models/screened-ip-address";
|
import ScreenedIpAddress from "admin/models/screened-ip-address";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
loading: false,
|
loading: false,
|
||||||
@ -16,7 +17,7 @@ export default Controller.extend({
|
|||||||
ScreenedIpAddress.findAll(this.filter).then(result => {
|
ScreenedIpAddress.findAll(this.filter).then(result => {
|
||||||
this.setProperties({ model: result, loading: false });
|
this.setProperties({ model: result, loading: false });
|
||||||
});
|
});
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
allow(record) {
|
allow(record) {
|
||||||
|
@ -2,6 +2,7 @@ import Controller from "@ember/controller";
|
|||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import Permalink from "admin/models/permalink";
|
import Permalink from "admin/models/permalink";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
loading: false,
|
loading: false,
|
||||||
@ -13,7 +14,7 @@ export default Controller.extend({
|
|||||||
this.set("model", result);
|
this.set("model", result);
|
||||||
this.set("loading", false);
|
this.set("loading", false);
|
||||||
});
|
});
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
recordAdded(arg) {
|
recordAdded(arg) {
|
||||||
|
@ -3,6 +3,7 @@ import { alias } from "@ember/object/computed";
|
|||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
filter: null,
|
filter: null,
|
||||||
@ -84,7 +85,7 @@ export default Controller.extend({
|
|||||||
} else {
|
} else {
|
||||||
this.filterContentNow();
|
this.filterContentNow();
|
||||||
}
|
}
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
clearFilter() {
|
clearFilter() {
|
||||||
|
@ -4,6 +4,7 @@ import discourseDebounce from "discourse/lib/debounce";
|
|||||||
import { i18n } from "discourse/lib/computed";
|
import { i18n } from "discourse/lib/computed";
|
||||||
import AdminUser from "admin/models/admin-user";
|
import AdminUser from "admin/models/admin-user";
|
||||||
import CanCheckEmails from "discourse/mixins/can-check-emails";
|
import CanCheckEmails from "discourse/mixins/can-check-emails";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default Controller.extend(CanCheckEmails, {
|
export default Controller.extend(CanCheckEmails, {
|
||||||
model: null,
|
model: null,
|
||||||
@ -32,7 +33,7 @@ export default Controller.extend(CanCheckEmails, {
|
|||||||
@observes("listFilter")
|
@observes("listFilter")
|
||||||
_filterUsers: discourseDebounce(function() {
|
_filterUsers: discourseDebounce(function() {
|
||||||
this.resetFilters();
|
this.resetFilters();
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
resetFilters() {
|
resetFilters() {
|
||||||
this._page = 1;
|
this._page = 1;
|
||||||
|
@ -4,6 +4,7 @@ import EmberObject from "@ember/object";
|
|||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
filter: null,
|
filter: null,
|
||||||
@ -48,7 +49,7 @@ export default Controller.extend({
|
|||||||
filterContent: discourseDebounce(function() {
|
filterContent: discourseDebounce(function() {
|
||||||
this.filterContentNow();
|
this.filterContentNow();
|
||||||
this.set("filtered", !isEmpty(this.filter));
|
this.set("filtered", !isEmpty(this.filter));
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
clearFilter() {
|
clearFilter() {
|
||||||
|
@ -1 +1,3 @@
|
|||||||
|
export const INPUT_DELAY = 250;
|
||||||
|
|
||||||
export default { environment: Ember.testing ? "test" : "development" };
|
export default { environment: Ember.testing ? "test" : "development" };
|
||||||
|
@ -9,7 +9,7 @@ import {
|
|||||||
emojiSearch
|
emojiSearch
|
||||||
} from "pretty-text/emoji";
|
} from "pretty-text/emoji";
|
||||||
import { safariHacksDisabled } from "discourse/lib/utilities";
|
import { safariHacksDisabled } from "discourse/lib/utilities";
|
||||||
import ENV from "discourse-common/config/environment";
|
import ENV, { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
const { run } = Ember;
|
const { run } = Ember;
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ export default Component.extend({
|
|||||||
@observes("filter")
|
@observes("filter")
|
||||||
filterChanged() {
|
filterChanged() {
|
||||||
this.$filter.find(".clear-filter").toggle(!_.isEmpty(this.filter));
|
this.$filter.find(".clear-filter").toggle(!_.isEmpty(this.filter));
|
||||||
const filterDelay = this.site.isMobileDevice ? 400 : 250;
|
const filterDelay = this.site.isMobileDevice ? 400 : INPUT_DELAY;
|
||||||
run.debounce(this, this._filterEmojisList, filterDelay);
|
run.debounce(this, this._filterEmojisList, filterDelay);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ import { scheduleOnce } from "@ember/runloop";
|
|||||||
import Component from "@ember/component";
|
import Component from "@ember/component";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import { selectedText, selectedElement } from "discourse/lib/utilities";
|
import { selectedText, selectedElement } from "discourse/lib/utilities";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
function getQuoteTitle(element) {
|
function getQuoteTitle(element) {
|
||||||
const titleEl = element.querySelector(".title");
|
const titleEl = element.querySelector(".title");
|
||||||
@ -146,7 +147,7 @@ export default Component.extend({
|
|||||||
|
|
||||||
didInsertElement() {
|
didInsertElement() {
|
||||||
const { isWinphone, isAndroid } = this.capabilities;
|
const { isWinphone, isAndroid } = this.capabilities;
|
||||||
const wait = isWinphone || isAndroid ? 250 : 25;
|
const wait = isWinphone || isAndroid ? INPUT_DELAY : 25;
|
||||||
const onSelectionChanged = discourseDebounce(
|
const onSelectionChanged = discourseDebounce(
|
||||||
() => this._selectionChanged(),
|
() => this._selectionChanged(),
|
||||||
wait
|
wait
|
||||||
|
@ -5,6 +5,7 @@ import { escapeExpression } from "discourse/lib/utilities";
|
|||||||
import Group from "discourse/models/group";
|
import Group from "discourse/models/group";
|
||||||
import Badge from "discourse/models/badge";
|
import Badge from "discourse/models/badge";
|
||||||
import Category from "discourse/models/category";
|
import Category from "discourse/models/category";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
const REGEXP_BLOCKS = /(([^" \t\n\x0B\f\r]+)?(("[^"]+")?))/g;
|
const REGEXP_BLOCKS = /(([^" \t\n\x0B\f\r]+)?(("[^"]+")?))/g;
|
||||||
|
|
||||||
@ -82,7 +83,7 @@ export default Component.extend({
|
|||||||
@observes("searchTerm")
|
@observes("searchTerm")
|
||||||
_updateOptions() {
|
_updateOptions() {
|
||||||
this._update();
|
this._update();
|
||||||
debounce(this, this._update, 250);
|
debounce(this, this._update, INPUT_DELAY);
|
||||||
},
|
},
|
||||||
|
|
||||||
_init() {
|
_init() {
|
||||||
|
@ -4,6 +4,7 @@ import Invite from "discourse/models/invite";
|
|||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import { popupAjaxError } from "discourse/lib/ajax-error";
|
import { popupAjaxError } from "discourse/lib/ajax-error";
|
||||||
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
user: null,
|
user: null,
|
||||||
@ -30,7 +31,7 @@ export default Controller.extend({
|
|||||||
this.filter,
|
this.filter,
|
||||||
this.searchTerm
|
this.searchTerm
|
||||||
).then(invites => this.set("model", invites));
|
).then(invites => this.set("model", invites));
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
inviteRedeemed: equal("filter", "redeemed"),
|
inviteRedeemed: equal("filter", "redeemed"),
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import Composer from "discourse/models/composer";
|
|||||||
import { minimumOffset } from "discourse/lib/offset-calculator";
|
import { minimumOffset } from "discourse/lib/offset-calculator";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
import { throttle } from "@ember/runloop";
|
import { throttle } from "@ember/runloop";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
const bindings = {
|
const bindings = {
|
||||||
"!": { postAction: "showFlags" },
|
"!": { postAction: "showFlags" },
|
||||||
@ -299,19 +300,19 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
setTrackingToMuted(event) {
|
setTrackingToMuted(event) {
|
||||||
throttle(this, "_setTracking", { id: 0, event }, 250, true);
|
throttle(this, "_setTracking", { id: 0, event }, INPUT_DELAY, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
setTrackingToRegular(event) {
|
setTrackingToRegular(event) {
|
||||||
throttle(this, "_setTracking", { id: 1, event }, 250, true);
|
throttle(this, "_setTracking", { id: 1, event }, INPUT_DELAY, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
setTrackingToTracking(event) {
|
setTrackingToTracking(event) {
|
||||||
throttle(this, "_setTracking", { id: 2, event }, 250, true);
|
throttle(this, "_setTracking", { id: 2, event }, INPUT_DELAY, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
setTrackingToWatching(event) {
|
setTrackingToWatching(event) {
|
||||||
throttle(this, "_setTracking", { id: 3, event }, 250, true);
|
throttle(this, "_setTracking", { id: 3, event }, INPUT_DELAY, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
_setTracking(params) {
|
_setTracking(params) {
|
||||||
|
@ -4,6 +4,7 @@ import {
|
|||||||
safariHacksDisabled,
|
safariHacksDisabled,
|
||||||
iOSWithVisualViewport
|
iOSWithVisualViewport
|
||||||
} from "discourse/lib/utilities";
|
} from "discourse/lib/utilities";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
// TODO: remove calcHeight once iOS 13 adoption > 90%
|
// TODO: remove calcHeight once iOS 13 adoption > 90%
|
||||||
// In iOS 13 and up we use visualViewport API to calculate height
|
// In iOS 13 and up we use visualViewport API to calculate height
|
||||||
@ -136,7 +137,7 @@ function positioningWorkaround($fixedElement) {
|
|||||||
positioningWorkaround.blur(evt);
|
positioningWorkaround.blur(evt);
|
||||||
};
|
};
|
||||||
|
|
||||||
var blurred = discourseDebounce(blurredNow, 250);
|
var blurred = discourseDebounce(blurredNow, INPUT_DELAY);
|
||||||
|
|
||||||
var positioningHack = function(evt) {
|
var positioningHack = function(evt) {
|
||||||
// we need this, otherwise changing focus means we never clear
|
// we need this, otherwise changing focus means we never clear
|
||||||
|
@ -10,6 +10,7 @@ import loadScript from "discourse/lib/load-script";
|
|||||||
import computed, { observes } from "discourse-common/utils/decorators";
|
import computed, { observes } from "discourse-common/utils/decorators";
|
||||||
import { cookAsync } from "discourse/lib/text";
|
import { cookAsync } from "discourse/lib/text";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
timeFormat: "HH:mm:ss",
|
timeFormat: "HH:mm:ss",
|
||||||
@ -66,7 +67,7 @@ export default Component.extend({
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, 250),
|
}, INPUT_DELAY),
|
||||||
|
|
||||||
@computed("date", "toDate", "toTime")
|
@computed("date", "toDate", "toTime")
|
||||||
isRange(date, toDate, toTime) {
|
isRange(date, toDate, toTime) {
|
||||||
|
Reference in New Issue
Block a user