PluginProbe ʕ •ᴥ•ʔ
Starter Sites & Templates by Neve / 1.4.1
Starter Sites & Templates by Neve v1.4.1
1.4.1 1.4.0 1.3.0 1.2.29 1.2.28 1.2.6 1.2.7 1.2.8 1.2.9 trunk 1.0.10 1.0.11 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.27 1.1.28 1.1.29 1.1.3 1.1.30 1.1.31 1.1.32 1.1.33 1.1.34 1.1.35 1.1.36 1.1.37 1.1.38 1.1.39 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.3 1.2.4 1.2.5
templates-patterns-collection / onboarding / src / store / reducer.js
templates-patterns-collection / onboarding / src / store Last commit date
actions.js 3 weeks ago reducer.js 3 weeks ago selectors.js 3 weeks ago
reducer.js
176 lines
1 /* global tiobDash, localStorage */
2 const { onboarding, licenseTIOB } = tiobDash;
3
4 const firstEditor =
5 'undefined' !== typeof onboarding.sites &&
6 'undefined' !== typeof onboarding.sites.sites
7 ? Object.keys( onboarding.sites.sites )[ 0 ]
8 : 'gutenberg';
9 const selectedEditor =
10 localStorage.getItem( 'neve-onboarding-editor' ) || firstEditor;
11
12 const initialLicense = licenseTIOB || {
13 key: 'free',
14 valid: 'invalid',
15 expiration: '',
16 tier: 0,
17 };
18
19 const params = new URLSearchParams( window.location.search );
20 const defaultSiteSlug = params.get( 'site' );
21
22 const findSiteBySlug = ( slug ) => {
23 const builders = onboarding?.sites?.sites || {};
24 for ( const builder of Object.keys( builders ) ) {
25 if ( builders[ builder ]?.[ slug ] ) {
26 return builders[ builder ][ slug ];
27 }
28 }
29 return null;
30 };
31
32 const defaultSite = defaultSiteSlug ? findSiteBySlug( defaultSiteSlug ) : null;
33
34 const initialState = {
35 sites: onboarding.sites || {},
36 editor: selectedEditor,
37 category: 'all',
38 currentSite: defaultSite,
39 fetching: false,
40 searchQuery: '',
41 license: initialLicense,
42 onboardingStep: defaultSite ? 3 : 2,
43 userCustomSettings: {
44 siteName: null,
45 siteLogo: null,
46 },
47 importData: null,
48 pluginOptions: {},
49 error: null,
50 trackingId: '',
51 refresh: false,
52 sortBy: 'recommended',
53 rankedOrder: {},
54 searchOrder: [],
55 searchFailed: false,
56 selectedColors: [],
57 };
58
59 export default ( state = initialState, action ) => {
60 switch ( action.type ) {
61 case 'SET_CATEGORY':
62 const { category } = action.payload;
63 return {
64 ...state,
65 category,
66 };
67 case 'SET_ONBOARDING_STEP':
68 const { step } = action.payload;
69 return {
70 ...state,
71 onboardingStep: step,
72 };
73 case 'SET_SEARCH_QUERY':
74 const { query } = action.payload;
75 return {
76 ...state,
77 searchQuery: query,
78 searchOrder: [],
79 searchFailed: false,
80 };
81 case 'SET_FOCUSED_SITE':
82 const { siteData } = action.payload;
83 return {
84 ...state,
85 currentSite: siteData,
86 };
87 case 'SET_IMPORT_DATA':
88 const { importData } = action.payload;
89 return {
90 ...state,
91 importData,
92 };
93 case 'SET_PLUGIN_OPTIONS':
94 const { pluginOptions } = action.payload;
95 return {
96 ...state,
97 pluginOptions,
98 };
99 case 'SET_ERROR':
100 const { error } = action.payload;
101 return {
102 ...state,
103 error,
104 };
105 case 'SET_FETCHING':
106 const { fetching } = action.payload;
107 return {
108 ...state,
109 fetching,
110 };
111 case 'SET_USER_CUSTOM_SETTINGS':
112 const { userCustomSettings } = action.payload;
113 return {
114 ...state,
115 userCustomSettings,
116 };
117 case 'SET_CURRENT_EDITOR':
118 const { editor } = action.payload;
119 localStorage.setItem( 'neve-onboarding-editor', editor );
120 return {
121 ...state,
122 editor,
123 sortBy:
124 state.sortBy === 'new' && editor !== 'gutenberg'
125 ? 'recommended'
126 : state.sortBy,
127 };
128 case 'SET_TRACKING_ID':
129 const { trackingId } = action.payload;
130 return {
131 ...state,
132 trackingId,
133 };
134 case 'SET_REFRESH':
135 const { refresh } = action.payload;
136 return {
137 ...state,
138 refresh,
139 };
140 case 'SET_SORT_BY':
141 const { sortBy } = action.payload;
142 return {
143 ...state,
144 sortBy,
145 };
146 case 'SET_RANKED_ORDER':
147 const { editor: rankedEditor, order: rankedOrder } = action.payload;
148 return {
149 ...state,
150 rankedOrder: {
151 ...state.rankedOrder,
152 [ rankedEditor ]: rankedOrder,
153 },
154 };
155 case 'SET_SEARCH_ORDER':
156 const { order: searchOrder } = action.payload;
157 return {
158 ...state,
159 searchOrder,
160 };
161 case 'SET_SEARCH_FAILED':
162 const { failed } = action.payload;
163 return {
164 ...state,
165 searchFailed: failed,
166 };
167 case 'SET_SELECTED_COLORS':
168 const { colors } = action.payload;
169 return {
170 ...state,
171 selectedColors: Array.isArray( colors ) ? colors : [],
172 };
173 }
174 return state;
175 };
176