mirror of
https://github.com/discourse/discourse-custom-header-links.git
synced 2025-05-06 08:28:19 +00:00
This commit is a follow up to 73747938bde3c2d3f6f68350c48a320364be1b04 where the migration will fail because the objects created by the migration will end up failing to save because the objects will fail the validation given the new schema. This commit updates the migration to ensure that we do not end up with invalid objects.
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
export default function migrate(settings) {
|
|
const oldSetting = settings.get("custom_header_links");
|
|
|
|
// Do nothing if setting is already an array which means user has saved the setting in the new format
|
|
// This is required because there was a bug in core where this migration would fail but the theme was still updated
|
|
// allowing the users to save the setting in the new format.
|
|
if (Array.isArray(oldSetting)) {
|
|
return settings;
|
|
}
|
|
|
|
if (oldSetting) {
|
|
const newLinks = [];
|
|
|
|
oldSetting.split("|").forEach((link) => {
|
|
const [text, title, url, view, target, hideOnScroll, locale] = link
|
|
.split(",")
|
|
.map((s) => s.trim());
|
|
|
|
if (text && title && url) {
|
|
const newLink = {
|
|
text,
|
|
title,
|
|
url,
|
|
};
|
|
|
|
if (["vdm", "vdo", "vmo"].includes(view)) {
|
|
newLink.view = view;
|
|
} else {
|
|
newLink.view = "vdm";
|
|
}
|
|
|
|
if (["blank", "self"].includes(target)) {
|
|
newLink.target = target;
|
|
} else {
|
|
newLink.target = "blank";
|
|
}
|
|
|
|
if (["remove", "keep"].includes(hideOnScroll)) {
|
|
newLink.hide_on_scroll = hideOnScroll;
|
|
} else {
|
|
newLink.hide_on_scroll = "keep";
|
|
}
|
|
|
|
if (locale) {
|
|
newLink.locale = locale;
|
|
}
|
|
|
|
newLinks.push(newLink);
|
|
}
|
|
});
|
|
|
|
settings.set("custom_header_links", newLinks);
|
|
}
|
|
|
|
return settings;
|
|
}
|