52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
import tinycolor from "tinycolor2";
|
|
|
|
export class uniformThemecolor1652859567549 {
|
|
name = "uniformThemecolor1652859567549";
|
|
|
|
async up(queryRunner) {
|
|
const formatColor = (color) => {
|
|
let tc = new tinycolor(color);
|
|
if (tc.isValid()) {
|
|
return tc.toHexString();
|
|
} else {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
await queryRunner
|
|
.query(
|
|
'SELECT "id", "themeColor" FROM "instance" WHERE "themeColor" IS NOT NULL',
|
|
)
|
|
.then((instances) =>
|
|
Promise.all(
|
|
instances.map((instance) => {
|
|
// update theme color to uniform format, e.g. #00ff00
|
|
// invalid theme colors get set to null
|
|
return queryRunner.query(
|
|
'UPDATE "instance" SET "themeColor" = $1 WHERE "id" = $2',
|
|
[formatColor(instance.themeColor), instance.id],
|
|
);
|
|
}),
|
|
),
|
|
);
|
|
|
|
// also fix own theme color
|
|
await queryRunner
|
|
.query(
|
|
'SELECT "themeColor" FROM "meta" WHERE "themeColor" IS NOT NULL LIMIT 1',
|
|
)
|
|
.then((metas) => {
|
|
if (metas.length > 0) {
|
|
return queryRunner.query('UPDATE "meta" SET "themeColor" = $1', [
|
|
formatColor(metas[0].themeColor),
|
|
]);
|
|
}
|
|
});
|
|
}
|
|
|
|
async down(queryRunner) {
|
|
// The original representation is not stored, so migrating back is not possible.
|
|
// The new format also works in older versions so this is not a problem.
|
|
}
|
|
}
|