mirror of
https://github.com/discourse/discourse.git
synced 2024-12-06 02:39:52 +08:00
0eda1c96f1
Why this change? Instead of dealing with a generic object for `Theme#settings`, we want to always be dealing with `ThemeSettings` objects.` Previously, we converted the generic objects to `ThemeSettings` objects in the theme's adapter `afterFindAll` function. This is not correct because updating or saving the theme individual reverted the `Theme#settings` back to an array of generic object. To fix this problem, the proper way with our REST models is to overwrite the static `munge` method and create `ThemeSettings` instances there.
30 lines
652 B
JavaScript
30 lines
652 B
JavaScript
import RestAdapter from "discourse/adapters/rest";
|
|
|
|
export default class Theme extends RestAdapter {
|
|
jsonMode = true;
|
|
|
|
basePath() {
|
|
return "/admin/";
|
|
}
|
|
|
|
afterFindAll(results) {
|
|
let map = {};
|
|
|
|
results.forEach((theme) => {
|
|
map[theme.id] = theme;
|
|
});
|
|
|
|
results.forEach((theme) => {
|
|
let mapped = theme.get("child_themes") || [];
|
|
mapped = mapped.map((t) => map[t.id]);
|
|
theme.set("childThemes", mapped);
|
|
|
|
let mappedParents = theme.get("parent_themes") || [];
|
|
mappedParents = mappedParents.map((t) => map[t.id]);
|
|
theme.set("parentThemes", mappedParents);
|
|
});
|
|
|
|
return results;
|
|
}
|
|
}
|