fix initial hotbar not showing (#2551)

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen authored and GitHub committed 2021-04-20 09:09:13 +03:00
1 parent 8dde4a1ecb
commit 8d42d40433
3 files changed
+37 -9

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
import mockFs from "mock-fs";
import { HotbarStore, hotbarStore } from "../hotbar-store";
describe("HotbarStore", () => {
beforeEach(() => {
HotbarStore.resetInstance();
mockFs({ tmp: { "lens-hotbar-store.json": "{}" } });
});
afterEach(() => {
mockFs.restore();
});
describe("load", () => {
it("loads one hotbar by default", () => {
hotbarStore.load();
expect(hotbarStore.hotbars.length).toEqual(1);
});
});
});
+8 -4
View File
@@ -35,10 +35,14 @@ export class HotbarStore extends BaseStore<HotbarStoreModel> {
}
@action protected async fromStore(data: Partial<HotbarStoreModel> = {}) {
this.hotbars = data.hotbars || [{
name: "default",
items: []
}];
if (data.hotbars?.length === 0) {
this.hotbars = [{
name: "default",
items: []
}];
} else {
this.hotbars = data.hotbars;
}
}
getByName(name: string) {
@@ -14,20 +14,24 @@ interface Props {
@observer
export class HotbarMenu extends React.Component<Props> {
render() {
const { className } = this.props;
get hotbarItems() {
const hotbar = hotbarStore.getByName("default"); // FIXME
if (!hotbar) {
return null;
return [];
}
const items = hotbar.items.map((item) => catalogEntityRegistry.items.find((entity) => entity.metadata.uid === item.entity.uid)).filter(Boolean);
return hotbar.items.map((item) => catalogEntityRegistry.items.find((entity) => entity.metadata.uid === item.entity.uid)).filter(Boolean);
}
render() {
const { className } = this.props;
return (
<div className={cssNames("HotbarMenu flex column", className)}>
<div className="items flex column gaps">
{items.map((entity, index) => {
{this.hotbarItems.map((entity, index) => {
return (
<HotbarIcon
key={index}