diff --git a/packages/data-stores/src/index.ts b/packages/data-stores/src/index.ts index e4aad609ca80..50ade2a9096c 100644 --- a/packages/data-stores/src/index.ts +++ b/packages/data-stores/src/index.ts @@ -8,7 +8,6 @@ import * as Onboard from './onboard'; import oneWeekPersistenceConfig from './one-week-persistence-config'; import * as Plans from './plans'; import * as ProductsList from './products-list'; -import * as Reader from './reader'; import * as Site from './site'; import * as StepperInternal from './stepper-internal'; import * as Subscriber from './subscriber'; @@ -46,7 +45,6 @@ export { WpcomPlansUI, Launch, WPCOMFeatures, - Reader, Onboard, oneWeekPersistenceConfig, ProductsList, diff --git a/packages/data-stores/src/reader/actions.ts b/packages/data-stores/src/reader/actions.ts deleted file mode 100644 index b6e43ab527e3..000000000000 --- a/packages/data-stores/src/reader/actions.ts +++ /dev/null @@ -1,20 +0,0 @@ -export interface ReaderTeam { - slug: string; - team: string; -} - -export interface ReaderTeamsResponse { - number: number; - teams: ReaderTeam[]; -} - -export const fetchReaderTeamsSuccess = ( response: ReaderTeamsResponse ) => - ( { - type: 'FETCH_READER_TEAMS_SUCCESS', - response, - } as const ); - -export type ReaderAction = - | ReturnType< typeof fetchReaderTeamsSuccess > - // Dummy action used during testing - | { type: 'DUMMY_ACTION' }; diff --git a/packages/data-stores/src/reader/constants.ts b/packages/data-stores/src/reader/constants.ts deleted file mode 100644 index 285e5578764d..000000000000 --- a/packages/data-stores/src/reader/constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const STORE_KEY = 'automattic/reader'; diff --git a/packages/data-stores/src/reader/index.ts b/packages/data-stores/src/reader/index.ts deleted file mode 100644 index 1ac64423f435..000000000000 --- a/packages/data-stores/src/reader/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { plugins, registerStore, use } from '@wordpress/data'; -import persistOptions from '../one-week-persistence-config'; -import { controls } from '../wpcom-request-controls'; -import * as actions from './actions'; -import { STORE_KEY } from './constants'; -import reducer, { State } from './reducer'; -import * as resolvers from './resolvers'; -import * as selectors from './selectors'; - -export type { State }; -export { STORE_KEY }; - -use( plugins.persistence, persistOptions ); - -let isRegistered = false; - -export function register(): typeof STORE_KEY { - if ( ! isRegistered ) { - isRegistered = true; - registerStore( STORE_KEY, { - actions, - controls, - reducer, - resolvers, - selectors, - persist: [ 'teams' ], - } ); - } - return STORE_KEY; -} diff --git a/packages/data-stores/src/reader/reducer.ts b/packages/data-stores/src/reader/reducer.ts deleted file mode 100644 index 7c2175437526..000000000000 --- a/packages/data-stores/src/reader/reducer.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { combineReducers } from '@wordpress/data'; -import type { ReaderTeam, ReaderAction } from './actions'; -import type { Reducer } from 'redux'; - -const teams: Reducer< ReaderTeam[] | null, ReaderAction > = ( state = null, action ) => { - if ( action.type === 'FETCH_READER_TEAMS_SUCCESS' ) { - return action.response.teams; - } - return state; -}; - -const reducer = combineReducers( { - teams, -} ); - -export type State = ReturnType< typeof reducer >; - -export default reducer; diff --git a/packages/data-stores/src/reader/resolvers.ts b/packages/data-stores/src/reader/resolvers.ts deleted file mode 100644 index ad033a83d9f9..000000000000 --- a/packages/data-stores/src/reader/resolvers.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { wpcomRequest } from '../wpcom-request-controls'; -import { fetchReaderTeamsSuccess, ReaderTeamsResponse } from './actions'; - -export function* isA8cTeamMember(): Generator { - try { - const response = yield wpcomRequest( { - method: 'GET', - path: '/read/teams', - apiVersion: '1.2', - } ); - yield fetchReaderTeamsSuccess( response as ReaderTeamsResponse ); - } catch { - // Ignore errors - } -} diff --git a/packages/data-stores/src/reader/selectors.ts b/packages/data-stores/src/reader/selectors.ts deleted file mode 100644 index a863b6093cd6..000000000000 --- a/packages/data-stores/src/reader/selectors.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { State } from './reducer'; - -export const isA8cTeamMember = ( state: State ): boolean => - !! ( state.teams || [] ).find( ( team ) => team.slug === 'a8c' ); diff --git a/packages/data-stores/src/reader/test/reader-store.test.ts b/packages/data-stores/src/reader/test/reader-store.test.ts deleted file mode 100644 index 1e936e27f449..000000000000 --- a/packages/data-stores/src/reader/test/reader-store.test.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { dispatch, select } from '@wordpress/data'; -import waitForExpect from 'wait-for-expect'; -import wpcomRequest from 'wpcom-proxy-request'; -import { STORE_KEY } from '../constants'; -import { register } from '../index'; -import readerReducer from '../reducer'; - -jest.mock( 'wpcom-proxy-request', () => ( { - __esModule: true, - default: jest.fn(), - requestAllBlogsAccess: jest.fn( () => Promise.resolve() ), -} ) ); - -beforeAll( () => { - register(); -} ); - -beforeEach( () => { - // Reset the store back to default state - dispatch( STORE_KEY ).fetchReaderTeamsSuccess( { teams: null } as any ); -} ); - -test( 'teams state defaults to `null`', () => { - const defaultState = readerReducer( undefined, { type: 'DUMMY_ACTION' } ); - expect( defaultState.teams ).toBe( null ); -} ); - -test( 'selecting isA8cTeamMember requests teams data from API', async () => { - ( wpcomRequest as jest.Mock ).mockResolvedValue( { - count: 0, - teams: [ { name: '', slug: 'a8c' } ], - } ); - - const isTeamMember = select( STORE_KEY ).isA8cTeamMember(); - - // Returns false while response is loading - expect( isTeamMember ).toBe( false ); - - await waitForExpect( () => { - const isTeamMember = select( STORE_KEY ).isA8cTeamMember(); - expect( isTeamMember ).toBe( true ); - } ); -} );