astro-integration-pocketbase 1.3.0 → 1.4.0-next.2
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 +1 -1
- package/src/core/refresh-collections-realtime.ts +1 -1
- package/src/core/refresh-collections.ts +24 -18
- package/src/pocketbase-integration.ts +3 -3
- package/src/toolbar/dom/create-entity.ts +1 -1
- package/src/toolbar/dom/create-header.ts +8 -1
- package/src/toolbar/init-toolbar.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "astro-integration-pocketbase",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0-next.2",
|
|
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(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
loading
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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");
|
|
@@ -15,7 +15,7 @@ export function createEntity(data: Entity, baseUrl?: string): DevToolbarCard {
|
|
|
15
15
|
|
|
16
16
|
// Add the "View in PocketBase" button
|
|
17
17
|
if (baseUrl) {
|
|
18
|
-
const url = `${baseUrl}/_/#/collections?
|
|
18
|
+
const url = `${baseUrl}/_/#/collections?collection=${data.collectionId}&recordId=${data.id}`;
|
|
19
19
|
|
|
20
20
|
const viewInPocketbase = document.createElement("astro-dev-toolbar-button");
|
|
21
21
|
viewInPocketbase.size = "small";
|
|
@@ -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",
|
|
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";
|