Skip to content

Commit e0bf972

Browse files
authored
DEV: Refactor DeprecationCollector and expand deprecation ID handling (#86)
* DEV: Refactor `DeprecationCollector` and expand deprecation ID handling Replaced `DEPRECATION_WORKFLOW` usage in `DeprecationCollector` with the `DeprecationWorkflow` module and removed unused `#configById` map for a cleaner implementation. Enhanced the `discourse_deprecation_ids.yml` file to include native array extension deprecations. Introduce fallback behavior in `DeprecationCollector` to support older versions of core where `DeprecationWorkflow.shouldSilence` is undefined. A temporary `#configById` map is used to handle silenced deprecations until version `v3.6.0.beta2-dev`. Includes TODOs for cleanup post-update.
1 parent db0ec65 commit e0bf972

File tree

3 files changed

+123
-6
lines changed

3 files changed

+123
-6
lines changed

assets/javascripts/discourse/services/deprecation-collector.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { registerDeprecationHandler } from "@ember/debug";
22
import { cancel } from "@ember/runloop";
33
import Service, { service } from "@ember/service";
4-
import DEPRECATION_WORKFLOW from "discourse/deprecation-workflow";
4+
import DeprecationWorkflow from "discourse/deprecation-workflow";
55
import discourseDebounce from "discourse/lib/debounce";
66
import { bind } from "discourse/lib/decorators";
77
import { registerDeprecationHandler as registerDiscourseDeprecationHandler } from "discourse/lib/deprecated";
@@ -30,8 +30,14 @@ export default class DeprecationCollector extends Service {
3030
super(...arguments);
3131
handler = this.track;
3232

33-
for (const c of DEPRECATION_WORKFLOW) {
34-
this.#configById.set(c.matchId, c.handler);
33+
// TODO (discourse.native-array-extensions) remove the map and related code once we get to v3.6.0.beta2-dev and can
34+
// also update .discourse-compatibility accordingly.
35+
// populate the map if the `shouldSilence` is not defined in the deprecation workflow. it means the plugin is
36+
// deployed with an older version of core.
37+
if (!DeprecationWorkflow.shouldSilence) {
38+
for (const c of DeprecationWorkflow) {
39+
this.#configById.set(c.matchId, c.handler);
40+
}
3541
}
3642

3743
document.addEventListener("visibilitychange", this.handleVisibilityChanged);
@@ -59,8 +65,15 @@ export default class DeprecationCollector extends Service {
5965

6066
@bind
6167
track(message, options) {
62-
if (this.#configById.get(options.id) === "silence") {
63-
return;
68+
// TODO (discourse.native-array-extensions) keep only `if (DeprecationWorkflow.shouldSilence(options.id))` once we get to v3.6.0.beta2-dev
69+
if (DeprecationWorkflow.shouldSilence) {
70+
if (DeprecationWorkflow.shouldSilence(options.id)) {
71+
return;
72+
}
73+
} else {
74+
if (this.#configById.get(options.id) === "silence") {
75+
return;
76+
}
6477
}
6578

6679
if (identifySource()?.type === "browser-extension") {

deprecation-finder/update_discourse_core_deprecations.mjs

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,60 @@ const EXCLUDED_DIR_PATTERNS = [
2525
"/discourse/plugins/",
2626
];
2727
const filesToDebug = [];
28-
const idsToInclude = ["discourse.post-stream-widget-overrides"];
28+
const idsToInclude = [
29+
"discourse.native-array-extensions.[]",
30+
"discourse.native-array-extensions.addObject",
31+
"discourse.native-array-extensions.addObjects",
32+
"discourse.native-array-extensions.addObserver",
33+
"discourse.native-array-extensions.any",
34+
"discourse.native-array-extensions.beginPropertyChanges",
35+
"discourse.native-array-extensions.cacheFor",
36+
"discourse.native-array-extensions.clear",
37+
"discourse.native-array-extensions.compact",
38+
"discourse.native-array-extensions.decrementProperty",
39+
"discourse.native-array-extensions.endPropertyChanges",
40+
"discourse.native-array-extensions.filterBy",
41+
"discourse.native-array-extensions.findBy",
42+
"discourse.native-array-extensions.get",
43+
"discourse.native-array-extensions.getEach",
44+
"discourse.native-array-extensions.getProperties",
45+
"discourse.native-array-extensions.hasObserverFor",
46+
"discourse.native-array-extensions.incrementProperty",
47+
"discourse.native-array-extensions.init",
48+
"discourse.native-array-extensions.insertAt",
49+
"discourse.native-array-extensions.invoke",
50+
"discourse.native-array-extensions.isAny",
51+
"discourse.native-array-extensions.isEvery",
52+
"discourse.native-array-extensions.mapBy",
53+
"discourse.native-array-extensions.notifyPropertyChange",
54+
"discourse.native-array-extensions.objectAt",
55+
"discourse.native-array-extensions.objectsAt",
56+
"discourse.native-array-extensions.popObject",
57+
"discourse.native-array-extensions.pushObject",
58+
"discourse.native-array-extensions.pushObjects",
59+
"discourse.native-array-extensions.reject",
60+
"discourse.native-array-extensions.rejectBy",
61+
"discourse.native-array-extensions.removeAt",
62+
"discourse.native-array-extensions.removeObject",
63+
"discourse.native-array-extensions.removeObjects",
64+
"discourse.native-array-extensions.removeObserver",
65+
"discourse.native-array-extensions.replace",
66+
"discourse.native-array-extensions.reverseObjects",
67+
"discourse.native-array-extensions.set",
68+
"discourse.native-array-extensions.setEach",
69+
"discourse.native-array-extensions.setObjects",
70+
"discourse.native-array-extensions.setProperties",
71+
"discourse.native-array-extensions.shiftObject",
72+
"discourse.native-array-extensions.sortBy",
73+
"discourse.native-array-extensions.toArray",
74+
"discourse.native-array-extensions.toggleProperty",
75+
"discourse.native-array-extensions.uniq",
76+
"discourse.native-array-extensions.uniqBy",
77+
"discourse.native-array-extensions.unshiftObject",
78+
"discourse.native-array-extensions.unshiftObjects",
79+
"discourse.native-array-extensions.without",
80+
"discourse.post-stream-widget-overrides",
81+
];
2982

3083
async function isExcludedDir(filePath) {
3184
return EXCLUDED_DIR_PATTERNS.some((pattern) => filePath.includes(pattern));

lib/deprecation_collector/deprecation-ids.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,57 @@ discourse_deprecation_ids:
5959
- discourse.markdown-it.whitelist
6060
- discourse.modal-controllers
6161
- discourse.models-store
62+
- discourse.native-array-extensions.[]
63+
- discourse.native-array-extensions.addObject
64+
- discourse.native-array-extensions.addObjects
65+
- discourse.native-array-extensions.addObserver
66+
- discourse.native-array-extensions.any
67+
- discourse.native-array-extensions.beginPropertyChanges
68+
- discourse.native-array-extensions.cacheFor
69+
- discourse.native-array-extensions.clear
70+
- discourse.native-array-extensions.compact
71+
- discourse.native-array-extensions.decrementProperty
72+
- discourse.native-array-extensions.endPropertyChanges
73+
- discourse.native-array-extensions.filterBy
74+
- discourse.native-array-extensions.findBy
75+
- discourse.native-array-extensions.get
76+
- discourse.native-array-extensions.getEach
77+
- discourse.native-array-extensions.getProperties
78+
- discourse.native-array-extensions.hasObserverFor
79+
- discourse.native-array-extensions.incrementProperty
80+
- discourse.native-array-extensions.init
81+
- discourse.native-array-extensions.insertAt
82+
- discourse.native-array-extensions.invoke
83+
- discourse.native-array-extensions.isAny
84+
- discourse.native-array-extensions.isEvery
85+
- discourse.native-array-extensions.mapBy
86+
- discourse.native-array-extensions.notifyPropertyChange
87+
- discourse.native-array-extensions.objectAt
88+
- discourse.native-array-extensions.objectsAt
89+
- discourse.native-array-extensions.popObject
90+
- discourse.native-array-extensions.pushObject
91+
- discourse.native-array-extensions.pushObjects
92+
- discourse.native-array-extensions.reject
93+
- discourse.native-array-extensions.rejectBy
94+
- discourse.native-array-extensions.removeAt
95+
- discourse.native-array-extensions.removeObject
96+
- discourse.native-array-extensions.removeObjects
97+
- discourse.native-array-extensions.removeObserver
98+
- discourse.native-array-extensions.replace
99+
- discourse.native-array-extensions.reverseObjects
100+
- discourse.native-array-extensions.set
101+
- discourse.native-array-extensions.setEach
102+
- discourse.native-array-extensions.setObjects
103+
- discourse.native-array-extensions.setProperties
104+
- discourse.native-array-extensions.shiftObject
105+
- discourse.native-array-extensions.sortBy
106+
- discourse.native-array-extensions.toArray
107+
- discourse.native-array-extensions.toggleProperty
108+
- discourse.native-array-extensions.uniq
109+
- discourse.native-array-extensions.uniqBy
110+
- discourse.native-array-extensions.unshiftObject
111+
- discourse.native-array-extensions.unshiftObjects
112+
- discourse.native-array-extensions.without
62113
- discourse.nav-item.built-list-site-settings
63114
- discourse.navigation-category-controller
64115
- discourse.number-field

0 commit comments

Comments
 (0)