fix(ribbon): not refreshing if note is temporarily edited

This commit is contained in:
Elian Doran 2025-11-09 20:14:51 +02:00
parent 532df6559a
commit 6f245ec8d5
No known key found for this signature in database
3 changed files with 11 additions and 5 deletions

View File

@ -7,7 +7,6 @@ import protectedSessionService from "../services/protected_session.js";
import options from "../services/options.js";
import froca from "../services/froca.js";
import utils from "../services/utils.js";
import LlmChatPanel from "../widgets/llm_chat_panel.js";
import toastService from "../services/toast.js";
import noteCreateService from "../services/note_create.js";

View File

@ -199,6 +199,7 @@ export function useNoteContext() {
const [ notePath, setNotePath ] = useState<string | null | undefined>();
const [ note, setNote ] = useState<FNote | null | undefined>();
const [ , setViewMode ] = useState<ViewMode>();
const [ isReadOnlyTemporarilyDisabled, setIsReadOnlyTemporarilyDisabled ] = useState<boolean | null | undefined>(noteContext?.viewScope?.isReadOnly);
const [ refreshCounter, setRefreshCounter ] = useState(0);
useEffect(() => {
@ -218,6 +219,11 @@ export function useNoteContext() {
setRefreshCounter(refreshCounter + 1);
}
});
useTriliumEvent("readOnlyTemporarilyDisabled", ({ noteContext: eventNoteContext }) => {
if (eventNoteContext.ntxId === noteContext?.ntxId) {
setIsReadOnlyTemporarilyDisabled(eventNoteContext?.viewScope?.readOnlyTemporarilyDisabled);
}
});
const parentComponent = useContext(ParentComponent) as ReactWrappedWidget;
useDebugValue(() => `notePath=${notePath}, ntxId=${noteContext?.ntxId}`);
@ -231,7 +237,8 @@ export function useNoteContext() {
viewScope: noteContext?.viewScope,
componentId: parentComponent.componentId,
noteContext,
parentComponent
parentComponent,
isReadOnlyTemporarilyDisabled
};
}
@ -749,4 +756,4 @@ async function isNoteReadOnly(note: FNote, noteContext: NoteContext) {
}
return true;
}
}

View File

@ -16,7 +16,7 @@ interface ComputedTab extends Indexed<TabConfiguration> {
}
export default function Ribbon() {
const { note, ntxId, hoistedNoteId, notePath, noteContext, componentId } = useNoteContext();
const { note, ntxId, hoistedNoteId, notePath, noteContext, componentId, isReadOnlyTemporarilyDisabled } = useNoteContext();
const noteType = useNoteProperty(note, "type");
const [ activeTabIndex, setActiveTabIndex ] = useState<number | undefined>();
const [ computedTabs, setComputedTabs ] = useState<ComputedTab[]>();
@ -39,7 +39,7 @@ export default function Ribbon() {
useEffect(() => {
refresh();
}, [ note, noteType ]);
}, [ note, noteType, isReadOnlyTemporarilyDisabled ]);
// Automatically activate the first ribbon tab that needs to be activated whenever a note changes.
useEffect(() => {