This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/mixins/string-buffer.js.es6

46 lines
1.1 KiB
JavaScript

export default Ember.Mixin.create({
_watchProps: function() {
const args = this.get('rerenderTriggers');
if (!Ember.isNone(args)) {
args.forEach(k => this.addObserver(k, this.rerenderString));
}
}.on('init'),
render(buffer) {
this.renderString(buffer);
},
renderString(buffer){
const template = Discourse.__container__.lookup('template:' + this.rawTemplate);
if (template) {
buffer.push(template(this));
}
},
_rerenderString() {
const $sel = this.$();
if (!$sel) { return; }
const buffer = [];
this.renderString(buffer);
// Chrome likes scrolling after HTML is set
// This happens if you navigate back and forth a few times
// Before removing this code confirm that this does not cause scrolling
// 1. Sort by views
// 2. Go to last post on one of the topics
// 3. Hit back
// 4. Go to last post on same topic
// 5. Expand likes
const scrollTop = $(window).scrollTop();
$sel.html(buffer.join(''));
$(window).scrollTop(scrollTop);
},
rerenderString() {
Ember.run.once(this, '_rerenderString');
}
});