diff --git a/apps/client/src/widgets/PromotedAttributes.tsx b/apps/client/src/widgets/PromotedAttributes.tsx index a0b1699a7..7bcd75a7e 100644 --- a/apps/client/src/widgets/PromotedAttributes.tsx +++ b/apps/client/src/widgets/PromotedAttributes.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from "preact/hooks"; import "./PromotedAttributes.css"; -import { useNoteContext } from "./react/hooks"; +import { useNoteContext, useNoteLabel } from "./react/hooks"; import { Attribute } from "../services/attribute_parser"; import FAttribute from "../entities/fattribute"; import clsx from "clsx"; @@ -17,9 +17,13 @@ interface Cell { export default function PromotedAttributes() { const { note } = useNoteContext(); const [ cells, setCells ] = useState(); + const [ viewType ] = useNoteLabel(note, "viewType"); useEffect(() => { - if (!note) return; + if (!note || viewType === "table") { + setCells([]); + return; + } const promotedDefAttrs = note.getPromotedDefinitionAttributes(); const ownedAttributes = note.getOwnedAttributes(); // attrs are not resorted if position changes after the initial load @@ -53,7 +57,7 @@ export default function PromotedAttributes() { } } setCells(cells); - }, [ note ]); + }, [ note, viewType ]); return (
diff --git a/apps/client/src/widgets/promoted_attributes.ts b/apps/client/src/widgets/promoted_attributes.ts index b89d8ea7f..692830edd 100644 --- a/apps/client/src/widgets/promoted_attributes.ts +++ b/apps/client/src/widgets/promoted_attributes.ts @@ -19,36 +19,6 @@ interface AttributeResult { export default class PromotedAttributesWidget extends NoteContextAwareWidget { - private $container!: JQuery; - - doRender() { - this.contentSized(); - } - - async refreshWithNote(note: FNote) { - this.$container.empty(); - - if (promotedDefAttrs.length === 0 || note.getLabelValue("viewType") === "table") { - this.toggleInt(false); - return; - } - - const $cells: JQuery[] = []; - - for (const valueAttr of valueAttrs) { - const $cell = await this.createPromotedAttributeCell(definitionAttr, valueAttr, valueName); - - if ($cell) { - $cells.push($cell); - } - } - - // we replace the whole content in one step, so there can't be any race conditions - // (previously we saw promoted attributes doubling) - this.$container.empty().append(...$cells); - this.toggleInt(true); - } - async createPromotedAttributeCell(definitionAttr: FAttribute, valueAttr: Attribute, valueName: string) { const definition = definitionAttr.getDefinition();