Skip to content

Commit

Permalink
AnswersActionsContext -> AnswersHeadlessContext
Browse files Browse the repository at this point in the history
  • Loading branch information
cea2aj committed Oct 25, 2021
1 parent 0f11a7d commit ba9ffcd
Show file tree
Hide file tree
Showing 10 changed files with 29 additions and 29 deletions.
8 changes: 4 additions & 4 deletions sample-app/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions sample-app/src/components/StaticFilters.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { Fragment } from 'react';
import { Filter, CombinedFilter, FilterCombinator, Matcher } from '@yext/answers-core';
import { AnswersActionsContext } from '@yext/answers-headless-react';
import { AnswersHeadlessContext } from '@yext/answers-headless-react';

interface CheckBoxProps {
fieldId: string,
Expand Down Expand Up @@ -115,4 +115,4 @@ function formatOrFilters(filters: Filter[]) {
}
}

StaticFilters.contextType = AnswersActionsContext;
StaticFilters.contextType = AnswersHeadlessContext;
2 changes: 1 addition & 1 deletion src/AnswersActionsContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ import { AnswersHeadless } from '@yext/answers-headless';
import { createContext } from 'react';

// The default is empty because we don't know the user's config yet
export const AnswersActionsContext = createContext<AnswersHeadless>({} as AnswersHeadless);
export const AnswersHeadlessContext = createContext<AnswersHeadless>({} as AnswersHeadless);
6 changes: 3 additions & 3 deletions src/AnswersActionsProvider.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ReactChild, ReactChildren } from 'react';
import { provideAnswersHeadless, AnswersHeadless } from '@yext/answers-headless';
import { AnswersConfig } from '@yext/answers-core';
import { AnswersActionsContext } from './AnswersActionsContext';
import { AnswersHeadlessContext } from './AnswersHeadlessContext';

