Skip to content

Commit

Permalink
refactor(v3): move component promises into a factory function.
Browse files Browse the repository at this point in the history
  • Loading branch information
diegoazh committed Apr 24, 2024
1 parent 750c1bc commit 0140906
Show file tree
Hide file tree
Showing 15 changed files with 95 additions and 100 deletions.
9 changes: 3 additions & 6 deletions packages/v3/src/components/autocomplete-input.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,10 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
useGoogleMapsApiPromiseLazy,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { IAutoCompleteInputVueComponentProps } from '@/interfaces';
import { $autocompletePromise } from '@/keys';
Expand Down Expand Up @@ -95,10 +94,8 @@ const excludedEvents = usePluginOptions()?.excludeEventsOnAllComponents?.();
/*******************************************************************************
* PROVIDE
******************************************************************************/
const autocompletePromiseDeferred = usePromiseDeferred(
props.autocompleteKey || $autocompletePromise,
);
const promise = usePromise(props.autocompleteKey || $autocompletePromise);
const { promiseDeferred: autocompletePromiseDeferred, promise } =
useComponentPromiseFactory(props.autocompleteKey || $autocompletePromise);
provide(props.autocompleteKey || $autocompletePromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/circle-shape.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { ICircleShapeVueComponentProps } from '@/interfaces';
import { $circleShapePromise } from '@/keys';
Expand Down Expand Up @@ -88,10 +87,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const circlePromiseDeferred = usePromiseDeferred(
props.circleKey || $circleShapePromise,
);
const promise = usePromise(props.circleKey || $circleShapePromise);
const { promiseDeferred: circlePromiseDeferred, promise } =
useComponentPromiseFactory(props.circleKey || $circleShapePromise);
provide(props.circleKey || $circleShapePromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/cluster-icon.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { IMarkerClusterVueComponentProps } from '@/interfaces';
import { $clusterPromise } from '@/keys';
Expand Down Expand Up @@ -86,10 +85,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const clusterPromiseDeferred = usePromiseDeferred(
props.clusterKey || $clusterPromise,
);
const promise = usePromise(props.clusterKey || $clusterPromise);
const { promiseDeferred: clusterPromiseDeferred, promise } =
useComponentPromiseFactory(props.clusterKey || $clusterPromise);
provide(props?.clusterKey || $clusterPromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/drawing-manager.vue
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { IDrawingManagerVueComponentProps } from '@/interfaces';
import { $drawingManagerPromise } from '@/keys';
Expand Down Expand Up @@ -104,10 +103,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const drawingPromiseDeferred = usePromiseDeferred(
props.drawingKey || $drawingManagerPromise,
);
const promise = usePromise(props.drawingKey || $drawingManagerPromise);
const { promiseDeferred: drawingPromiseDeferred, promise } =
useComponentPromiseFactory(props.drawingKey || $drawingManagerPromise);
provide(props.drawingKey || $drawingManagerPromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/heatmap-layer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { IHeatmapLayerVueComponentProps } from '@/interfaces';
import { $heatmapLayerPromise } from '@/keys';
Expand Down Expand Up @@ -76,10 +75,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const heatmapLayerPromiseDeferred = usePromiseDeferred(
props.heatmapKey || $heatmapLayerPromise,
);
const promise = usePromise(props.heatmapKey || $heatmapLayerPromise);
const { promiseDeferred: heatmapLayerPromiseDeferred, promise } =
useComponentPromiseFactory(props.heatmapKey || $heatmapLayerPromise);
provide(props.heatmapKey || $heatmapLayerPromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/info-window.vue
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { IInfoWindowVueComponentProps } from '@/interfaces';
import { $infoWindowPromise } from '@/keys';
Expand Down Expand Up @@ -94,10 +93,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const infoWindowPromiseDeferred = usePromiseDeferred(
props.infoWindowKey || $infoWindowPromise,
);
const promise = usePromise(props.infoWindowKey || $infoWindowPromise);
const { promiseDeferred: infoWindowPromiseDeferred, promise } =
useComponentPromiseFactory(props.infoWindowKey || $infoWindowPromise);
provide(props.infoWindowKey || $infoWindowPromise, promise);
/*******************************************************************************
Expand Down
7 changes: 3 additions & 4 deletions packages/v3/src/components/kml-layer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { IKmlLayerVueComponentProps } from '@/interfaces';
import { $kmlLayerPromise } from '@/keys';
Expand Down Expand Up @@ -70,8 +69,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const kmlPromiseDeferred = usePromiseDeferred(props.kmlKey || $kmlLayerPromise);
const promise = usePromise(props.kmlKey || $kmlLayerPromise);
const { promiseDeferred: kmlPromiseDeferred, promise } =
useComponentPromiseFactory(props.kmlKey || $kmlLayerPromise);
provide(props.kmlKey || $kmlLayerPromise, promise);
/*******************************************************************************
Expand Down
7 changes: 3 additions & 4 deletions packages/v3/src/components/map-layer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,10 @@ import {
onMountedResizeBusHook,
onUnmountedResizeBusHook,
twoWayBindingWrapper,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
useGoogleMapsApiPromiseLazy,
usePluginOptions,
usePromise,
usePromiseDeferred,
useResizeBus,
watchPrimitivePropertiesOnSetup,
} from '@/composables';
Expand Down Expand Up @@ -176,8 +175,8 @@ const excludedEvents = usePluginOptions()?.excludeEventsOnAllComponents?.();
/*******************************************************************************
* PROVIDE
******************************************************************************/
const mapPromiseDeferred = usePromiseDeferred(defineMapKey() || $mapPromise);
const promise = usePromise(defineMapKey() || $mapPromise);
const { promiseDeferred: mapPromiseDeferred, promise } =
useComponentPromiseFactory(defineMapKey() || $mapPromise);
provide(defineMapKey() || $mapPromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/marker-icon.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { IMarkerIconVueComponentProps } from '@/interfaces';
import { $markerPromise } from '@/keys';
Expand Down Expand Up @@ -87,10 +86,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const markerPromiseDeferred = usePromiseDeferred(
props.markerKey || $markerPromise,
);
const promise = usePromise(props.markerKey || $markerPromise);
const { promiseDeferred: markerPromiseDeferred, promise } =
useComponentPromiseFactory(props.markerKey || $markerPromise);
provide(props.markerKey || $markerPromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/polygon-shape.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
useShapesHelpers,
} from '@/composables';
import type { IPolygonShapeVueComponentProps } from '@/interfaces';
Expand Down Expand Up @@ -98,10 +97,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const polygonPromiseDeferred = usePromiseDeferred(
props.polygonKey || $polygonShapePromise,
);
const promise = usePromise(props.polygonKey || $polygonShapePromise);
const { promiseDeferred: polygonPromiseDeferred, promise } =
useComponentPromiseFactory(props.polygonKey || $polygonShapePromise);
provide(props.polygonKey || $polygonShapePromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/polyline-shape.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
useShapesHelpers,
} from '@/composables';
import type { IPolylineShapeVueComponentProps } from '@/interfaces';
Expand Down Expand Up @@ -91,10 +90,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const polylinePromiseDeferred = usePromiseDeferred(
props.polylineKey || $polylineShapePromise,
);
const promise = usePromise(props.polylineKey || $polylineShapePromise);
const { promiseDeferred: polylinePromiseDeferred, promise } =
useComponentPromiseFactory(props.polylineKey || $polylineShapePromise);
provide(props.polylineKey || $polylineShapePromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/rectangle-shape.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import {
getComponentEventsConfig,
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
usePluginOptions,
usePromise,
usePromiseDeferred,
} from '@/composables';
import type { IRectangleShapeVueComponentProps } from '@/interfaces';
import { $rectangleShapePromise } from '@/keys';
Expand Down Expand Up @@ -87,10 +86,8 @@ if (!mapPromise) {
/*******************************************************************************
* PROVIDE
******************************************************************************/
const rectanglePromiseDeferred = usePromiseDeferred(
props.rectangleKey || $rectangleShapePromise,
);
const promise = usePromise(props.rectangleKey || $rectangleShapePromise);
const { promiseDeferred: rectanglePromiseDeferred, promise } =
useComponentPromiseFactory(props.rectangleKey || $rectangleShapePromise);
provide(props.rectangleKey || $rectangleShapePromise, promise);
/*******************************************************************************
Expand Down
9 changes: 3 additions & 6 deletions packages/v3/src/components/street-view-panorama.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@ import {
getComponentPropsConfig,
getPropsValuesWithoutOptionsProp,
twoWayBindingWrapper,
useComponentPromiseFactory,
useDestroyPromisesOnUnmounted,
useGoogleMapsApiPromiseLazy,
usePluginOptions,
usePromise,
usePromiseDeferred,
useResizeBus,
watchPrimitivePropertiesOnSetup,
} from '@/composables';
Expand Down Expand Up @@ -102,10 +101,8 @@ const excludedEvents = usePluginOptions()?.excludeEventsOnAllComponents?.();
/*******************************************************************************
* PROVIDE
******************************************************************************/
const streetViewPanoramaPromiseDeferred = usePromiseDeferred(
props.streetViewKey || $streetViewPanoramaPromise,
);
const promise = usePromise(props.streetViewKey || $streetViewPanoramaPromise);
const { promiseDeferred: streetViewPanoramaPromiseDeferred, promise } =
useComponentPromiseFactory(props.streetViewKey || $streetViewPanoramaPromise);
provide(props.streetViewKey || $streetViewPanoramaPromise, promise);
/*******************************************************************************
Expand Down
18 changes: 16 additions & 2 deletions packages/v3/src/composables/component-promise-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ function createPromises<T>(
* @internal
* @returns {Promise}
*/
export function usePromise<T>(
function usePromise<T>(
key: string | InjectionKey<Promise<T | undefined>>,
): Promise<T | undefined> {
if (!componentPromisesList.has(key)) {
Expand All @@ -60,7 +60,7 @@ export function usePromise<T>(
* @internal
* @returns {Promise}
*/
export function usePromiseDeferred<T>(
function usePromiseDeferred<T>(
key: string | InjectionKey<Promise<T | undefined>>,
): PromiseDeferred<T> {
if (!deferredPromisesList.has(key)) {
Expand All @@ -70,6 +70,20 @@ export function usePromiseDeferred<T>(
return deferredPromisesList.get(key);
}

/**
* @internal
* @param {string|InjectionKey<Promise<T|undefined>>} key
* @returns Object
*/
export function useComponentPromiseFactory<T>(
key: string | InjectionKey<Promise<T | undefined>>,
): { promiseDeferred: PromiseDeferred<T>; promise: Promise<T | undefined> } {
const promiseDeferred = usePromiseDeferred(key);
const promise = usePromise(key);

return { promiseDeferred, promise };
}

/**
* @internal
* @returns {Promise}
Expand Down
Loading

0 comments on commit 0140906

Please sign in to comment.