refactor
This commit is contained in:
49
lib/useEditorSessionState.ts
Normal file
49
lib/useEditorSessionState.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import { useState } from "react";
|
||||
import type { FeatureCollection } from "@/types/geo";
|
||||
import { useBackgroundSessionState } from "@/lib/editor/session/useBackgroundSessionState";
|
||||
import { useEntitySessionState } from "@/lib/editor/session/useEntitySessionState";
|
||||
import { useSectionSessionState } from "@/lib/editor/session/useSectionSessionState";
|
||||
import { useTimelineState } from "@/lib/editor/session/useTimelineState";
|
||||
import type { EditorMode, TimelineRange } from "@/lib/editor/session/sessionTypes";
|
||||
|
||||
export type {
|
||||
CreatedEntitySummary,
|
||||
EditorMode,
|
||||
EntityFormState,
|
||||
GeometryMetaFormState,
|
||||
PendingEntityCreate,
|
||||
TimelineRange,
|
||||
} from "@/lib/editor/session/sessionTypes";
|
||||
|
||||
type Options = {
|
||||
emptyFeatureCollection: FeatureCollection;
|
||||
defaultEditorUserId: string;
|
||||
fallbackTimelineRange: TimelineRange;
|
||||
currentYear: number;
|
||||
};
|
||||
|
||||
export function useEditorSessionState(options: Options) {
|
||||
const [mode, setMode] = useState<EditorMode>("idle");
|
||||
const [initialData, setInitialData] = useState<FeatureCollection>(options.emptyFeatureCollection);
|
||||
|
||||
const section = useSectionSessionState({
|
||||
defaultEditorUserId: options.defaultEditorUserId,
|
||||
});
|
||||
const entity = useEntitySessionState();
|
||||
const timeline = useTimelineState({
|
||||
currentYear: options.currentYear,
|
||||
fallbackTimelineRange: options.fallbackTimelineRange,
|
||||
});
|
||||
const background = useBackgroundSessionState();
|
||||
|
||||
return {
|
||||
mode,
|
||||
setMode,
|
||||
initialData,
|
||||
setInitialData,
|
||||
...section,
|
||||
...entity,
|
||||
...timeline,
|
||||
...background,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user