FEATURE: Add remembering topic list for group pms (#8235)

* FEATURE: Add remembering topic list for group pms

* added findOrResetCachedBy helper in topic-list

* Created cached-topic-list.js

* Update app/assets/javascripts/discourse/routes/build-private-messages-route.js.es6

Co-Authored-By: Robin Ward <robin.ward@gmail.com>
This commit is contained in:
Mark VanLandingham 2019-10-24 09:27:03 -05:00 committed by GitHub
parent f5d6236ad2
commit da5e9af10a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 18 deletions

View File

@ -0,0 +1,12 @@
export function findOrResetCachedTopicList(session, filter) {
const lastTopicList = session.get("topicList");
if (lastTopicList && lastTopicList.filter === filter) {
return lastTopicList;
} else {
session.setProperties({
topicList: null,
topicListScrollPosition: null
});
return false;
}
}

View File

@ -1,4 +1,5 @@
import UserTopicListRoute from "discourse/routes/user-topic-list";
import { findOrResetCachedTopicList } from "discourse/lib/cached-topic-list";
// A helper to build a user topic list route
export default (viewName, path, channel) => {
@ -18,19 +19,10 @@ export default (viewName, path, channel) => {
},
model() {
const session = Discourse.Session.current();
let filter =
const filter =
"topics/" + path + "/" + this.modelFor("user").get("username_lower");
let lastTopicList = session.get("topicList");
if (lastTopicList && lastTopicList.filter === filter) {
return lastTopicList;
} else {
session.setProperties({
topicList: null,
topicListScrollPosition: null
});
return this.store.findFiltered("topicList", { filter });
}
const lastTopicList = findOrResetCachedTopicList(this.session, filter);
return lastTopicList ? lastTopicList : this.store.findFiltered("topicList", { filter });
},
setupController() {

View File

@ -1,4 +1,5 @@
import createPMRoute from "discourse/routes/build-private-messages-route";
import { findOrResetCachedTopicList } from "discourse/lib/cached-topic-list";
export default createPMRoute("groups", "private-messages-groups").extend({
groupName: null,
@ -16,9 +17,10 @@ export default createPMRoute("groups", "private-messages-groups").extend({
model(params) {
const username = this.modelFor("user").get("username_lower");
return this.store.findFiltered("topicList", {
filter: `topics/private-messages-group/${username}/${params.name}/archive`
});
const filter =
`topics/private-messages-group/${username}/${params.name}/archive`;
const lastTopicList = findOrResetCachedTopicList(this.session, filter);
return lastTopicList ? lastTopicList : this.store.findFiltered("topicList", { filter });
},
afterModel(model) {

View File

@ -1,4 +1,5 @@
import createPMRoute from "discourse/routes/build-private-messages-route";
import { findOrResetCachedTopicList } from "discourse/lib/cached-topic-list";
export default createPMRoute("groups", "private-messages-groups").extend({
groupName: null,
@ -11,9 +12,10 @@ export default createPMRoute("groups", "private-messages-groups").extend({
model(params) {
const username = this.modelFor("user").get("username_lower");
return this.store.findFiltered("topicList", {
filter: `topics/private-messages-group/${username}/${params.name}`
});
const filter =
`topics/private-messages-group/${username}/${params.name}`;
const lastTopicList = findOrResetCachedTopicList(this.session, filter);
return lastTopicList ? lastTopicList : this.store.findFiltered("topicList", { filter });
},
afterModel(model) {