interface Props extends AnswersConfig {
children?: ReactChildren | ReactChild | (ReactChildren | ReactChild)[],
Expand All @@ -13,8 +13,8 @@ export function AnswersActionsProvider(props: Props): JSX.Element {
const answers: AnswersHeadless = provideAnswersHeadless(answersConfig);
verticalKey && answers.setVerticalKey(verticalKey);
return (
<AnswersActionsContext.Provider value={answers}>
<AnswersHeadlessContext.Provider value={answers}>
{children}
</AnswersActionsContext.Provider>
</AnswersHeadlessContext.Provider>
);
}
4 changes: 2 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ import { useAnswersState, StateSelector } from './useAnswersState';
import { useAnswersUtilities, AnswersUtilities } from './useAnswersUtilities';
import { subscribeToStateUpdates } from './subscribeToStateUpdates';
import { AnswersActionsProvider } from './AnswersActionsProvider';
import { AnswersActionsContext } from './AnswersActionsContext';
import { AnswersHeadlessContext } from './AnswersHeadlessContext';

export {
AnswersActionsContext,
AnswersHeadlessContext,
subscribeToStateUpdates,
useAnswersActions,
useAnswersState,
Expand Down
4 changes: 2 additions & 2 deletions src/subscribeToStateUpdates.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { ComponentType, useReducer, useEffect, useContext } from 'react';
import { State } from '@yext/answers-headless/lib/esm/models/state';
import { AnswersActionsContext } from './AnswersActionsContext';
import { AnswersHeadlessContext } from './AnswersHeadlessContext';
import isShallowEqual from './utils/isShallowEqual';

type SubscriberGenerator = (WrappedComponent: ComponentType<any>) => (props: any) => JSX.Element;
Expand All @@ -26,7 +26,7 @@ export function subscribeToStateUpdates(
*/
let previousPropsFromState = {};
return function AnswersHeadlessSubscriber(props: Record<string, unknown>) {
const answers = useContext(AnswersActionsContext);
const answers = useContext(AnswersHeadlessContext);
const [mergedProps, dispatch] = useReducer(() => {
return {
...props,
Expand Down
4 changes: 2 additions & 2 deletions src/useAnswersActions.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { AnswersHeadless } from '@yext/answers-headless';
import { useContext } from 'react';
import { AnswersActionsContext } from './AnswersActionsContext';
import { AnswersHeadlessContext } from './AnswersHeadlessContext';

export type AnswersActions = AnswersHeadless;

export function useAnswersActions(): AnswersActions {
return useContext(AnswersActionsContext);
return useContext(AnswersHeadlessContext);
}
4 changes: 2 additions & 2 deletions src/useAnswersState.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useContext, useLayoutEffect, useRef, useState } from 'react';
import { State } from '@yext/answers-headless/lib/esm/models/state';
import { AnswersActionsContext } from './AnswersActionsContext';
import { AnswersHeadlessContext } from './AnswersHeadlessContext';

export type StateSelector<T> = (s: State) => T;

Expand All @@ -9,7 +9,7 @@ export type StateSelector<T> = (s: State) => T;
* Very similar to useSelector in react-redux.
*/
export function useAnswersState<T>(stateSelector: StateSelector<T>): T {
const answers = useContext(AnswersActionsContext);
const answers = useContext(AnswersHeadlessContext);

// useRef stores values across renders without triggering additional ones
const storedStoreState = useRef<State>(answers.state);
Expand Down
4 changes: 2 additions & 2 deletions src/useAnswersUtilities.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { AnswersHeadless } from '@yext/answers-headless';
import { useContext } from 'react';
import { AnswersActionsContext } from './AnswersActionsContext';
import { AnswersHeadlessContext } from './AnswersHeadlessContext';

export type AnswersUtilities = AnswersHeadless['utilities'];

export function useAnswersUtilities(): AnswersUtilities {
return useContext(AnswersActionsContext).utilities;
return useContext(AnswersHeadlessContext).utilities;
}
18 changes: 9 additions & 9 deletions tests/useAnswersState.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Result } from '@yext/answers-core';
import { provideAnswersHeadless } from '@yext/answers-headless';
import { State } from '@yext/answers-headless/lib/esm/models/state';
import React, { useCallback, useReducer } from 'react';
import { AnswersActionsContext, useAnswersActions, useAnswersState } from '../src';
import { AnswersHeadlessContext, useAnswersActions, useAnswersState } from '../src';

it('does not perform extra renders/listener registrations for nested components', async () => {
const parentStateUpdates: Result[][] = [];
Expand Down Expand Up @@ -49,9 +49,9 @@ it('does not perform extra renders/listener registrations for nested components'
expect(parentStateUpdates).toHaveLength(0);
expect(childStateUpdates).toHaveLength(0);
render(
<AnswersActionsContext.Provider value={answers}>
<AnswersHeadlessContext.Provider value={answers}>
<Test />
</AnswersActionsContext.Provider>
</AnswersHeadlessContext.Provider>
);
expect(addListenerSpy).toHaveBeenCalledTimes(1);
expect(parentStateUpdates).toHaveLength(1);
Expand Down Expand Up @@ -90,9 +90,9 @@ it('does not trigger render on unmounted component', async () => {

const answers = createAnswersHeadless();
render(
<AnswersActionsContext.Provider value={answers}>
<AnswersHeadlessContext.Provider value={answers}>
<ParentComponent/>
</AnswersActionsContext.Provider>
</AnswersHeadlessContext.Provider>
);
act(() => answers.setQuery('resultsWithFilter'));
await act( () => answers.executeUniversalQuery());
Expand Down Expand Up @@ -122,9 +122,9 @@ describe('uses the most recent selector',() => {

const answers = createAnswersHeadless();
render(
<AnswersActionsContext.Provider value={answers}>
<AnswersHeadlessContext.Provider value={answers}>
<Test />
</AnswersActionsContext.Provider>
</AnswersHeadlessContext.Provider>
);
expect(screen.getByTestId('selected-state')).toHaveTextContent('initial selector');

Expand Down Expand Up @@ -157,9 +157,9 @@ describe('uses the most recent selector',() => {
answers.setQuery('initial value');
expect(stateUpdates).toHaveLength(0);
render(
<AnswersActionsContext.Provider value={answers}>
<AnswersHeadlessContext.Provider value={answers}>
<Test />
</AnswersActionsContext.Provider>
</AnswersHeadlessContext.Provider>
);
expect(stateUpdates).toEqual(['initial value']);

Expand Down

0 comments on commit ba9ffcd

Please sign in to comment.