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/models/user-posts-stream.js.es6
2019-05-31 13:02:15 +02:00

66 lines
1.4 KiB
JavaScript

import { on } from "ember-addons/ember-computed-decorators";
import { ajax } from "discourse/lib/ajax";
import { url } from "discourse/lib/computed";
import UserAction from "discourse/models/user-action";
export default Discourse.Model.extend({
loaded: false,
@on("init")
_initialize() {
this.setProperties({
itemsLoaded: 0,
canLoadMore: true,
content: []
});
},
url: url(
"user.username_lower",
"filter",
"itemsLoaded",
"/posts/%@/%@?offset=%@"
),
filterBy(opts) {
if (this.loaded && this.filter === opts.filter) {
return Ember.RSVP.resolve();
}
this.setProperties(
Object.assign(
{
itemsLoaded: 0,
content: [],
lastLoadedUrl: null
},
opts
)
);
return this.findItems();
},
findItems() {
if (this.loading || !this.canLoadMore) {
return Ember.RSVP.reject();
}
this.set("loading", true);
return ajax(this.url, { cache: false })
.then(result => {
if (result) {
const posts = result.map(post => UserAction.create(post));
this.content.pushObjects(posts);
this.setProperties({
loaded: true,
itemsLoaded: this.itemsLoaded + posts.length,
canLoadMore: posts.length > 0
});
}
})
.finally(() => this.set("loading", false));
}
});