discourse/app/assets/javascripts/admin/addon/adapters/theme.js
Alan Guo Xiang Tan 8d4f405da4
DEV: Allow typed objects theme settings to be saved via settings editor (#26100)
Why this change?

On the `/admin/customize/themes/<:id>` route, we allow admins to edit
all settings via a settings editor. Prior to this change, trying to edit
and save a typed objects theme settings will result in an error on the
server.
2024-03-11 08:42:12 +08:00

37 lines
870 B
JavaScript

import RestAdapter from "discourse/adapters/rest";
import ThemeSettings from "admin/models/theme-settings";
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);
if (theme.settings) {
theme.set(
"settings",
theme.settings.map((setting) => ThemeSettings.create(setting))
);
}
});
return results;
}
}