From 30c14297d01ba27861d811393295a5b1feaf39b4 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 30 Mar 2025 14:29:20 +0300 Subject: [PATCH] feat(backend-options): add a refresh floating button --- src/public/app/components/app_context.ts | 1 + src/public/app/layouts/desktop_layout.ts | 2 ++ src/public/app/layouts/mobile_layout.ts | 2 ++ .../floating_buttons/refresh_button.ts | 21 +++++++++++++++++++ .../type_widgets/content/backend_log.ts | 21 +++++++++++-------- .../widgets/type_widgets/content_widget.ts | 13 ++++++++++++ 6 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 src/public/app/widgets/floating_buttons/refresh_button.ts diff --git a/src/public/app/components/app_context.ts b/src/public/app/components/app_context.ts index 1bbe6b616..5c0295baa 100644 --- a/src/public/app/components/app_context.ts +++ b/src/public/app/components/app_context.ts @@ -374,6 +374,7 @@ type EventMappings = { cloneNoteIdsTo: { noteIds: string[]; }; + refreshData: { ntxId: string | null | undefined }; }; export type EventListener = { diff --git a/src/public/app/layouts/desktop_layout.ts b/src/public/app/layouts/desktop_layout.ts index 8a6a8befd..5745df470 100644 --- a/src/public/app/layouts/desktop_layout.ts +++ b/src/public/app/layouts/desktop_layout.ts @@ -92,6 +92,7 @@ import type { WidgetsByParent } from "../services/bundle.js"; import SwitchSplitOrientationButton from "../widgets/floating_buttons/switch_layout_button.js"; import ToggleReadOnlyButton from "../widgets/floating_buttons/toggle_read_only_button.js"; import PngExportButton from "../widgets/floating_buttons/png_export_button.js"; +import RefreshButton from "../widgets/floating_buttons/refresh_button.js"; export default class DesktopLayout { @@ -205,6 +206,7 @@ export default class DesktopLayout { .child(new WatchedFileUpdateStatusWidget()) .child( new FloatingButtons() + .child(new RefreshButton()) .child(new SwitchSplitOrientationButton()) .child(new ToggleReadOnlyButton()) .child(new EditButton()) diff --git a/src/public/app/layouts/mobile_layout.ts b/src/public/app/layouts/mobile_layout.ts index db4db49bc..6032c14c5 100644 --- a/src/public/app/layouts/mobile_layout.ts +++ b/src/public/app/layouts/mobile_layout.ts @@ -31,6 +31,7 @@ import TabRowWidget from "../widgets/tab_row.js"; import JumpToNoteDialog from "../widgets/dialogs/jump_to_note.js"; import RecentChangesDialog from "../widgets/dialogs/recent_changes.js"; import PromptDialog from "../widgets/dialogs/prompt.js"; +import RefreshButton from "../widgets/floating_buttons/refresh_button.js"; const MOBILE_CSS = ` -

-
-    
- -
+
`;
 
 export default class BackendLogWidget extends AbstractCodeTypeWidget {
@@ -27,15 +24,20 @@ export default class BackendLogWidget extends AbstractCodeTypeWidget {
         super.doRender();
         this.$widget = $(TPL);
         this.$editor = this.$widget.find(".backend-log-editor");
-
-        this.$refreshBackendLog = this.$widget.find(".refresh-backend-log-button");
-        this.$refreshBackendLog.on("click", () => this.load());
     }
 
     async refresh() {
         await this.load();
     }
 
+    async refreshDataEvent({ ntxId }: EventData<"refreshData">) {
+        if (ntxId !== this.noteContext?.ntxId) {
+            return;
+        }
+
+        this.refresh();
+    }
+
     getExtraOpts(): Partial {
         return {
             readOnly: true
@@ -55,4 +57,5 @@ export default class BackendLogWidget extends AbstractCodeTypeWidget {
         this.show();
         this.scrollToEnd();
     }
+
 }
diff --git a/src/public/app/widgets/type_widgets/content_widget.ts b/src/public/app/widgets/type_widgets/content_widget.ts
index e0b0deaf7..0a4f8f15f 100644
--- a/src/public/app/widgets/type_widgets/content_widget.ts
+++ b/src/public/app/widgets/type_widgets/content_widget.ts
@@ -41,6 +41,8 @@ import type FNote from "../../entities/fnote.js";
 import type NoteContextAwareWidget from "../note_context_aware_widget.js";
 import { t } from "i18next";
 import LanguageOptions from "./options/i18n/language.js";
+import type { EventData, EventNames } from "../../components/app_context.js";
+import type BasicWidget from "../basic_widget.js";
 
 const TPL = `