From ecc014fb694265778a7a0418cd47e9a4be9bfd37 Mon Sep 17 00:00:00 2001 From: thomasgross Date: Fri, 6 Dec 2024 13:40:38 +0100 Subject: [PATCH] feat: add initial context as an globally accessible reference --- lib/machines/search/search.machine.setup.ts | 7 ++--- lib/machines/search/search.machine.ts | 30 ++++++++++++++------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/lib/machines/search/search.machine.setup.ts b/lib/machines/search/search.machine.setup.ts index f8b4210..85bee67 100644 --- a/lib/machines/search/search.machine.setup.ts +++ b/lib/machines/search/search.machine.setup.ts @@ -2,6 +2,7 @@ import { assign, emit, setup } from "xstate" import { correctFacetNames } from "./helpers" import { getFacets, performSearch } from "./queries" +import { initialContext } from "./search.machine" import { TContext, TFilters, TInput } from "./types" export default setup({ @@ -52,13 +53,13 @@ export default setup({ submittedQuery: ({ context }) => (context.submittedQuery = context.currentQuery), }), resetFilters: assign(() => ({ - selectedFilters: {}, + selectedFilters: initialContext.selectedFilters, })), resetSearchData: assign(() => ({ - searchData: undefined, + searchData: initialContext.searchData, })), resetOffset: assign(() => ({ - searchOffset: 0, + searchOffset: initialContext.searchOffset, })), setFacetDataInContext: assign({ facetData: ({ diff --git a/lib/machines/search/search.machine.ts b/lib/machines/search/search.machine.ts index 18cb43f..a9a7bbb 100644 --- a/lib/machines/search/search.machine.ts +++ b/lib/machines/search/search.machine.ts @@ -2,20 +2,32 @@ import { and, not } from "xstate" import searchMachineSetup from "./search.machine.setup" +export const initialContext = { + searchOffset: 0, + searchPageSize: 0, + facetLimit: 0, + currentQuery: "", + submittedQuery: undefined, + searchData: undefined, + facetData: undefined, + selectedFilters: {}, + queryClient: null, +} + export default searchMachineSetup.createMachine({ /** @xstate-layout N4IgpgJg5mDOIC5SzAQwE4GMAWA6ARgPaEAusJ6qADgMQDKAogCoD6AigKoMBKAmiwGEAMgEkGAOSYBtAAwBdRKCqFYASxKrCAO0UgAHogC0ANgCMAVlwAWAJzGATDIAcNmeYDM9zwBoQAT0QLAHZcYycnIKdTSNcndysAXwTfFAwcAmIyCmp6ZhZGAEFuAQAJfKZuEXEAcVkFJBBlNQ1tXQMEQytjS0cbKyCg0xdwpytzXwCEd2jcGxt3d1Gne273AaSUtCw8IlJySlpGViqRJhECoRYAMREhJh46Ot0m9U0dBvaTR1Cw0ysFpzmLxuCaIKxDXCmdw2cwyFamYyLKIbECpbYZPbZWgAIQA8rimHQKgUAAosAAiuPEDCeDReLXeoE+5iiuCC0Js9isK36phhoIQphkNlC4Ui0RczniphRaPSuyyBxoeIJRO4pIpVJppnqShUr1aHyMLNMbI5XJ5g35-kQZlFESiMSl4NlW3SqggABswDQmLjqtUhAxrrd7txaXrmm82oh4j17C47OYHE5jALHPZcOYuiNxXF3A5XWk8B7vb7-YHgzc7jwpDrnvqGTGEPYgiKvH1ls4gkDugLzBZcAWglygmE22ZjEX0aWfUxeCSqrV5A2o4amcbubM-vY5gsYQiggK21ZIcCZHDjD3wVPkqi3SWvT7CsUShHGo3o0apnEs64HDInj2KYfJxAKiIigOxh9DIgyptCMp3nKj5li+pR1rqH5roy+ixgMkLcjYCLmD2Ep2AKsS4BEMLsi4njuAO07uk+NBCLiBTkiwACyuLcDSK50p+664YKRG4LutjxPYXIXgO9gCiBcxUQ4V7TMsaw2EETF4AAZqonokGA6CqFoUAFFoEB0A+JlQDQEDaGAuDkKghlOQ+uB6QZRk2eZlnWaZ770l+G4dHyMhZuYLJtqmbh-DIVj9qebgjmMgJcg4XTaR5+mGcZpm+VZxY2b6C5LoFQk4e0CKAZCUKjh4qatk4x5ONYgJXpywoIn8t6bMW2VeXlZkWYV2zFWhb4CZGBqVYEgIhF00knsByymAKhieElfLZqBUREYkSHuZ5uU+SN-m2RNGGrjNzZ8osuBuM4MmmAmXLuMekSzHCaz9D25hzFph39cd3n5WdRWmW5-XIcV9laI5JkAG6EAA1o5yEDSdYN+RDUBQ+iMOmQgSOEJgLlvHU5XYbdbjGLMdjCms4w2i2VitZyJFRPY5hZSDQ0Fed+PpITtlGeghDoLgVCei5OkSwAtkLuk5aDw042NkMYyLxNaMjZMMpTU1YTd36jCEcHsv04LAcKCl9F9Xj-D2vMq-z4Ma3jfOY6rdkObgJNo0r3tu+rOA2cHwc2Trevk9ohuYUFwlVZe1jc+K3P9kE4WSg4PNA+ifOnaH2Dh17hemTQYsS1LMskHL6CKxj5dq6NYeQ2XrtRyT+sU-IVMmyFZvWHFuf9giykW3nfXop6hCoBANlcRLYCt9g3BwAArgZsBK7DfsB+j7mz-Pi-L6v6+wFvZC70T3ex1o8fXU236GHydNdPFxj9P9CwrRR3zcx2nMMI3MxhZWPgvUyS90ArwfBfK+O8RaV3QOLSW0tZYKyDhA0+MDz6b23jfKA0dSb30foJamL8XqtSoS9WCrYPBWDGApLw7hxKLRAmzaY4I853i0IQCAcBdDISfsFEShhASsIiK2YcX8rTM0mJ0ECWZtr-G5BYNYcQsoKn2NQERScjBODcFREc7IryyO2utNY4kGJZ0YdzXOMIDrT2Yt6PRs1QqZnCMmScYwrxxDCOBGQdMNEMQsK4KwwonH3mBp3bGq8bJuObOyEIwIcw9jtg7Lwfw0rzEBFEpusSW6C2EeQgeIlIiWA8AOZMGcWZCgWnCBMY5ohf2gu4F2g0i7xM1u5EWiTTYLCzKEmp8jECjmsN9J2U9okF0KQLXGQc4ZgH6SFF6n1aLTBaT2cU6ZoKhCBPEJmHSsZFIWXzFZ5TATWM-hEUZCBCJDivOlREUjui9RmekZu8yPYR2bhc9o+ZrlpLucmEUw4hjO3zp8uZ7s26e1drgJZ-zAgySzMMII3IryczWizf6pozCT3AXPSBUBoGwOLPA7eyKOi2BFFCH+QEezxCYXUv4lgMUOCzg4IYYQiUnygWfOB+Dr59NKc-EKnQByQgYvMRlDCWWTBeoM9KwFslcIsEkJIQA */ id: "search", initial: "bootstrap", context: ({ input }) => ({ - searchOffset: input.initialOffset ?? 0, - searchPageSize: input.searchPageSize, - facetLimit: input.facetLimit, - currentQuery: input.q ?? "", - submittedQuery: undefined, - searchData: undefined, - facetData: undefined, - selectedFilters: input.filters ?? {}, - queryClient: input.queryClient ?? null, + searchOffset: input.initialOffset ?? initialContext.searchOffset, + searchPageSize: input.searchPageSize ?? initialContext.searchPageSize, + facetLimit: input.facetLimit ?? initialContext.facetLimit, + currentQuery: input.q ?? initialContext.currentQuery, + submittedQuery: initialContext.submittedQuery, + searchData: initialContext.searchData, + facetData: initialContext.facetData, + selectedFilters: input.filters ?? initialContext.selectedFilters, + queryClient: input.queryClient ?? initialContext.queryClient, }), states: { bootstrap: {