Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: making livepreview stable and removing useStoryblok function #1050

Closed
wants to merge 11 commits into from
Prev Previous commit
Next Next commit
feat!: remove useStoryblok function
`useStoryblok` function has been deprecated and replaced with a new function, `getLiveStory`. For details on how to use getLiveStory and its capabilities, please refer to the updated documentation.
dipankarmaikap committed Dec 30, 2024
commit 08a6fa1e6fd33550650ecc81dfe7e93ac5df36a0
7 changes: 3 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -71,9 +71,8 @@
"astro": "^3.0.0 || ^4.0.0 || ^5.0.0"
},
"dependencies": {
"@storyblok/js": "3.1.9",
"camelcase": "^8.0.0",
"lodash.mergewith": "^4.6.2"
"@storyblok/js": "^3.1.9",
"camelcase": "^8.0.0"
},
"devDependencies": {
"@commitlint/cli": "^19.5.0",
@@ -162,4 +161,4 @@
"publishConfig": {
"access": "public"
}
}
}
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -8,6 +8,6 @@ export {
storyblokEditable,
} from '@storyblok/js';
import storyblokIntegration from './lib/storyblok-integration';
export { renderRichText, useStoryblok, useStoryblokApi } from './lib/healpers';
export { renderRichText, getLiveStory, useStoryblokApi } from './lib/healpers';

export default storyblokIntegration;
17 changes: 1 addition & 16 deletions src/lib/healpers.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type {
ISbRichtext,
ISbStoriesParams,
ISbStoryData,
RichTextResolver,
SbRichTextOptions,
@@ -17,24 +16,10 @@ export function useStoryblokApi(): StoryblokClient {
return globalThis.storyblokApiInstance;
}

export async function useStoryblok(
slug: string,
apiOptions: ISbStoriesParams = {},
_: StoryblokBridgeConfigV2 = {},
Astro: AstroGlobal
) {
if (!globalThis.storyblokApiInstance) {
throw new Error('storyblokApiInstance has not been initialized correctly');
}
export async function getLiveStory(Astro: AstroGlobal) {
let story: ISbStoryData | null = null;
if (Astro && Astro.locals._storyblok_preview_data) {
story = Astro.locals._storyblok_preview_data;
} else {
const { data } = await globalThis?.storyblokApiInstance?.get(
slug,
apiOptions
);
story = data.story;
}
return story;
}
23 changes: 7 additions & 16 deletions src/lib/storyblok-integration.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import type { ISbConfig, StoryblokBridgeConfigV2 } from '@storyblok/js';
import type { AstroIntegration } from 'astro';
import { storyblokLogo } from '../dev-toolbar/toolbarApp';
import { vitePluginStoryblokBridge } from '../vite-plugins/vite-plugin-storyblok-bridge';
import { vitePluginStoryblokComponents } from '../vite-plugins/vite-plugin-storyblok-components';
import { vitePluginStoryblokInit } from '../vite-plugins/vite-plugin-storyblok-init';
import { vitePluginStoryblokOptions } from '../vite-plugins/vite-plugin-storyblok-options';
@@ -93,10 +92,6 @@ export default function storyblokIntegration(
resolvedOptions.customFallbackComponent
),
vitePluginStoryblokOptions(resolvedOptions),
vitePluginStoryblokBridge(
resolvedOptions.livePreview,
config.output
),
],
},
});
@@ -133,21 +128,17 @@ export default function storyblokIntegration(
);
}

// This is only enabled if experimentalLivePreview feature is on
// This is only enabled if LivePreview feature is on
if (resolvedOptions.livePreview) {
injectScript(
'page',
`
import { loadStoryblokBridge, handleStoryblokMessage } from "@storyblok/astro";
import { bridgeOptions } from "virtual:storyblok-bridge";
console.info("The Storyblok Astro live preview feature is currently in an experimental phase, and its API is subject to change in the future.")
loadStoryblokBridge().then(() => {
const { StoryblokBridge, location } = window;
if(bridgeOptions){
const storyblokInstance = new StoryblokBridge(bridgeOptions);
storyblokInstance.on(["published", "change", "input"], handleStoryblokMessage);
};
});
import { loadStoryblokBridge, handleStoryblokMessage } from "@storyblok/astro";
loadStoryblokBridge().then(() => {
const { StoryblokBridge, location } = window;
${initBridge}
storyblokInstance.on(["published", "change", "input"], handleStoryblokMessage);
});
`
);
addMiddleware({
33 changes: 0 additions & 33 deletions src/utils/generateFinalBridgeObject.ts

This file was deleted.

74 changes: 0 additions & 74 deletions src/utils/parseAstCode.ts

This file was deleted.

112 changes: 0 additions & 112 deletions src/vite-plugins/vite-plugin-storyblok-bridge.ts

This file was deleted.