Home Reference Source

application/redux/actions/site-actions.js

  1. import BaseService from './../../services/base-service';
  2.  
  3. class SiteService extends BaseService {
  4.  
  5. fetch(opts = {}) {
  6. return this.get('/v3/site', opts);
  7. }
  8.  
  9. fetchRoutes(opts = {}) {
  10. return this.get('/v3/site/route', opts);
  11. }
  12.  
  13. putRoute(uuid, data = {}) {
  14. let postData = data;
  15. postData['uuid'] = uuid;
  16. return this.put('/v3/site/route', postData);
  17. }
  18.  
  19. postRoute(data = {}) {
  20. return this.post('/v3/site/route', data);
  21. }
  22.  
  23. deleteRoute(uuid) {
  24. let postData = {
  25. uuid: uuid
  26. };
  27. return this.delete('/v3/site/route', postData);
  28. }
  29. }
  30.  
  31. const service = new SiteService;
  32.  
  33. /**
  34. * Action types
  35. */
  36. export const SITE_REQUEST = 'SITE_REQUEST';
  37. export const SITE_RECEIVE = 'SITE_RECEIVE';
  38. export const SITE_RECEIVE_ROUTES = 'SITE_RECEIVE_ROUTES';
  39. export const SITE_RECEIVE_SSL = 'SITE_RECEIVE_SSL';
  40. export const SITE_INVALIDATE = 'SITE_INVALIDATE';
  41.  
  42. /**
  43. * Action creators
  44. */
  45. export function siteRequest(params = {}) {
  46. return {
  47. type: SITE_REQUEST,
  48. payload: {
  49. params: params
  50. }
  51. };
  52. }
  53.  
  54. export function siteReceive(items) {
  55.  
  56. return {
  57. type: SITE_RECEIVE,
  58. payload: {
  59. information: items ? items : []
  60. }
  61. };
  62. }
  63.  
  64. export function siteReceiveRoutes(items) {
  65.  
  66. return {
  67. type: SITE_RECEIVE_ROUTES,
  68. payload: {
  69. routes: items ? items : []
  70. }
  71. };
  72. }
  73.  
  74. export function siteReceiveSsl(items) {
  75.  
  76. return {
  77. type: SITE_RECEIVE_SSL,
  78. payload: {
  79. ssl: items ? items : []
  80. }
  81. };
  82. }
  83.  
  84. export function siteInvalidate() {
  85. return {
  86. type: SITE_INVALIDATE,
  87. payload: {
  88. }
  89. };
  90. }
  91.  
  92. export function siteShouldFetch(state) {
  93. const site = state.site;
  94. if (!site.information.length) {
  95. return true;
  96. } else if (site.isFetching) {
  97. return false;
  98. }
  99.  
  100. return site.didInvalidate;
  101. }
  102.  
  103. export function siteMaybeFetch(params = {}) {
  104. return function(dispatch, getState) {
  105. const site = getState().site;
  106.  
  107. if (!site.information || !site.information.size) {
  108. return dispatch(siteFetch(params));
  109. }
  110.  
  111. return Promise.resolve();
  112. }
  113. };
  114.  
  115. export function siteFetch(params = {}) {
  116. return function(dispatch, getState) {
  117. dispatch(siteRequest(params));
  118.  
  119. return service.fetch(params)
  120. .then(response => {
  121. return dispatch(siteReceive(response.get('site')));
  122. });
  123. };
  124. };
  125.  
  126. export function siteFetchRoutes(params = {}) {
  127. return function(dispatch, getState) {
  128. dispatch(siteRequest(params));
  129.  
  130. return service.fetchRoutes(params)
  131. .then(response => {
  132. return dispatch(siteReceiveRoutes(response.first()));
  133. });
  134. };
  135. };
  136.  
  137. export function siteFetchSsl(params = {}) {
  138. return function(dispatch, getState) {
  139. dispatch(siteRequest(params));
  140.  
  141. return service.get('/v3/site/ssl', params)
  142. .then(response => {
  143. return dispatch(siteReceiveSsl(response.first()));
  144. });
  145. };
  146. };
  147.  
  148. export function siteCreateRoute(data = {}) {
  149. return function(dispatch, getState) {
  150. dispatch(siteRequest({}));
  151.  
  152. return service.postRoute(data)
  153. .then(response => {
  154. return dispatch(siteReceiveRoutes(response.first()));
  155. });
  156. };
  157. };
  158.  
  159. export function siteUpdateRoute(uuid, data = {}) {
  160. return function(dispatch, getState) {
  161. dispatch(siteRequest({}));
  162.  
  163. return service.putRoute(uuid, data)
  164. .then(response => {
  165. return dispatch(siteReceiveRoutes(response.first()));
  166. });
  167. };
  168. };
  169.  
  170. export function siteRemoveRoute(uuid) {
  171. return function(dispatch, getState) {
  172. dispatch(siteRequest({}));
  173.  
  174. return service.deleteRoute(uuid);
  175. };
  176. };