[WEB-3701] fix: use getCycleById to ensure null handling for cycle access (#6838)
* [WEB-3701] fix: use `getCycleById` to ensure null handling for cycle access * fix: cycle sidebar storage values
This commit is contained in:
parent
fed0ef6185
commit
691cbef1f2
4 changed files with 16 additions and 12 deletions
|
|
@ -26,7 +26,7 @@ const CycleDetailPage = observer(() => {
|
|||
const { getProjectById } = useProject();
|
||||
// const { issuesFilter } = useIssues(EIssuesStoreType.CYCLE);
|
||||
// hooks
|
||||
const { setValue, storedValue } = useLocalStorage("cycle_sidebar_collapsed", "false");
|
||||
const { setValue, storedValue } = useLocalStorage("cycle_sidebar_collapsed", false);
|
||||
|
||||
useCyclesDetails({
|
||||
workspaceSlug: workspaceSlug?.toString(),
|
||||
|
|
@ -34,7 +34,7 @@ const CycleDetailPage = observer(() => {
|
|||
cycleId: cycleId.toString(),
|
||||
});
|
||||
// derived values
|
||||
const isSidebarCollapsed = storedValue ? (storedValue === "true" ? true : false) : false;
|
||||
const isSidebarCollapsed = storedValue ? (storedValue === true ? true : false) : false;
|
||||
const cycle = cycleId ? getCycleById(cycleId.toString()) : undefined;
|
||||
const project = projectId ? getProjectById(projectId.toString()) : undefined;
|
||||
const pageTitle = project?.name && cycle?.name ? `${project?.name} - ${cycle?.name}` : undefined;
|
||||
|
|
@ -42,7 +42,7 @@ const CycleDetailPage = observer(() => {
|
|||
/**
|
||||
* Toggles the sidebar
|
||||
*/
|
||||
const toggleSidebar = () => setValue(`${!isSidebarCollapsed}`);
|
||||
const toggleSidebar = () => setValue(!isSidebarCollapsed);
|
||||
|
||||
// const activeLayout = issuesFilter?.issueFilters?.displayFilters?.layout;
|
||||
|
||||
|
|
|
|||
|
|
@ -99,11 +99,11 @@ export const CycleIssuesHeader: React.FC = observer(() => {
|
|||
|
||||
const activeLayout = issueFilters?.displayFilters?.layout;
|
||||
|
||||
const { setValue, storedValue } = useLocalStorage("cycle_sidebar_collapsed", "false");
|
||||
const { setValue, storedValue } = useLocalStorage("cycle_sidebar_collapsed", false);
|
||||
|
||||
const isSidebarCollapsed = storedValue ? (storedValue === "true" ? true : false) : false;
|
||||
const isSidebarCollapsed = storedValue ? (storedValue === true ? true : false) : false;
|
||||
const toggleSidebar = () => {
|
||||
setValue(`${!isSidebarCollapsed}`);
|
||||
setValue(!isSidebarCollapsed);
|
||||
};
|
||||
|
||||
const handleLayoutChange = useCallback(
|
||||
|
|
|
|||
|
|
@ -241,10 +241,10 @@ export class CycleStore implements ICycleStore {
|
|||
}
|
||||
|
||||
getIsPointsDataAvailable = computedFn((cycleId: string) => {
|
||||
const cycle = this.cycleMap[cycleId];
|
||||
const cycle = this.getCycleById(cycleId);
|
||||
if (!cycle) return false;
|
||||
if (this.cycleMap[cycleId].version === 2) return cycle.progress.some((p) => p.total_estimate_points > 0);
|
||||
else if (this.cycleMap[cycleId].version === 1) {
|
||||
if (cycle.version === 2) return cycle.progress?.some((p) => p.total_estimate_points > 0);
|
||||
else if (cycle.version === 1) {
|
||||
const completionChart = cycle.estimate_distribution?.completion_chart || {};
|
||||
return !isEmpty(completionChart) && Object.keys(completionChart).some((p) => completionChart[p]! > 0);
|
||||
} else return false;
|
||||
|
|
@ -560,8 +560,7 @@ export class CycleStore implements ICycleStore {
|
|||
* @returns
|
||||
*/
|
||||
updateCycleDistribution = (distributionUpdates: DistributionUpdates, cycleId: string) => {
|
||||
const cycle = this.cycleMap[cycleId];
|
||||
|
||||
const cycle = this.getCycleById(cycleId);
|
||||
if (!cycle) return;
|
||||
|
||||
runInAction(() => {
|
||||
|
|
@ -644,7 +643,7 @@ export class CycleStore implements ICycleStore {
|
|||
entity_type: "cycle",
|
||||
entity_identifier: cycleId,
|
||||
project_id: projectId,
|
||||
entity_data: { name: this.cycleMap[cycleId].name || "" },
|
||||
entity_data: { name: currentCycle?.name || "" },
|
||||
});
|
||||
return response;
|
||||
} catch (error) {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import {
|
|||
// helpers
|
||||
import { getDistributionPathsPostUpdate } from "@/helpers/distribution-update.helper";
|
||||
//local
|
||||
import { storage } from "@/lib/local-storage";
|
||||
import { persistence } from "@/local-db/storage.sqlite";
|
||||
import { BaseIssuesStore, IBaseIssuesStore } from "../helpers/base-issues.store";
|
||||
//
|
||||
|
|
@ -142,8 +143,12 @@ export class CycleIssues extends BaseIssuesStore implements ICycleIssues {
|
|||
|
||||
projectId && cycleId && this.rootIssueStore.rootStore.cycle.fetchCycleDetails(workspaceSlug, projectId, cycleId);
|
||||
// fetch cycle progress
|
||||
const isSidebarCollapsed = storage.get("cycle_sidebar_collapsed");
|
||||
projectId &&
|
||||
cycleId &&
|
||||
this.rootIssueStore.rootStore.cycle.getCycleById(cycleId)?.version === 2 &&
|
||||
isSidebarCollapsed &&
|
||||
JSON.parse(isSidebarCollapsed) === false &&
|
||||
this.rootIssueStore.rootStore.cycle.fetchActiveCycleProgressPro(workspaceSlug, projectId, cycleId);
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue