From 926abcf6aa943662a54c0f82aa39b09f9b512265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 26 Apr 2023 07:03:44 +0200 Subject: [PATCH] Scenes: Update scenes to v6 (#67110) * Scenes: Update scenes to v6 * Fix test --- package.json | 2 +- public/app/features/scenes/ScenePage.tsx | 3 ++- .../features/scenes/dashboard/DashboardScene.tsx | 14 +------------- .../features/scenes/dashboard/DashboardsLoader.ts | 3 ++- yarn.lock | 12 ++++++------ 5 files changed, 12 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index bc82aae9c75..2ac4b9dc47d 100644 --- a/package.json +++ b/package.json @@ -262,7 +262,7 @@ "@grafana/lezer-logql": "0.1.3", "@grafana/monaco-logql": "^0.0.7", "@grafana/runtime": "workspace:*", - "@grafana/scenes": "^0.3.0", + "@grafana/scenes": "^0.6.0", "@grafana/schema": "workspace:*", "@grafana/ui": "workspace:*", "@kusto/monaco-kusto": "5.3.6", diff --git a/public/app/features/scenes/ScenePage.tsx b/public/app/features/scenes/ScenePage.tsx index b755d11491b..eacdd2ae720 100644 --- a/public/app/features/scenes/ScenePage.tsx +++ b/public/app/features/scenes/ScenePage.tsx @@ -1,6 +1,7 @@ // Libraries import React, { useEffect, useState } from 'react'; +import { getUrlSyncManager } from '@grafana/scenes'; import { GrafanaRouteComponentProps } from 'app/core/navigation/types'; import { getSceneByTitle } from './scenes'; @@ -13,7 +14,7 @@ export const ScenePage = (props: Props) => { useEffect(() => { if (scene && !isInitialized) { - scene.initUrlSync(); + getUrlSyncManager().initSync(scene); setInitialized(true); } }, [isInitialized, scene]); diff --git a/public/app/features/scenes/dashboard/DashboardScene.tsx b/public/app/features/scenes/dashboard/DashboardScene.tsx index 88ab5308405..2f0d2967dc7 100644 --- a/public/app/features/scenes/dashboard/DashboardScene.tsx +++ b/public/app/features/scenes/dashboard/DashboardScene.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { GrafanaTheme2, PageLayoutType } from '@grafana/data'; import { locationService } from '@grafana/runtime'; -import { UrlSyncManager, SceneObjectBase, SceneComponentProps, SceneObject, SceneObjectState } from '@grafana/scenes'; +import { SceneObjectBase, SceneComponentProps, SceneObject, SceneObjectState } from '@grafana/scenes'; import { ToolbarButton, useStyles2 } from '@grafana/ui'; import { AppChromeUpdate } from 'app/core/components/AppChrome/AppChromeUpdate'; import { Page } from 'app/core/components/Page/Page'; @@ -18,18 +18,6 @@ interface DashboardSceneState extends SceneObjectState { export class DashboardScene extends SceneObjectBase { public static Component = DashboardSceneRenderer; - private urlSyncManager?: UrlSyncManager; - - /** - * It's better to do this before activate / mount to not trigger unnessary re-renders - */ - public initUrlSync() { - if (!this.urlSyncManager) { - this.urlSyncManager = new UrlSyncManager(this); - } - - this.urlSyncManager.initSync(); - } } function DashboardSceneRenderer({ model }: SceneComponentProps) { diff --git a/public/app/features/scenes/dashboard/DashboardsLoader.ts b/public/app/features/scenes/dashboard/DashboardsLoader.ts index 0d3c537e1dd..ef173ca8595 100644 --- a/public/app/features/scenes/dashboard/DashboardsLoader.ts +++ b/public/app/features/scenes/dashboard/DashboardsLoader.ts @@ -23,6 +23,7 @@ import { SceneDataTransformer, SceneGridItem, SceneDataProvider, + getUrlSyncManager, } from '@grafana/scenes'; import { StateManagerBase } from 'app/core/services/StateManagerBase'; import { dashboardLoaderSrv } from 'app/features/dashboard/services/DashboardLoaderSrv'; @@ -75,7 +76,7 @@ export class DashboardLoader extends StateManagerBase { // We initialize URL sync here as it better to do that before mounting and doing any rendering. // But would be nice to have a conditional around this so you can pre-load dashboards without url sync. - dashboard.initUrlSync(); + getUrlSyncManager().initSync(dashboard); this.cache[rsp.dashboard.uid] = dashboard; this.setState({ dashboard, isLoading: false }); diff --git a/yarn.lock b/yarn.lock index e36c41e01f9..20f98a90e43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3342,9 +3342,9 @@ __metadata: languageName: unknown linkType: soft -"@grafana/scenes@npm:^0.3.0": - version: 0.0.0-use.local - resolution: "@grafana/scenes@npm:0.3.0" +"@grafana/scenes@npm:^0.6.0": + version: 0.6.0 + resolution: "@grafana/scenes@npm:0.6.0" dependencies: "@grafana/e2e-selectors": canary "@grafana/experimental": 1.0.1 @@ -3352,9 +3352,9 @@ __metadata: react-use: 17.4.0 react-virtualized-auto-sizer: 1.0.7 uuid: ^9.0.0 - checksum: 3610cedcc150b9d6e3d6948056bb1bbbfe58d7fa0ff6e762eec6619bb0940504db867ea87e56160f27e4d93772f6203493bf87d353a1b18d2664e74a03f03a05 + checksum: 7197abac93ba84711900b526f0caa648b0b9f0c0e2edea2fbc125c1f192d6a3dae52389007cf82cbdf06a7b8019e5c03b5efa635f12ebc51eab5852cddf6427e languageName: node - linkType: soft + linkType: hard "@grafana/schema@10.0.0-pre, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema": version: 0.0.0-use.local @@ -20169,7 +20169,7 @@ __metadata: "@grafana/lezer-logql": 0.1.3 "@grafana/monaco-logql": ^0.0.7 "@grafana/runtime": "workspace:*" - "@grafana/scenes": ^0.3.0 + "@grafana/scenes": ^0.6.0 "@grafana/schema": "workspace:*" "@grafana/toolkit": "workspace:*" "@grafana/tsconfig": ^1.2.0-rc1