1- import omit from 'lodash/omit' ;
2- import camelCase from 'lodash/camelCase' ;
3-
4- const blacklistFunctionName = [
5- 'getServerSideProps' ,
6- 'getServicesWithMultiple' ,
7- 'getInitialStateWithMultiple' ,
8- 'setDependencies' ,
9- 'setSeoState' ,
10- 'setRedirection' ,
11- 'setPageData'
12- ] ;
13-
14- const getCustomSetters = ( component , context , data ) => {
15- const pattern = new RegExp ( `^set` ) ;
16- const functions = omit ( component , blacklistFunctionName ) ;
1+ const getResponseData = ( component , context , data ) => {
172 let result = { } ;
183
19- Object . entries ( functions ) . forEach ( entity => {
20- const [ name , method ] = entity ;
21- const isValidName = pattern . test ( name ) ;
22- if ( isValidName ) {
23- const propertyName = camelCase ( name . replace ( pattern , '' ) ) ;
24- let value = null ;
25- if ( typeof method === 'function' ) {
26- value = method ( context , data ) ;
27- } else {
28- value = method ;
29- }
30-
31- if ( value ) {
32- result = {
33- ...result ,
34- [ propertyName ] : value
35- } ;
36- }
4+ if ( component ?. setResponseData ) {
5+ if ( typeof component . setResponseData === 'function' ) {
6+ result = component . setResponseData ( context , data ) ;
7+ } else {
8+ result = component . setResponseData ;
379 }
38- } ) ;
10+ }
3911
4012 return result ;
4113} ;
4214
4315const getStates = async ( component , context , predefinedInitialState ) => {
4416 const initialState = predefinedInitialState || { data : { } } ;
4517 let subComponentFiles = [ ] ;
46- let seoState = { } ;
4718 let responseOptions = { } ;
48- let dependencies = [ ] ;
49- let redirection = null ;
50-
51- if ( component . setDependencies ) {
52- dependencies = component . setDependencies ( context ) ;
53- }
19+ const responseData = getResponseData ( component , context , initialState . data ) ;
5420
5521 if ( context . isWithoutState ) {
56- return { initialState, seoState , dependencies , subComponentFiles, responseOptions } ;
22+ return { initialState, subComponentFiles, responseOptions, ... responseData } ;
5723 }
5824
59- if ( ! predefinedInitialState && component . getServerSideProps ) {
25+ if ( ! predefinedInitialState && component ? .getServerSideProps ) {
6026 initialState . data = await component . getServerSideProps ( context ) ;
6127 }
6228
63- if ( component ?. setSeoState ) {
64- seoState = component . setSeoState ( initialState ?. data ) || { } ;
65- }
66-
6729 if ( initialState ?. data ?. subComponentFiles ) {
6830 subComponentFiles = initialState ?. data ?. subComponentFiles || [ ] ;
6931 }
@@ -72,24 +34,11 @@ const getStates = async (component, context, predefinedInitialState) => {
7234 responseOptions = initialState ?. data ?. responseOptions || { } ;
7335 }
7436
75- if ( component . setRedirection ) {
76- redirection = component . setRedirection ( context , initialState . data ) ;
77- }
78-
79- if ( component . setPageData ) {
80- redirection = component . setPageData ( context , initialState . data ) ;
81- }
82-
83- const setters = getCustomSetters ( component , context , initialState . data ) ;
84-
8537 return {
8638 initialState,
87- seoState,
8839 subComponentFiles,
8940 responseOptions,
90- dependencies,
91- redirection,
92- ...setters
41+ ...responseData
9342 } ;
9443} ;
9544
0 commit comments