diff --git a/common/changes/@itwin/imodel-browser-react/leobelanger-disable-favorites_2025-11-18-21-33.json b/common/changes/@itwin/imodel-browser-react/leobelanger-disable-favorites_2025-11-18-21-33.json new file mode 100644 index 00000000..9988e65d --- /dev/null +++ b/common/changes/@itwin/imodel-browser-react/leobelanger-disable-favorites_2025-11-18-21-33.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@itwin/imodel-browser-react", + "comment": "use `hideFavoriteIcon` option to disable fetching favorite iModels", + "type": "minor" + } + ], + "packageName": "@itwin/imodel-browser-react" +} \ No newline at end of file diff --git a/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGrid.tsx b/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGrid.tsx index 86e20e78..63688e78 100644 --- a/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGrid.tsx +++ b/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGrid.tsx @@ -119,6 +119,7 @@ export const IModelGrid = (props: IModelGridProps) => { iTwinId={props.iTwinId} accessToken={props.accessToken} serverEnvironmentPrefix={props.apiOverrides?.serverEnvironmentPrefix} + disabled={props.tileOverrides?.hideFavoriteIcon} > diff --git a/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelFavorites.ts b/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelFavorites.ts index bde97048..68595f3a 100644 --- a/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelFavorites.ts +++ b/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelFavorites.ts @@ -13,6 +13,7 @@ import * as iModelApi from "../../utils/iModelApi"; * @param iTwinId - The ID of the iTwin for which to fetch favorites. * @param accessToken - Access token that requires the `itwin-platform` scope. Provide a function that returns the token to prevent the token from expiring. * @param serverEnvironmentPrefix - Optional server environment prefix. + * @param disabled - Optional flag to disable fetching of the favorites in the hook. * @returns An object containing: * - {Set} iModelFavorites - A set of iModel IDs that are marked as favorites. * - {function} addIModelToFavorites - A function to add an iModel to favorites. @@ -21,7 +22,8 @@ import * as iModelApi from "../../utils/iModelApi"; export const useIModelFavorites = ( iTwinId: string | undefined, accessToken: AccessTokenProvider | undefined, - serverEnvironmentPrefix?: "dev" | "qa" | "" + serverEnvironmentPrefix?: "dev" | "qa" | "", + disabled?: boolean ): { iModelFavorites: Set; addIModelToFavorites: (iModelId: string) => Promise; @@ -91,7 +93,7 @@ export const useIModelFavorites = ( */ const fetchIModelFavorites = async (abortSignal?: AbortSignal) => { try { - if (!iTwinId || !accessToken) { + if (disabled || !iTwinId || !accessToken) { setIModelFavorites(new Set()); return; } @@ -115,7 +117,7 @@ export const useIModelFavorites = ( return () => { controller.abort(); }; - }, [iTwinId, accessToken, serverEnvironmentPrefix]); + }, [disabled, iTwinId, accessToken, serverEnvironmentPrefix]); return { iModelFavorites, diff --git a/packages/modules/imodel-browser/src/contexts/IModelFavoritesContext.tsx b/packages/modules/imodel-browser/src/contexts/IModelFavoritesContext.tsx index fb6aa6d7..227bc337 100644 --- a/packages/modules/imodel-browser/src/contexts/IModelFavoritesContext.tsx +++ b/packages/modules/imodel-browser/src/contexts/IModelFavoritesContext.tsx @@ -22,6 +22,7 @@ export interface IModelFavoritesProviderProps { accessToken?: AccessTokenProvider; serverEnvironmentPrefix?: string; children: React.ReactNode; + disabled?: boolean; } export const IModelFavoritesProvider = ({ @@ -29,6 +30,7 @@ export const IModelFavoritesProvider = ({ accessToken, serverEnvironmentPrefix, children, + disabled, }: IModelFavoritesProviderProps) => { const { iModelFavorites, addIModelToFavorites, removeIModelFromFavorites } = useIModelFavorites( @@ -36,7 +38,8 @@ export const IModelFavoritesProvider = ({ accessToken, serverEnvironmentPrefix === "dev" || serverEnvironmentPrefix === "qa" ? serverEnvironmentPrefix - : undefined + : undefined, + disabled ); const value = React.useMemo(