@teambit/lanes.hooks.use-lanes 0.0.188 → 0.0.190

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.
@@ -34,6 +34,13 @@ function LanesProvider({ children, viewedLaneId: viewedIdFromProps, targetLanes,
34
34
  const { lanesModel, loading } = (0, lanes_hooks_use_lanes_1.useLanes)(targetLanes, skipNetworkCall);
35
35
  const [lanesState, setLanesState] = (0, react_1.useState)(lanesModel);
36
36
  const [viewedLaneId, setViewedLaneId] = (0, react_1.useState)(viewedIdFromProps);
37
+ const updateViewedLane = (0, react_1.useCallback)((lane) => {
38
+ setViewedLaneId(lane);
39
+ setLanesState((state) => {
40
+ state === null || state === void 0 ? void 0 : state.setViewedOrDefaultLane(lane);
41
+ return state;
42
+ });
43
+ }, [lanesModel]);
37
44
  const location = (0, base_react_navigation_link_1.useLocation)();
38
45
  const query = (0, ui_foundation_ui_react_router_use_query_1.useQuery)();
39
46
  const ignoreDerivingFromUrl = (0, react_1.useCallback)((_location) => {
@@ -43,33 +50,39 @@ function LanesProvider({ children, viewedLaneId: viewedIdFromProps, targetLanes,
43
50
  }, []);
44
51
  (0, react_1.useEffect)(() => {
45
52
  if (viewedIdFromProps)
46
- setViewedLaneId(viewedIdFromProps);
53
+ updateViewedLane(viewedIdFromProps);
47
54
  }, [viewedIdFromProps === null || viewedIdFromProps === void 0 ? void 0 : viewedIdFromProps.toString()]);
48
55
  (0, react_1.useEffect)(() => {
49
56
  var _a, _b;
50
57
  if (ignoreDerivingFromUrl(location))
51
58
  return;
52
- // const onHomeRoute = location?.pathname === '/';
53
59
  const viewedLaneIdFromUrl = ((location === null || location === void 0 ? void 0 : location.pathname) && lanes_ui_models_lanes_model_1.LanesModel.getLaneIdFromPathname(location === null || location === void 0 ? void 0 : location.pathname, query)) || undefined;
54
- const viewedLaneIdToSet = viewedLaneIdFromUrl || ((_a = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.currentLane) === null || _a === void 0 ? void 0 : _a.id) || ((_b = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.lanes.find((lane) => lane.id.isDefault())) === null || _b === void 0 ? void 0 : _b.id);
55
- setViewedLaneId(viewedLaneIdToSet);
60
+ const viewedLaneIdToSet = viewedLaneIdFromUrl ||
61
+ viewedLaneId ||
62
+ ((_a = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.currentLane) === null || _a === void 0 ? void 0 : _a.id) ||
63
+ ((_b = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.lanes.find((lane) => lane.id.isDefault())) === null || _b === void 0 ? void 0 : _b.id);
64
+ updateViewedLane(viewedLaneIdToSet);
56
65
  }, [location === null || location === void 0 ? void 0 : location.pathname]);
57
66
  (0, react_1.useEffect)(() => {
58
- var _a;
59
- if (viewedLaneId === undefined && ((_a = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.currentLane) === null || _a === void 0 ? void 0 : _a.id)) {
60
- setViewedLaneId(lanesModel.currentLane.id);
61
- lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.setViewedOrDefaultLane(lanesModel.currentLane.id);
62
- setLanesState(lanesModel);
63
- return;
64
- }
65
- lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.setViewedOrDefaultLane(viewedLaneId);
66
- setLanesState(lanesModel);
67
- }, [loading, lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.lanes.length]);
68
- lanesState === null || lanesState === void 0 ? void 0 : lanesState.setViewedOrDefaultLane(viewedLaneId);
67
+ setLanesState((existing) => {
68
+ var _a, _b;
69
+ if (!loading && (lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.lanes.length)) {
70
+ const state = new lanes_ui_models_lanes_model_1.LanesModel(Object.assign({}, lanesModel));
71
+ if (viewedLaneId === undefined && ((_a = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.currentLane) === null || _a === void 0 ? void 0 : _a.id)) {
72
+ state.setViewedOrDefaultLane((_b = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.currentLane) === null || _b === void 0 ? void 0 : _b.id);
73
+ }
74
+ else {
75
+ state.setViewedOrDefaultLane(viewedLaneId);
76
+ }
77
+ return state;
78
+ }
79
+ return existing;
80
+ });
81
+ }, [loading, lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.lanes.length, viewedLaneId]);
69
82
  const lanesContextModel = {
70
83
  lanesModel: lanesState,
71
84
  updateLanesModel: setLanesState,
72
- updateViewedLane: setViewedLaneId,
85
+ updateViewedLane,
73
86
  };
74
87
  return react_1.default.createElement(lanes_context_1.LanesContext.Provider, { value: lanesContextModel }, children);
75
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lanes-provider.js","sourceRoot":"","sources":["../lanes-provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lanes-provider.js","sourceRoot":"","sources":["../lanes-provider.tsx"],"names":[],"mappings":"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"}
package/dist/use-lanes.js CHANGED
@@ -60,7 +60,7 @@ const GET_LANES = (0, client_1.gql) `
60
60
  function useLanes(targetLanes, skip) {
61
61
  var _a;
62
62
  const lanesContext = (0, lanes_context_1.useLanesContext)();
63
- const shouldSkip = skip || !!targetLanes || !!lanesContext;
63
+ const shouldSkip = skip || !!targetLanes || !!(lanesContext === null || lanesContext === void 0 ? void 0 : lanesContext.lanesModel);
64
64
  const _b = (0, ui_foundation_ui_hooks_use_data_query_1.useDataQuery)(GET_LANES, {
65
65
  skip: shouldSkip,
66
66
  }), { data, loading } = _b, rest = __rest(_b, ["data", "loading"]);
@@ -1 +1 @@
1
- {"version":3,"file":"use-lanes.js","sourceRoot":"","sources":["../use-lanes.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0GAA8E;AAC9E,sFAA8E;AAC9E,2CAAkD;AAClD,mDAAqE;AAErE,MAAM,SAAS,GAAG,IAAA,YAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCpB,CAAC;AAEF,SAAgB,QAAQ,CACtB,WAAwB,EACxB,IAAc;;IAEd,MAAM,YAAY,GAAG,IAAA,+BAAe,GAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY,CAAC;IAE3D,MAAM,KAA6B,IAAA,oDAAY,EAA2C,SAAS,EAAE;QACnG,IAAI,EAAE,UAAU;KACjB,CAAC,EAFI,EAAE,IAAI,EAAE,OAAO,OAEnB,EAFwB,IAAI,cAAxB,mBAA0B,CAE9B,CAAC;IAEH,IAAI,UAAkC,CAAC;IACvC,IAAI,YAAY;QAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;;QAClD,UAAU,GAAG,CAAC,IAAI,IAAI,wCAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,0CAAE,EAAE,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC;IAE9F,qDACK,IAAI,GACJ,CAAC,YAAY,IAAI,EAAE,CAAC,KACvB,OAAO;QACP,UAAU,IACV;AACJ,CAAC;AArBD,4BAqBC"}
1
+ {"version":3,"file":"use-lanes.js","sourceRoot":"","sources":["../use-lanes.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0GAA8E;AAC9E,sFAA8E;AAC9E,2CAAkD;AAClD,mDAAqE;AAErE,MAAM,SAAS,GAAG,IAAA,YAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCpB,CAAC;AAEF,SAAgB,QAAQ,CACtB,WAAwB,EACxB,IAAc;;IAEd,MAAM,YAAY,GAAG,IAAA,+BAAe,GAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,CAAA,CAAC;IAEvE,MAAM,KAA6B,IAAA,oDAAY,EAA2C,SAAS,EAAE;QACnG,IAAI,EAAE,UAAU;KACjB,CAAC,EAFI,EAAE,IAAI,EAAE,OAAO,OAEnB,EAFwB,IAAI,cAAxB,mBAA0B,CAE9B,CAAC;IAEH,IAAI,UAAkC,CAAC;IACvC,IAAI,YAAY;QAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;;QAClD,UAAU,GAAG,CAAC,IAAI,IAAI,wCAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,0CAAE,EAAE,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC;IAE9F,qDACK,IAAI,GACJ,CAAC,YAAY,IAAI,EAAE,CAAC,KACvB,OAAO;QACP,UAAU,IACV;AACJ,CAAC;AArBD,4BAqBC"}
@@ -27,6 +27,16 @@ export function LanesProvider({
27
27
 
28
28
  const [lanesState, setLanesState] = useState<LanesModel | undefined>(lanesModel);
29
29
  const [viewedLaneId, setViewedLaneId] = useState<LaneId | undefined>(viewedIdFromProps);
30
+ const updateViewedLane = useCallback(
31
+ (lane?: LaneId) => {
32
+ setViewedLaneId(lane);
33
+ setLanesState((state) => {
34
+ state?.setViewedOrDefaultLane(lane);
35
+ return state;
36
+ });
37
+ },
38
+ [lanesModel]
39
+ );
30
40
 
31
41
  const location = useLocation();
32
42
  const query = useQuery();
@@ -37,39 +47,43 @@ export function LanesProvider({
37
47
  }, []);
38
48
 
39
49
  useEffect(() => {
40
- if (viewedIdFromProps) setViewedLaneId(viewedIdFromProps);
50
+ if (viewedIdFromProps) updateViewedLane(viewedIdFromProps);
41
51
  }, [viewedIdFromProps?.toString()]);
42
52
 
43
53
  useEffect(() => {
44
54
  if (ignoreDerivingFromUrl(location)) return;
45
55
 
46
- // const onHomeRoute = location?.pathname === '/';
47
56
  const viewedLaneIdFromUrl =
48
57
  (location?.pathname && LanesModel.getLaneIdFromPathname(location?.pathname, query)) || undefined;
49
58
 
50
59
  const viewedLaneIdToSet =
51
- viewedLaneIdFromUrl || lanesModel?.currentLane?.id || lanesModel?.lanes.find((lane) => lane.id.isDefault())?.id;
60
+ viewedLaneIdFromUrl ||
61
+ viewedLaneId ||
62
+ lanesModel?.currentLane?.id ||
63
+ lanesModel?.lanes.find((lane) => lane.id.isDefault())?.id;
52
64
 
53
- setViewedLaneId(viewedLaneIdToSet);
65
+ updateViewedLane(viewedLaneIdToSet);
54
66
  }, [location?.pathname]);
55
67
 
56
68
  useEffect(() => {
57
- if (viewedLaneId === undefined && lanesModel?.currentLane?.id) {
58
- setViewedLaneId(lanesModel.currentLane.id);
59
- lanesModel?.setViewedOrDefaultLane(lanesModel.currentLane.id);
60
- setLanesState(lanesModel);
61
- return;
62
- }
63
- lanesModel?.setViewedOrDefaultLane(viewedLaneId);
64
- setLanesState(lanesModel);
65
- }, [loading, lanesModel?.lanes.length]);
66
-
67
- lanesState?.setViewedOrDefaultLane(viewedLaneId);
69
+ setLanesState((existing) => {
70
+ if (!loading && lanesModel?.lanes.length) {
71
+ const state = new LanesModel({ ...lanesModel });
72
+ if (viewedLaneId === undefined && lanesModel?.currentLane?.id) {
73
+ state.setViewedOrDefaultLane(lanesModel?.currentLane?.id);
74
+ } else {
75
+ state.setViewedOrDefaultLane(viewedLaneId);
76
+ }
77
+ return state;
78
+ }
79
+ return existing;
80
+ });
81
+ }, [loading, lanesModel?.lanes.length, viewedLaneId]);
68
82
 
69
83
  const lanesContextModel: LanesContextModel = {
70
84
  lanesModel: lanesState,
71
85
  updateLanesModel: setLanesState,
72
- updateViewedLane: setViewedLaneId,
86
+ updateViewedLane,
73
87
  };
74
88
 
75
89
  return <LanesContext.Provider value={lanesContextModel}>{children}</LanesContext.Provider>;
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@teambit/lanes.hooks.use-lanes",
3
- "version": "0.0.188",
3
+ "version": "0.0.190",
4
4
  "homepage": "https://bit.cloud/teambit/lanes/hooks/use-lanes",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.lanes",
8
8
  "name": "hooks/use-lanes",
9
- "version": "0.0.188"
9
+ "version": "0.0.190"
10
10
  },
11
11
  "dependencies": {
12
12
  "core-js": "^3.0.0",
13
13
  "@teambit/base-react.navigation.link": "2.0.27",
14
- "@teambit/lane-id": "0.0.241",
15
- "@teambit/lanes.ui.models.lanes-model": "0.0.141",
14
+ "@teambit/lane-id": "0.0.243",
15
+ "@teambit/lanes.ui.models.lanes-model": "0.0.143",
16
16
  "@teambit/ui-foundation.ui.react-router.use-query": "0.0.496",
17
17
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.500"
18
18
  },
package/use-lanes.tsx CHANGED
@@ -50,7 +50,7 @@ export function useLanes(
50
50
  skip?: boolean
51
51
  ): LanesContextModel & Omit<QueryResult<LanesQuery & { getHost: { id: string } }>, 'data'> {
52
52
  const lanesContext = useLanesContext();
53
- const shouldSkip = skip || !!targetLanes || !!lanesContext;
53
+ const shouldSkip = skip || !!targetLanes || !!lanesContext?.lanesModel;
54
54
 
55
55
  const { data, loading, ...rest } = useDataQuery<LanesQuery & { getHost: { id: string } }>(GET_LANES, {
56
56
  skip: shouldSkip,