astro-integration-pocketbase 1.3.0 → 1.4.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astro-integration-pocketbase",
3
- "version": "1.3.0",
3
+ "version": "1.4.0-next.1",
4
4
  "description": "An Astro integration to support developers working with astro-loader-pocketbase.",
5
5
  "license": "MIT",
6
6
  "author": "Luis Wolf <development@pawcode.de> (https://pawcode.de)",
@@ -51,7 +51,7 @@ export function refreshCollectionsRealtime(
51
51
  let isConnected = false;
52
52
 
53
53
  // Log potential errors
54
- eventSource.onerror = (error) => {
54
+ eventSource.onerror = (error): void => {
55
55
  isConnected = false;
56
56
 
57
57
  // Wait for 5 seconds in case of a connection error
@@ -16,24 +16,30 @@ export function handleRefreshCollections({
16
16
  logger.info("Setting up refresh listener for PocketBase integration");
17
17
 
18
18
  // Listen for the refresh event of the toolbar
19
- toolbar.on("astro-integration-pocketbase:refresh", async () => {
20
- // Send a loading state to the toolbar
21
- toolbar.send("astro-integration-pocketbase:refresh", {
22
- loading: true
23
- });
19
+ toolbar.on(
20
+ "astro-integration-pocketbase:refresh",
21
+ async ({ force }: { force: boolean }) => {
22
+ // Send a loading state to the toolbar
23
+ toolbar.send("astro-integration-pocketbase:refresh", {
24
+ loading: true
25
+ });
24
26
 
25
- // Refresh content loaded by the PocketBase loader
26
- logger.info("Refreshing content loaded by PocketBase loader");
27
- await refreshContent({
28
- loaders: ["pocketbase-loader"],
29
- context: {
30
- source: "astro-integration-pocketbase"
31
- }
32
- });
27
+ // Refresh content loaded by the PocketBase loader
28
+ logger.info(
29
+ `Refreshing ${force ? "all " : ""}content loaded by PocketBase loader`
30
+ );
31
+ await refreshContent({
32
+ loaders: ["pocketbase-loader"],
33
+ context: {
34
+ source: "astro-integration-pocketbase",
35
+ force: force
36
+ }
37
+ });
33
38
 
34
- // Reset the loading state in the toolbar
35
- toolbar.send("astro-integration-pocketbase:refresh", {
36
- loading: false
37
- });
38
- });
39
+ // Reset the loading state in the toolbar
40
+ toolbar.send("astro-integration-pocketbase:refresh", {
41
+ loading: false
42
+ });
43
+ }
44
+ );
39
45
  }
@@ -14,7 +14,7 @@ export function pocketbaseIntegration(
14
14
  return {
15
15
  name: "pocketbase-integration",
16
16
  hooks: {
17
- "astro:config:setup": ({ addDevToolbarApp, addMiddleware, command }) => {
17
+ "astro:config:setup": ({ addDevToolbarApp, addMiddleware, command }): void => {
18
18
  // This integration is only available in dev mode
19
19
  if (command !== "dev") {
20
20
  return;
@@ -34,7 +34,7 @@ export function pocketbaseIntegration(
34
34
  entrypoint: fileURLToPath(new URL("./middleware", import.meta.url))
35
35
  });
36
36
  },
37
- "astro:server:setup": (setupOptions) => {
37
+ "astro:server:setup": (setupOptions): void => {
38
38
  if (!initialSetupDone) {
39
39
  // Listen for the refresh event of the toolbar
40
40
  handleRefreshCollections(setupOptions);
@@ -58,7 +58,7 @@ export function pocketbaseIntegration(
58
58
 
59
59
  initialSetupDone = true;
60
60
  },
61
- "astro:server:done": ({ logger }) => {
61
+ "astro:server:done": ({ logger }): void => {
62
62
  // Close the EventSource connection when the server is done
63
63
  if (eventSource) {
64
64
  logger.info("Closing EventSource connection");
@@ -48,11 +48,13 @@ export function createHeader(server: ToolbarServerHelpers): HeaderElements {
48
48
  const toggleLabel = document.createElement("label");
49
49
  toggleLabel.textContent = "Real-time updates";
50
50
  toggleLabel.htmlFor = "real-time-toggle";
51
+ toggleLabel.title = "Enable or disable real-time updates temporarily";
51
52
  toggleLabel.style.fontSize = "0.8rem";
52
53
  toggleContainer.appendChild(toggleLabel);
53
54
 
54
55
  const toggle = document.createElement("astro-dev-toolbar-toggle");
55
56
  toggle.input.id = "real-time-toggle";
57
+ toggle.input.title = "Enable or disable real-time updates temporarily";
56
58
  // Set the toggle state based on the local storage, default to true
57
59
  toggle.input.checked = !(
58
60
  localStorage.getItem("astro-integration-pocketbase:real-time") === "false"
@@ -76,10 +78,15 @@ export function createHeader(server: ToolbarServerHelpers): HeaderElements {
76
78
  refresh.size = "small";
77
79
  refresh.buttonStyle = "green";
78
80
  refresh.textContent = "Refresh content";
81
+ refresh.title = "Right click to force refresh every collection";
79
82
  // The refresh button is hidden by default
80
83
  refresh.style.display = "none";
81
84
  refresh.addEventListener("click", () => {
82
- server.send("astro-integration-pocketbase:refresh", true);
85
+ server.send("astro-integration-pocketbase:refresh", { force: false });
86
+ });
87
+ refresh.addEventListener("contextmenu", (event) => {
88
+ event.preventDefault();
89
+ server.send("astro-integration-pocketbase:refresh", { force: true });
83
90
  });
84
91
  actions.appendChild(refresh);
85
92
 
@@ -71,7 +71,7 @@ export async function initToolbar(
71
71
  // Update the toolbar placement based on the user's preference
72
72
  function updateToolbarPlacement(
73
73
  placement: "bottom-left" | "bottom-right" | "bottom-center"
74
- ) {
74
+ ): void {
75
75
  if (placement === "bottom-left") {
76
76
  container.style.left = "16px";
77
77
  container.style.right = "unset";