Skip to content

Commit 35a14ff

Browse files
committed
Move getDiscussionIdFromSlug into its own function
1 parent 47f65dd commit 35a14ff

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

js/src/forum/resolver/DiscussionPageResolver.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,42 @@
11
import DefaultResolver from '../../common/resolvers/DefaultResolver';
22

3+
/**
4+
* This isn't exported as it is a temporary measure.
5+
* A more robust system will be implemented alongside UTF-8 support in beta 15.
6+
*/
7+
function getDiscussionIdFromSlug(slug: string | undefined) {
8+
if (!slug) return;
9+
return slug.split('-')[0];
10+
}
11+
312
/**
413
* A custom route resolver for DiscussionPage that generates the same key to all posts
514
* on the same discussion. It triggers a scroll when going from one post to another
615
* in the same discussion.
716
*/
817
export default class DiscussionPageResolver extends DefaultResolver {
9-
static scrollToPostNumber: string | null = null;
18+
static scrollToPostNumber: number | null = null;
1019

1120
makeKey() {
1221
const params = { ...m.route.param() };
1322
if ('near' in params) {
1423
delete params.near;
1524
}
16-
if ('id' in params && params.id.includes('-')) {
17-
params.id = params.id.split('-')[0];
18-
}
25+
params.id = getDiscussionIdFromSlug(params.id);
1926
return this.routeName.replace('.near', '') + JSON.stringify(params);
2027
}
2128

2229
onmatch(args, requestedPath, route) {
23-
const sameDiscussion = m.route.param('id') && args.id && m.route.param('id').split('-')[0] === args.id.split('-')[0];
24-
if (route.startsWith('/d/:id') && sameDiscussion) {
25-
DiscussionPageResolver.scrollToPostNumber = args.near;
30+
if (route.includes('/d/:id') && getDiscussionIdFromSlug(args.id) === getDiscussionIdFromSlug(m.route.param('id'))) {
31+
DiscussionPageResolver.scrollToPostNumber = parseInt(args.near);
2632
}
2733

2834
return super.onmatch(args, requestedPath, route);
2935
}
3036

3137
render(vnode) {
3238
if (DiscussionPageResolver.scrollToPostNumber !== null) {
33-
console.log(DiscussionPageResolver.scrollToPostNumber);
34-
app.current.get('stream').goToNumber(parseInt(DiscussionPageResolver.scrollToPostNumber));
39+
app.current.get('stream').goToNumber(DiscussionPageResolver.scrollToPostNumber);
3540
DiscussionPageResolver.scrollToPostNumber = null;
3641
}
3742

0 commit comments

Comments
 (0)