|
1 | 1 | import Service, { inject as service } from "@ember/service"; |
2 | 2 | import discourseComputed from "discourse-common/utils/decorators"; |
3 | 3 | import Site from "discourse/models/site"; |
| 4 | +import { dependentKeyCompat } from "@ember/object/compat"; |
4 | 5 |
|
5 | 6 | const minimalGridCategories = settings.minimal_grid_categories |
6 | 7 | .split("|") |
@@ -28,49 +29,34 @@ const gridTags = settings.grid_tags.split("|"); |
28 | 29 | const masonryTags = settings.masonry_tags.split("|"); |
29 | 30 | const blogStyleTags = settings.blog_style_tags.split("|"); |
30 | 31 |
|
31 | | -export default Service.extend({ |
32 | | - router: service("router"), |
| 32 | +export default class TopicThumbnailService extends Service { |
| 33 | + @service router; |
| 34 | + @service discovery; |
33 | 35 |
|
34 | | - @discourseComputed("router.currentRouteName") |
35 | | - isTopicListRoute(currentRouteName) { |
36 | | - return ( |
37 | | - currentRouteName.match(/^discovery\./) || |
38 | | - currentRouteName.match(/^tags?\.show/) |
39 | | - ); |
40 | | - }, |
| 36 | + @dependentKeyCompat |
| 37 | + get isTopicListRoute() { |
| 38 | + return this.discovery.onDiscoveryRoute; |
| 39 | + } |
41 | 40 |
|
42 | 41 | @discourseComputed("router.currentRouteName") |
43 | 42 | isTopicRoute(currentRouteName) { |
44 | 43 | return currentRouteName.match(/^topic\./); |
45 | | - }, |
| 44 | + } |
46 | 45 |
|
47 | 46 | @discourseComputed("router.currentRouteName") |
48 | 47 | isDocsRoute(currentRouteName) { |
49 | 48 | return currentRouteName.match(/^docs\./); |
50 | | - }, |
| 49 | + } |
51 | 50 |
|
52 | | - @discourseComputed( |
53 | | - "router.currentRouteName", |
54 | | - "router.currentRoute.attributes.category.id" |
55 | | - ) |
56 | | - viewingCategoryId(currentRouteName, categoryId) { |
57 | | - if (!currentRouteName.match(/^discovery\./)) { |
58 | | - return; |
59 | | - } |
60 | | - return categoryId; |
61 | | - }, |
| 51 | + @dependentKeyCompat |
| 52 | + get viewingCategoryId() { |
| 53 | + return this.discovery.category?.id; |
| 54 | + } |
62 | 55 |
|
63 | | - @discourseComputed( |
64 | | - "router.currentRouteName", |
65 | | - "router.currentRoute.attributes.id", // For discourse instances earlier than https://github.com/discourse/discourse/commit/f7b5ff39cf |
66 | | - "router.currentRoute.attributes.tag.id" |
67 | | - ) |
68 | | - viewingTagId(currentRouteName, legacyTagId, tagId) { |
69 | | - if (!currentRouteName.match(/^tags?\.show/)) { |
70 | | - return; |
71 | | - } |
72 | | - return tagId || legacyTagId; |
73 | | - }, |
| 56 | + @dependentKeyCompat |
| 57 | + get viewingTagId() { |
| 58 | + return this.discovery.tag?.id; |
| 59 | + } |
74 | 60 |
|
75 | 61 | @discourseComputed( |
76 | 62 | "viewingCategoryId", |
@@ -120,50 +106,50 @@ export default Service.extend({ |
120 | 106 | } else { |
121 | 107 | return "none"; |
122 | 108 | } |
123 | | - }, |
| 109 | + } |
124 | 110 |
|
125 | 111 | @discourseComputed("displayMode") |
126 | 112 | enabledForRoute(displayMode) { |
127 | 113 | return displayMode !== "none"; |
128 | | - }, |
| 114 | + } |
129 | 115 |
|
130 | 116 | @discourseComputed() |
131 | 117 | enabledForDevice() { |
132 | 118 | return Site.current().mobileView ? settings.mobile_thumbnails : true; |
133 | | - }, |
| 119 | + } |
134 | 120 |
|
135 | 121 | @discourseComputed("enabledForRoute", "enabledForDevice") |
136 | 122 | shouldDisplay(enabledForRoute, enabledForDevice) { |
137 | 123 | return enabledForRoute && enabledForDevice; |
138 | | - }, |
| 124 | + } |
139 | 125 |
|
140 | 126 | @discourseComputed("shouldDisplay", "displayMode") |
141 | 127 | displayMinimalGrid(shouldDisplay, displayMode) { |
142 | 128 | return shouldDisplay && displayMode === "minimal-grid"; |
143 | | - }, |
| 129 | + } |
144 | 130 |
|
145 | 131 | @discourseComputed("shouldDisplay", "displayMode") |
146 | 132 | displayList(shouldDisplay, displayMode) { |
147 | 133 | return shouldDisplay && displayMode === "list"; |
148 | | - }, |
| 134 | + } |
149 | 135 |
|
150 | 136 | @discourseComputed("shouldDisplay", "displayMode") |
151 | 137 | displayGrid(shouldDisplay, displayMode) { |
152 | 138 | return shouldDisplay && displayMode === "grid"; |
153 | | - }, |
| 139 | + } |
154 | 140 |
|
155 | 141 | @discourseComputed("shouldDisplay", "displayMode") |
156 | 142 | displayMasonry(shouldDisplay, displayMode) { |
157 | 143 | return shouldDisplay && displayMode === "masonry"; |
158 | | - }, |
| 144 | + } |
159 | 145 |
|
160 | 146 | @discourseComputed("shouldDisplay", "displayMode") |
161 | 147 | displayBlogStyle(shouldDisplay, displayMode) { |
162 | 148 | return shouldDisplay && displayMode === "blog-style"; |
163 | | - }, |
| 149 | + } |
164 | 150 |
|
165 | 151 | @discourseComputed("displayMinimalGrid", "displayBlogStyle") |
166 | 152 | showLikes(isMinimalGrid) { |
167 | 153 | return isMinimalGrid; |
168 | | - }, |
169 | | -}); |
| 154 | + } |
| 155 | +} |
0 commit comments