@coorpacademy/app-review 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/es/actions/api/fetch-skills.d.ts +13 -0
  2. package/es/actions/api/fetch-skills.js +8 -0
  3. package/es/actions/api/fetch-slide.d.ts +13 -0
  4. package/es/actions/api/fetch-slide.js +8 -0
  5. package/es/actions/api/post-progression.d.ts +13 -0
  6. package/es/actions/api/post-progression.js +15 -0
  7. package/es/actions/data/slides.d.ts +3 -24
  8. package/es/actions/data/slides.js +0 -11
  9. package/es/actions/index.d.ts +5 -4
  10. package/es/actions/ui/navigation.d.ts +0 -1
  11. package/es/actions/ui/navigation.js +0 -4
  12. package/es/actions/ui/step-items.d.ts +2 -8
  13. package/es/actions/ui/step-items.js +0 -6
  14. package/es/configure-store.d.ts +3 -26
  15. package/es/configure-store.js +4 -5
  16. package/es/fixtures/qcm-slide.d.ts +2 -2
  17. package/es/index.d.ts +1 -1
  18. package/es/index.js +40 -26
  19. package/es/reducers/data/index.d.ts +16 -5
  20. package/es/reducers/data/progression.d.ts +1 -2
  21. package/es/reducers/data/progression.js +4 -7
  22. package/es/reducers/data/skills.d.ts +4 -5
  23. package/es/reducers/data/skills.js +3 -6
  24. package/es/reducers/data/slides.d.ts +2 -1
  25. package/es/reducers/data/slides.js +3 -3
  26. package/es/reducers/data/token.d.ts +0 -1
  27. package/es/reducers/data/token.js +1 -5
  28. package/es/reducers/index.d.ts +9 -3
  29. package/es/reducers/ui/finished-slides.d.ts +0 -1
  30. package/es/reducers/ui/finished-slides.js +1 -3
  31. package/es/reducers/ui/index.d.ts +14 -4
  32. package/es/reducers/ui/navigation.d.ts +0 -1
  33. package/es/reducers/ui/navigation.js +1 -3
  34. package/es/reducers/ui/review-status.d.ts +0 -1
  35. package/es/reducers/ui/review-status.js +1 -4
  36. package/es/reducers/ui/step-items.d.ts +5 -5
  37. package/es/reducers/ui/step-items.js +0 -1
  38. package/es/services/fetch-skills.d.ts +2 -8
  39. package/es/services/fetch-skills.js +2 -14
  40. package/es/services/fetch-slide.d.ts +2 -8
  41. package/es/services/fetch-slide.js +9 -24
  42. package/es/services/index.d.ts +2 -0
  43. package/es/services/index.js +8 -0
  44. package/es/services/post-progression.d.ts +2 -8
  45. package/es/services/post-progression.js +2 -14
  46. package/es/services/test/fetch-skills.test.js +29 -0
  47. package/es/services/test/post-progression.test.js +35 -0
  48. package/es/{index.test.js → test/index.test.js} +15 -4
  49. package/es/test/util/services.mock.d.ts +2 -0
  50. package/es/test/util/services.mock.js +68 -0
  51. package/es/types/common.d.ts +58 -0
  52. package/es/types/common.js +5 -0
  53. package/es/types/slides.d.ts +1 -1
  54. package/es/types/views/slides.d.ts +1 -1
  55. package/lib/actions/api/fetch-skills.d.ts +13 -0
  56. package/lib/actions/api/fetch-skills.js +13 -0
  57. package/lib/actions/api/fetch-slide.d.ts +13 -0
  58. package/lib/actions/api/fetch-slide.js +13 -0
  59. package/lib/actions/api/post-progression.d.ts +13 -0
  60. package/lib/actions/api/post-progression.js +18 -0
  61. package/lib/actions/data/slides.d.ts +3 -24
  62. package/lib/actions/data/slides.js +0 -11
  63. package/lib/actions/index.d.ts +5 -4
  64. package/lib/actions/ui/navigation.d.ts +0 -1
  65. package/lib/actions/ui/navigation.js +0 -4
  66. package/lib/actions/ui/step-items.d.ts +2 -8
  67. package/lib/actions/ui/step-items.js +0 -6
  68. package/lib/configure-store.d.ts +3 -26
  69. package/lib/configure-store.js +4 -5
  70. package/lib/fixtures/qcm-slide.d.ts +2 -2
  71. package/lib/index.d.ts +1 -1
  72. package/lib/index.js +40 -70
  73. package/lib/reducers/data/index.d.ts +16 -5
  74. package/lib/reducers/data/progression.d.ts +1 -2
  75. package/lib/reducers/data/progression.js +4 -7
  76. package/lib/reducers/data/skills.d.ts +4 -5
  77. package/lib/reducers/data/skills.js +3 -6
  78. package/lib/reducers/data/slides.d.ts +2 -1
  79. package/lib/reducers/data/slides.js +3 -3
  80. package/lib/reducers/data/token.d.ts +0 -1
  81. package/lib/reducers/data/token.js +1 -5
  82. package/lib/reducers/index.d.ts +9 -3
  83. package/lib/reducers/ui/finished-slides.d.ts +0 -1
  84. package/lib/reducers/ui/finished-slides.js +1 -3
  85. package/lib/reducers/ui/index.d.ts +14 -4
  86. package/lib/reducers/ui/navigation.d.ts +0 -1
  87. package/lib/reducers/ui/navigation.js +1 -3
  88. package/lib/reducers/ui/review-status.d.ts +0 -1
  89. package/lib/reducers/ui/review-status.js +1 -4
  90. package/lib/reducers/ui/step-items.d.ts +5 -5
  91. package/lib/reducers/ui/step-items.js +0 -1
  92. package/lib/services/fetch-skills.d.ts +2 -8
  93. package/lib/services/fetch-skills.js +3 -15
  94. package/lib/services/fetch-slide.d.ts +2 -8
  95. package/lib/services/fetch-slide.js +18 -25
  96. package/lib/services/index.d.ts +2 -0
  97. package/lib/services/index.js +8 -0
  98. package/lib/services/post-progression.d.ts +2 -8
  99. package/lib/services/post-progression.js +3 -15
  100. package/lib/services/{fetch-skills.test.js → test/fetch-skills.test.js} +23 -16
  101. package/lib/services/{post-progression.test.js → test/post-progression.test.js} +28 -23
  102. package/lib/{index.test.js → test/index.test.js} +20 -10
  103. package/lib/test/util/services.mock.d.ts +2 -0
  104. package/lib/test/util/services.mock.js +68 -0
  105. package/lib/types/common.d.ts +58 -0
  106. package/lib/types/common.js +5 -0
  107. package/lib/types/slides.d.ts +1 -1
  108. package/lib/types/views/slides.d.ts +1 -1
  109. package/package.json +5 -4
  110. package/src/actions/api/fetch-skills.ts +24 -0
  111. package/src/actions/api/fetch-slide.ts +24 -0
  112. package/src/actions/api/post-progression.ts +36 -0
  113. package/src/actions/data/slides.ts +3 -35
  114. package/src/actions/index.ts +5 -11
  115. package/src/actions/ui/navigation.ts +0 -5
  116. package/src/actions/ui/step-items.ts +2 -14
  117. package/src/configure-store.ts +6 -37
  118. package/src/fixtures/qcm-slide.ts +2 -2
  119. package/src/index.tsx +47 -38
  120. package/src/reducers/data/index.ts +12 -4
  121. package/src/reducers/data/progression.ts +5 -15
  122. package/src/reducers/data/skills.ts +5 -10
  123. package/src/reducers/data/slides.ts +4 -8
  124. package/src/reducers/data/token.ts +1 -11
  125. package/src/reducers/index.ts +7 -2
  126. package/src/reducers/ui/finished-slides.ts +1 -7
  127. package/src/reducers/ui/index.ts +11 -4
  128. package/src/reducers/ui/navigation.ts +1 -6
  129. package/src/reducers/ui/review-status.ts +1 -8
  130. package/src/reducers/ui/step-items.ts +5 -14
  131. package/src/services/fetch-skills.ts +4 -29
  132. package/src/services/fetch-slide.ts +10 -38
  133. package/src/services/index.ts +10 -0
  134. package/src/services/post-progression.ts +6 -28
  135. package/src/services/test/fetch-skills.test.ts +39 -0
  136. package/src/services/test/post-progression.test.ts +45 -0
  137. package/src/{index.test.tsx → test/index.test.tsx} +13 -5
  138. package/src/test/util/services.mock.ts +70 -0
  139. package/src/types/common.ts +70 -0
  140. package/src/types/globals.d.ts +1 -5
  141. package/src/types/slides.ts +1 -1
  142. package/src/types/views/slides.ts +1 -1
  143. package/es/actions/data/progression.d.ts +0 -30
  144. package/es/actions/data/progression.js +0 -12
  145. package/es/actions/data/skills.d.ts +0 -13
  146. package/es/actions/data/skills.js +0 -10
  147. package/es/middlewares/on-receive-progression.d.ts +0 -6
  148. package/es/middlewares/on-receive-progression.js +0 -22
  149. package/es/middlewares/on-receive-progression.test.d.ts +0 -1
  150. package/es/middlewares/on-receive-progression.test.js +0 -43
  151. package/es/middlewares/on-start-app.d.ts +0 -5
  152. package/es/middlewares/on-start-app.js +0 -37
  153. package/es/middlewares/on-start-app.test.d.ts +0 -1
  154. package/es/middlewares/on-start-app.test.js +0 -53
  155. package/es/services/fetch-skills.mock.d.ts +0 -3
  156. package/es/services/fetch-skills.mock.js +0 -17
  157. package/es/services/fetch-skills.test.js +0 -22
  158. package/es/services/post-progression.mock.d.ts +0 -5
  159. package/es/services/post-progression.mock.js +0 -31
  160. package/es/services/post-progression.test.js +0 -30
  161. package/es/services/tools/fetch.mocks.d.ts +0 -8
  162. package/es/services/tools/fetch.mocks.js +0 -13
  163. package/es/types/skills.d.ts +0 -7
  164. package/es/types/skills.js +0 -1
  165. package/lib/actions/data/progression.d.ts +0 -30
  166. package/lib/actions/data/progression.js +0 -12
  167. package/lib/actions/data/skills.d.ts +0 -13
  168. package/lib/actions/data/skills.js +0 -10
  169. package/lib/middlewares/on-receive-progression.d.ts +0 -6
  170. package/lib/middlewares/on-receive-progression.js +0 -27
  171. package/lib/middlewares/on-receive-progression.test.d.ts +0 -1
  172. package/lib/middlewares/on-receive-progression.test.js +0 -88
  173. package/lib/middlewares/on-start-app.d.ts +0 -5
  174. package/lib/middlewares/on-start-app.js +0 -42
  175. package/lib/middlewares/on-start-app.test.d.ts +0 -1
  176. package/lib/middlewares/on-start-app.test.js +0 -98
  177. package/lib/services/fetch-skills.mock.d.ts +0 -3
  178. package/lib/services/fetch-skills.mock.js +0 -17
  179. package/lib/services/post-progression.mock.d.ts +0 -5
  180. package/lib/services/post-progression.mock.js +0 -31
  181. package/lib/services/tools/fetch.mocks.d.ts +0 -8
  182. package/lib/services/tools/fetch.mocks.js +0 -35
  183. package/lib/types/skills.d.ts +0 -7
  184. package/lib/types/skills.js +0 -1
  185. package/src/actions/data/progression.ts +0 -50
  186. package/src/actions/data/skills.ts +0 -24
  187. package/src/middlewares/on-receive-progression.test.ts +0 -60
  188. package/src/middlewares/on-receive-progression.ts +0 -42
  189. package/src/middlewares/on-start-app.test.ts +0 -68
  190. package/src/middlewares/on-start-app.ts +0 -50
  191. package/src/services/fetch-skills.mock.ts +0 -21
  192. package/src/services/fetch-skills.test.ts +0 -32
  193. package/src/services/post-progression.mock.ts +0 -35
  194. package/src/services/post-progression.test.ts +0 -41
  195. package/src/services/tools/fetch.mocks.ts +0 -41
  196. package/src/types/skills.ts +0 -8
  197. /package/es/services/{fetch-skills.test.d.ts → test/fetch-skills.test.d.ts} +0 -0
  198. /package/es/services/{post-progression.test.d.ts → test/post-progression.test.d.ts} +0 -0
  199. /package/es/{index.test.d.ts → test/index.test.d.ts} +0 -0
  200. /package/lib/services/{fetch-skills.test.d.ts → test/fetch-skills.test.d.ts} +0 -0
  201. /package/lib/services/{post-progression.test.d.ts → test/post-progression.test.d.ts} +0 -0
  202. /package/lib/{index.test.d.ts → test/index.test.d.ts} +0 -0
@@ -1,10 +1,8 @@
1
- import { Slide as UISlide } from '../../types/slides';
2
- export declare const STORE_FIRST_SLIDE = "@@slide/STORE_FIRST_SLIDE";
1
+ import { UISlide } from '../../types/slides';
2
+ import { ReceivedSlide } from '../api/fetch-slide';
3
3
  export declare const UPDATE_SLIDES_ON_VALIDATION = "@@slide/UPDATE_SLIDES_ON_VALIDATION";
4
4
  export declare const UPDATE_SLIDES_ON_NEXT = "@@slide/UPDATE_SLIDES_ON_NEXT";
5
5
  export declare const VALIDATE_SLIDE = "@@slide/VALIDATE";
6
- export declare const FETCH_NEXT_CONTENT = "@@slide/FETCH_NEXT_CONTENT";
7
- export declare const ERROR_FETCHING_SLIDE = "@@data/slide/ERROR_FETCHING_SLIDE";
8
6
  declare type SlideUIAnimations = 'unstack' | 'restack';
9
7
  export declare type Slide = UISlide & {
10
8
  hidden?: boolean;
@@ -14,15 +12,6 @@ export declare type Slide = UISlide & {
14
12
  endReview?: boolean;
15
13
  nextContent?: Omit<Slide, 'endReview' | 'hidden' | 'position' | 'nextContent'>;
16
14
  };
17
- export declare type SlideFromAPI = {
18
- question: {
19
- content: {
20
- choices: Record<string, unknown>[];
21
- };
22
- };
23
- klf: string;
24
- universalRef: string;
25
- };
26
15
  export declare type ValidationPayload = {
27
16
  slideNumber: number;
28
17
  newSlideContent: Slide;
@@ -30,10 +19,6 @@ export declare type ValidationPayload = {
30
19
  nextContent: Slide;
31
20
  };
32
21
  export declare type OnNextPayload = Omit<ValidationPayload, 'nextContent'>;
33
- export declare type StoreFirstSlide = {
34
- type: typeof STORE_FIRST_SLIDE;
35
- payload: SlideFromAPI;
36
- };
37
22
  export declare type UpdateSlidesOnValidation = {
38
23
  type: typeof UPDATE_SLIDES_ON_VALIDATION;
39
24
  payload: ValidationPayload;
@@ -45,14 +30,8 @@ export declare type UpdateSlidesOnNext = {
45
30
  export declare type ValidateSlide = {
46
31
  type: typeof VALIDATE_SLIDE;
47
32
  };
48
- export declare type ErrorFetchingSlide = {
49
- type: typeof ERROR_FETCHING_SLIDE;
50
- payload: Error;
51
- };
52
- export declare type SlidesAction = StoreFirstSlide | UpdateSlidesOnValidation | UpdateSlidesOnNext;
53
- export declare const storeFirstSlide: (slide: SlideFromAPI) => StoreFirstSlide;
33
+ export declare type SlidesAction = ReceivedSlide | UpdateSlidesOnValidation | UpdateSlidesOnNext;
54
34
  export declare const updateSlidesOnValidation: (payload: ValidationPayload) => UpdateSlidesOnValidation;
55
35
  export declare const updateSlidesOnNext: (payload: OnNextPayload) => UpdateSlidesOnNext;
56
36
  export declare const validateSlide: () => ValidateSlide;
57
- export declare const errorFetchingSlide: (error: Error) => ErrorFetchingSlide;
58
37
  export {};
@@ -1,15 +1,8 @@
1
1
  // -----------------------------------------------------------------------------
2
- export var STORE_FIRST_SLIDE = '@@slide/STORE_FIRST_SLIDE';
3
2
  export var UPDATE_SLIDES_ON_VALIDATION = '@@slide/UPDATE_SLIDES_ON_VALIDATION';
4
3
  export var UPDATE_SLIDES_ON_NEXT = '@@slide/UPDATE_SLIDES_ON_NEXT';
5
4
  export var VALIDATE_SLIDE = '@@slide/VALIDATE';
6
- export var FETCH_NEXT_CONTENT = '@@slide/FETCH_NEXT_CONTENT';
7
- export var ERROR_FETCHING_SLIDE = '@@data/slide/ERROR_FETCHING_SLIDE';
8
5
  // -----------------------------------------------------------------------------
9
- export var storeFirstSlide = function (slide) { return ({
10
- type: STORE_FIRST_SLIDE,
11
- payload: slide
12
- }); };
13
6
  export var updateSlidesOnValidation = function (payload) { return ({
14
7
  type: UPDATE_SLIDES_ON_VALIDATION,
15
8
  payload: payload
@@ -21,7 +14,3 @@ export var updateSlidesOnNext = function (payload) { return ({
21
14
  export var validateSlide = function () { return ({
22
15
  type: VALIDATE_SLIDE
23
16
  }); };
24
- export var errorFetchingSlide = function (error) { return ({
25
- type: ERROR_FETCHING_SLIDE,
26
- payload: error
27
- }); };
@@ -1,12 +1,13 @@
1
- import { StoreFirstSlide, updateSlidesOnValidation, updateSlidesOnNext, validateSlide } from './data/slides';
2
- import { ErrorFetchingSkills, ReceivedSkills } from './data/skills';
1
+ import { updateSlidesOnValidation, updateSlidesOnNext, validateSlide } from './data/slides';
3
2
  import { StoreToken } from './data/token';
4
3
  import { updateFinishedSlides } from './ui/finished-slides';
5
4
  import { navigateBack, navigateTo, NavigateBack, NavigateTo, StartApp } from './ui/navigation';
6
5
  import { updateReviewStatus } from './ui/review-status';
7
6
  import { updateStepItemsOnValidation, updateStepItemsOnNext } from './ui/step-items';
8
- import { ErrorCreatingProgression, ReceiveProgression } from './data/progression';
9
- export declare type Action = NavigateBack | NavigateTo | ReceivedSkills | ErrorFetchingSkills | StartApp | StoreFirstSlide | StoreToken | ErrorCreatingProgression | ReceiveProgression;
7
+ import { ReceivedSlide } from './api/fetch-slide';
8
+ import { ReceiveProgression } from './api/post-progression';
9
+ import { ReceivedSkills } from './api/fetch-skills';
10
+ export declare type Action = NavigateBack | NavigateTo | ReceivedSkills | StartApp | ReceivedSlide | StoreToken | ReceiveProgression;
10
11
  export declare type Dispatchers = {
11
12
  navigateTo: typeof navigateTo;
12
13
  navigateBack: typeof navigateBack;
@@ -16,4 +16,3 @@ export declare type StartApp = {
16
16
  };
17
17
  export declare const navigateTo: (newPath: ViewPath) => NavigateTo;
18
18
  export declare const navigateBack: () => NavigateBack;
19
- export declare const startApp: (options: AppOptions) => StartApp;
@@ -8,7 +8,3 @@ export var navigateTo = function (newPath) { return ({
8
8
  export var navigateBack = function () { return ({
9
9
  type: NAVIGATE_BACK
10
10
  }); };
11
- export var startApp = function (options) { return ({
12
- type: START_APP,
13
- payload: options
14
- }); };
@@ -1,19 +1,13 @@
1
- import { FinishedSlidesState } from '../../reducers/ui/finished-slides';
1
+ import { FinishedSlides, IconValue } from '../../types/common';
2
2
  export declare const UPDATE_STEP_ITEMS_ON_VALIDATION = "@@step-items/UPDATE_STEP_ITEMS_ON_VALIDATION";
3
3
  export declare const UPDATE_STEP_ITEMS_ON_NEXT = "@@step-items/UPDATE_STEP_ITEMS_ON_NEXT";
4
- declare const ICON_VALUES: {
5
- readonly right: "right";
6
- readonly wrong: "wrong";
7
- readonly 'no-answer': "no-answer";
8
- };
9
- export declare type IconValue = keyof typeof ICON_VALUES;
10
4
  declare type UpdateStepItemsOnValidationClickPayload = {
11
5
  stepNumber: number;
12
6
  icon: IconValue;
13
7
  };
14
8
  declare type UpdateStepItemsOnNextClickPayload = {
15
9
  stepNumber: number;
16
- finishedSlides: FinishedSlidesState;
10
+ finishedSlides: FinishedSlides;
17
11
  current: boolean;
18
12
  };
19
13
  export declare type UpdateStepItemsOnValidation = {
@@ -1,11 +1,5 @@
1
- // -----------------------------------------------------------------------------
2
1
  export var UPDATE_STEP_ITEMS_ON_VALIDATION = '@@step-items/UPDATE_STEP_ITEMS_ON_VALIDATION';
3
2
  export var UPDATE_STEP_ITEMS_ON_NEXT = '@@step-items/UPDATE_STEP_ITEMS_ON_NEXT';
4
- var ICON_VALUES = {
5
- right: 'right',
6
- wrong: 'wrong',
7
- 'no-answer': 'no-answer'
8
- };
9
3
  // -----------------------------------------------------------------------------
10
4
  export var updateStepItemsOnValidation = function (payload) { return ({
11
5
  type: UPDATE_STEP_ITEMS_ON_VALIDATION,
@@ -1,27 +1,4 @@
1
1
  import { AnyAction, Store } from 'redux';
2
- import { SkillsState } from './reducers/data/skills';
3
- import { SlidesState } from './reducers/data/slides';
4
- import { TokenState } from './reducers/data/token';
5
- import { NavigationState } from './reducers/ui/navigation';
6
- import { ReviewStatusState } from './reducers/ui/review-status';
7
- import { StepItemsState } from './reducers/ui/step-items';
8
- import { FinishedSlidesState } from './reducers/ui/finished-slides';
9
- import { ProgressionState } from './reducers/data/progression';
10
- declare type DataState = {
11
- isFetching?: boolean;
12
- progression?: ProgressionState;
13
- skills: SkillsState;
14
- slides: SlidesState;
15
- token?: TokenState;
16
- };
17
- export declare type StoreState = {
18
- ui: {
19
- navigation: NavigationState;
20
- stepItems: StepItemsState;
21
- finishedSlides: FinishedSlidesState;
22
- reviewStatus: ReviewStatusState;
23
- };
24
- data: DataState;
25
- };
26
- export default function configureStore(): Store<StoreState, AnyAction>;
27
- export {};
2
+ import { StoreState } from './reducers';
3
+ import { AppOptions } from './types/common';
4
+ export default function configureStore(options: AppOptions): Store<StoreState, AnyAction>;
@@ -1,10 +1,8 @@
1
1
  import { applyMiddleware, compose, createStore } from 'redux';
2
2
  import thunk from 'redux-thunk';
3
3
  import rootReducer from './reducers';
4
- import onStartApp from './middlewares/on-start-app';
5
- import onReceiveProgression from './middlewares/on-receive-progression';
6
- // -----------------------------------------------------------------------------
7
- export default function configureStore() {
4
+ import { getServices } from './services';
5
+ export default function configureStore(options) {
8
6
  var _compose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
9
7
  ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
10
8
  name: 'app-review',
@@ -12,7 +10,8 @@ export default function configureStore() {
12
10
  traceLimit: 25
13
11
  })
14
12
  : compose;
15
- var enhancer = _compose(applyMiddleware(thunk, onStartApp, onReceiveProgression));
13
+ var thunkMiddleware = thunk.withExtraArgument({ services: options.services || getServices() });
14
+ var enhancer = _compose(applyMiddleware(thunkMiddleware));
16
15
  var store = createStore(rootReducer, undefined, enhancer);
17
16
  return store;
18
17
  }
@@ -1,2 +1,2 @@
1
- import { Slide } from '../types/slides';
2
- export declare const slide: Slide;
1
+ import { UISlide } from '../types/slides';
2
+ export declare const slide: UISlide;
package/lib/index.d.ts CHANGED
@@ -4,7 +4,7 @@ declare const AppReview: ({ options }: {
4
4
  }) => JSX.Element | null;
5
5
  declare global {
6
6
  interface Window {
7
- __REDUX_DEVTOOLS_EXTENSION__?: boolean;
7
+ __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: Function;
8
8
  }
9
9
  }
10
10
  export default AppReview;
package/lib/index.js CHANGED
@@ -1,39 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (_) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
1
  import React, { useEffect, useState } from 'react';
38
2
  import { connect, Provider } from 'react-redux';
39
3
  import AppReviewTemplate from '@coorpacademy/components/es/template/app-review';
@@ -41,11 +5,14 @@ import { TemplateContext } from '@coorpacademy/components/es/template/app-review
41
5
  import configureStore from './configure-store';
42
6
  import { congratsProps, correctionPopinProps } from './fixtures/temp-fixture';
43
7
  import { updateSlidesOnNext, updateSlidesOnValidation, validateSlide } from './actions/data/slides';
44
- import { navigateTo, navigateBack, startApp } from './actions/ui/navigation';
8
+ import { navigateTo, navigateBack } from './actions/ui/navigation';
9
+ import { storeToken } from './actions/data/token';
45
10
  import { updateFinishedSlides } from './actions/ui/finished-slides';
46
11
  import { updateReviewStatus } from './actions/ui/review-status';
47
12
  import { updateStepItemsOnValidation, updateStepItemsOnNext } from './actions/ui/step-items';
48
- // -----------------------------------------------------------------------------
13
+ import { fetchSkills } from './actions/api/fetch-skills';
14
+ import { postProgression } from './actions/api/post-progression';
15
+ import { VIEWS } from './common';
49
16
  var mapDispatchToProps = {
50
17
  navigateTo: navigateTo,
51
18
  navigateBack: navigateBack,
@@ -60,7 +27,6 @@ var mapDispatchToProps = {
60
27
  var getCurrentViewName = function (storeState) {
61
28
  return storeState.ui.navigation[storeState.ui.navigation.length - 1];
62
29
  };
63
- // -----------------------------------------------------------------------------
64
30
  var mapStateToSkillsProps = function (state) {
65
31
  if (!state.data.skills) {
66
32
  return null;
@@ -86,7 +52,6 @@ var mapStateToSkillsProps = function (state) {
86
52
  }); })
87
53
  };
88
54
  };
89
- // -----------------------------------------------------------------------------
90
55
  var mapStateToSlidesProps = function (state) {
91
56
  if (!state.data.slides) {
92
57
  return null;
@@ -114,46 +79,51 @@ var mapStateToSlidesProps = function (state) {
114
79
  progression: state.data.progression
115
80
  };
116
81
  };
117
- // -----------------------------------------------------------------------------
118
- var mapStateToProps = function (state) { return ({
119
- viewName: getCurrentViewName(state),
120
- slides: mapStateToSlidesProps(state),
121
- skills: mapStateToSkillsProps(state)
122
- }); };
123
- // Props = StaticProps && Dispatchers
82
+ var mapStateToProps = function (state) {
83
+ return {
84
+ viewName: getCurrentViewName(state),
85
+ slides: mapStateToSlidesProps(state),
86
+ skills: mapStateToSkillsProps(state)
87
+ };
88
+ };
124
89
  var App = connect(mapStateToProps, mapDispatchToProps)(AppReviewTemplate);
125
- // -----------------------------------------------------------------------------
126
90
  var AppReview = function (_a) {
127
91
  var options = _a.options;
128
92
  var _b = useState(null), store = _b[0], setStore = _b[1];
129
- var _c = useState(false), appStarted = _c[0], setAppStarted = _c[1];
130
93
  useEffect(function () {
131
- if (store) {
132
- store.dispatch(startApp(options));
133
- setAppStarted(true);
134
- }
135
- else {
136
- var _configure = function () { return __awaiter(void 0, void 0, void 0, function () {
137
- var newStore;
138
- return __generator(this, function (_a) {
139
- switch (_a.label) {
140
- case 0: return [4 /*yield*/, configureStore()];
141
- case 1:
142
- newStore = _a.sent();
143
- setStore(newStore);
144
- return [2 /*return*/];
145
- }
146
- });
147
- }); };
148
- _configure();
149
- }
94
+ if (store)
95
+ return;
96
+ var newStore = configureStore(options);
97
+ setStore(newStore);
98
+ }, [options, store]);
99
+ useEffect(function () {
100
+ if (store === null)
101
+ return;
102
+ var skillRef = options.skillRef;
103
+ var initialView = skillRef ? VIEWS.slides : VIEWS.skills;
104
+ store.dispatch(navigateTo(initialView));
105
+ }, [options, store]);
106
+ useEffect(function () {
107
+ if (store === null)
108
+ return;
109
+ var token = options.token;
110
+ store.dispatch(storeToken(token));
111
+ }, [options, store]);
112
+ useEffect(function () {
113
+ if (store === null)
114
+ return;
115
+ var skillRef = options.skillRef, token = options.token;
116
+ // ThunkAction is not assignable to parameter of type 'AnyAction'
117
+ // ts problem describre here = https://github.com/reduxjs/redux-thunk/issues/333
118
+ skillRef
119
+ ? store.dispatch(postProgression(skillRef, token))
120
+ : store.dispatch(fetchSkills(token));
150
121
  }, [options, store]);
151
- if (!store || !appStarted)
122
+ if (!store)
152
123
  return null;
153
124
  var values = options.templateContext;
154
125
  return (React.createElement(Provider, { store: store },
155
126
  React.createElement(TemplateContext, { values: values },
156
127
  React.createElement(App, null))));
157
128
  };
158
- // -----------------------------------------------------------------------------
159
129
  export default AppReview;
@@ -1,7 +1,18 @@
1
+ import { ProgressionState } from './progression';
2
+ import { SkillsState } from './skills';
3
+ import { SlidesState } from './slides';
4
+ import { TokenState } from './token';
5
+ export declare type DataState = {
6
+ isFetching?: boolean;
7
+ progression?: ProgressionState;
8
+ skills: SkillsState;
9
+ slides: SlidesState;
10
+ token?: TokenState;
11
+ };
1
12
  declare const _default: import("redux").Reducer<import("redux").CombinedState<{
2
- progression: import("./progression").ProgressionState;
3
- skills: import("../../types/skills").Skills;
4
- slides: import("./slides").SlidesState;
5
- token: import("./token").TokenState;
6
- }>, import("../../actions/data/progression").ReceiveProgression | import("../../actions/data/slides").ValidateSlide | import("../../actions/data/slides").SlidesAction | import("../../actions/data/skills").ReceivedSkills | import("../../actions/data/token").StoreToken>;
13
+ progression: ProgressionState;
14
+ skills: SkillsState;
15
+ slides: SlidesState;
16
+ token: TokenState;
17
+ }>, import("../../actions/data/slides").ValidateSlide | import("../../actions/data/slides").SlidesAction | import("../../actions/api/post-progression").ReceiveProgression | import("../../actions/api/fetch-skills").ReceivedSkills | import("../../actions/data/token").StoreToken>;
7
18
  export default _default;
@@ -1,5 +1,5 @@
1
- import { ReceiveProgression } from '../../actions/data/progression';
2
1
  import { ValidateSlide } from '../../actions/data/slides';
2
+ import { ReceiveProgression } from '../../actions/api/post-progression';
3
3
  export declare type ProgressionState = {
4
4
  _id?: string;
5
5
  state: {
@@ -15,6 +15,5 @@ export declare type ProgressionState = {
15
15
  };
16
16
  slideNumber?: number;
17
17
  } | null;
18
- export declare const initialState: ProgressionState;
19
18
  declare const reducer: (state: ProgressionState | undefined, action: ValidateSlide | ReceiveProgression) => ProgressionState;
20
19
  export default reducer;
@@ -1,13 +1,10 @@
1
1
  import { getOr } from 'lodash/fp';
2
- import { RECEIVE_PROGRESSION } from '../../actions/data/progression';
3
2
  import { VALIDATE_SLIDE } from '../../actions/data/slides';
4
- // -----------------------------------------------------------------------------
5
- export var initialState = null;
6
- // -----------------------------------------------------------------------------
3
+ import { POST_PROGRESSION_SUCCESS } from '../../actions/api/post-progression';
7
4
  var reducer = function (
8
5
  // eslint-disable-next-line default-param-last
9
6
  state, action) {
10
- if (state === void 0) { state = initialState; }
7
+ if (state === void 0) { state = null; }
11
8
  switch (action.type) {
12
9
  case VALIDATE_SLIDE: {
13
10
  var previousSlideNumber = getOr(-1, 'slideNumber', state);
@@ -30,8 +27,8 @@ state, action) {
30
27
  }
31
28
  };
32
29
  }
33
- case RECEIVE_PROGRESSION: {
34
- var progression = action.payload.progression;
30
+ case POST_PROGRESSION_SUCCESS: {
31
+ var progression = action.payload;
35
32
  return progression;
36
33
  }
37
34
  default:
@@ -1,6 +1,5 @@
1
- import { ReceivedSkills } from '../../actions/data/skills';
2
- import { Skills } from '../../types/skills';
3
- export declare type SkillsState = Skills;
4
- export declare const initialState: SkillsState;
5
- declare const reducer: (state: Skills | undefined, action: ReceivedSkills) => Skills;
1
+ import { Skill } from '../../types/common';
2
+ import { ReceivedSkills } from '../../actions/api/fetch-skills';
3
+ export declare type SkillsState = Skill[];
4
+ declare const reducer: (state: SkillsState | undefined, action: ReceivedSkills) => SkillsState;
6
5
  export default reducer;
@@ -1,15 +1,12 @@
1
- import { RECEIVED_SKILLS } from '../../actions/data/skills';
2
- export var initialState = [];
3
- // -----------------------------------------------------------------------------
1
+ import { SKILLS_FETCH_SUCCESS } from '../../actions/api/fetch-skills';
4
2
  // eslint-disable-next-line default-param-last
5
3
  var reducer = function (state, action) {
6
- if (state === void 0) { state = initialState; }
4
+ if (state === void 0) { state = []; }
7
5
  switch (action.type) {
8
- case RECEIVED_SKILLS:
6
+ case SKILLS_FETCH_SUCCESS:
9
7
  return action.payload;
10
8
  default:
11
9
  return state;
12
10
  }
13
11
  };
14
- // -----------------------------------------------------------------------------
15
12
  export default reducer;
@@ -1,4 +1,5 @@
1
- import { Slide, SlidesAction } from '../../actions/data/slides';
1
+ import { SlidesAction } from '../../actions/data/slides';
2
+ import { Slide } from '../../types/common';
2
3
  export declare type SlidesState = {
3
4
  slideNumbers: number[];
4
5
  [key: number]: Slide;
@@ -10,10 +10,10 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import map from 'lodash/fp/map';
13
- import { STORE_FIRST_SLIDE, UPDATE_SLIDES_ON_NEXT, UPDATE_SLIDES_ON_VALIDATION } from '../../actions/data/slides';
13
+ import { UPDATE_SLIDES_ON_NEXT, UPDATE_SLIDES_ON_VALIDATION } from '../../actions/data/slides';
14
14
  import { HIGHEST_INDEX, slideNumbers, TOTAL_SLIDES_STACK } from '../../common';
15
15
  import { slide as qcmSlide } from '../../fixtures/qcm-slide';
16
- // -----------------------------------------------------------------------------
16
+ import { SLIDE_FETCH_SUCCESS } from '../../actions/api/fetch-slide';
17
17
  var getInitialState = function () {
18
18
  var state = {
19
19
  slideNumbers: slideNumbers
@@ -104,7 +104,7 @@ var stateUpdateOnNext = function (state, payload) {
104
104
  var reducer = function (state, action) {
105
105
  if (state === void 0) { state = initialState; }
106
106
  switch (action.type) {
107
- case STORE_FIRST_SLIDE: {
107
+ case SLIDE_FETCH_SUCCESS: {
108
108
  // TODO: An intermediate slide transform is needed here (or in fetchSlide)
109
109
  // const apiSlide = action.payload;
110
110
  // apiSlide adapt to uiSlide
@@ -1,5 +1,4 @@
1
1
  import { StoreToken } from '../../actions/data/token';
2
2
  export declare type TokenState = string | null;
3
- export declare const initialState: TokenState;
4
3
  declare const reducer: (state: TokenState | undefined, action: StoreToken) => TokenState;
5
4
  export default reducer;
@@ -1,10 +1,7 @@
1
1
  import { STORE_TOKEN } from '../../actions/data/token';
2
- // -----------------------------------------------------------------------------
3
- export var initialState = null;
4
- // -----------------------------------------------------------------------------
5
2
  // eslint-disable-next-line default-param-last
6
3
  var reducer = function (state, action) {
7
- if (state === void 0) { state = initialState; }
4
+ if (state === void 0) { state = null; }
8
5
  switch (action.type) {
9
6
  case STORE_TOKEN:
10
7
  return action.payload;
@@ -12,5 +9,4 @@ var reducer = function (state, action) {
12
9
  return state;
13
10
  }
14
11
  };
15
- // -----------------------------------------------------------------------------
16
12
  export default reducer;
@@ -1,7 +1,13 @@
1
+ import { DataState } from './data';
2
+ import { UIState } from './ui';
3
+ export declare type StoreState = {
4
+ ui: UIState;
5
+ data: DataState;
6
+ };
1
7
  declare const _default: import("redux").Reducer<import("redux").CombinedState<{
2
8
  data: import("redux").CombinedState<{
3
9
  progression: import("./data/progression").ProgressionState;
4
- skills: import("../types/skills").Skills;
10
+ skills: import("./data/skills").SkillsState;
5
11
  slides: import("./data/slides").SlidesState;
6
12
  token: import("./data/token").TokenState;
7
13
  }>;
@@ -9,7 +15,7 @@ declare const _default: import("redux").Reducer<import("redux").CombinedState<{
9
15
  finishedSlides: import("./ui/finished-slides").FinishedSlidesState;
10
16
  navigation: import("./ui/navigation").NavigationState;
11
17
  reviewStatus: import("./ui/review-status").ReviewStatusState;
12
- stepItems: import("./ui/step-items").StepItems;
18
+ stepItems: import("./ui/step-items").StepItemsState;
13
19
  }>;
14
- }>, import("../actions/data/progression").ReceiveProgression | import("../actions/data/slides").ValidateSlide | import("../actions/data/slides").SlidesAction | import("../actions/data/skills").ReceivedSkills | import("../actions/data/token").StoreToken | import("../actions/ui/finished-slides").UpdateFinishedSlides | import("../actions/ui/navigation").NavigateTo | import("../actions/ui/navigation").NavigateBack | import("../actions/ui/review-status").UpdateReviewStatus | import("../actions/ui/step-items").StepItemsAction>;
20
+ }>, import("../actions/data/slides").ValidateSlide | import("../actions/data/slides").SlidesAction | import("../actions/api/post-progression").ReceiveProgression | import("../actions/api/fetch-skills").ReceivedSkills | import("../actions/data/token").StoreToken | import("../actions/ui/finished-slides").UpdateFinishedSlides | import("../actions/ui/navigation").NavigateTo | import("../actions/ui/navigation").NavigateBack | import("../actions/ui/review-status").UpdateReviewStatus | import("../actions/ui/step-items").StepItemsAction>;
15
21
  export default _default;
@@ -3,6 +3,5 @@ export declare type FinishedSlidesState = {
3
3
  slideNumbers: number[];
4
4
  [key: number]: true;
5
5
  };
6
- export declare const initialState: FinishedSlidesState;
7
6
  declare const reducer: (state: FinishedSlidesState | undefined, action: UpdateFinishedSlides) => FinishedSlidesState;
8
7
  export default reducer;
@@ -12,11 +12,9 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  import forEach from 'lodash/fp/forEach';
13
13
  import { UPDATE_FINISHED_SLIDES } from '../../actions/ui/finished-slides';
14
14
  import { slideNumbers } from '../../common';
15
- // -----------------------------------------------------------------------------
16
- export var initialState = {
15
+ var initialState = {
17
16
  slideNumbers: slideNumbers
18
17
  };
19
- // -----------------------------------------------------------------------------
20
18
  var _forEach = forEach.convert({
21
19
  cap: false
22
20
  });
@@ -1,7 +1,17 @@
1
+ import { FinishedSlidesState } from './finished-slides';
2
+ import { NavigationState } from './navigation';
3
+ import { ReviewStatusState } from './review-status';
4
+ import { StepItemsState } from './step-items';
5
+ export declare type UIState = {
6
+ navigation: NavigationState;
7
+ stepItems: StepItemsState;
8
+ finishedSlides: FinishedSlidesState;
9
+ reviewStatus: ReviewStatusState;
10
+ };
1
11
  declare const _default: import("redux").Reducer<import("redux").CombinedState<{
2
- finishedSlides: import("./finished-slides").FinishedSlidesState;
3
- navigation: import("./navigation").NavigationState;
4
- reviewStatus: import("./review-status").ReviewStatusState;
5
- stepItems: import("./step-items").StepItems;
12
+ finishedSlides: FinishedSlidesState;
13
+ navigation: NavigationState;
14
+ reviewStatus: ReviewStatusState;
15
+ stepItems: StepItemsState;
6
16
  }>, import("../../actions/ui/finished-slides").UpdateFinishedSlides | import("../../actions/ui/navigation").NavigateTo | import("../../actions/ui/navigation").NavigateBack | import("../../actions/ui/review-status").UpdateReviewStatus | import("../../actions/ui/step-items").StepItemsAction>;
7
17
  export default _default;
@@ -1,5 +1,4 @@
1
1
  import { type NavigateTo, type NavigateBack } from '../../actions/ui/navigation';
2
2
  export declare type NavigationState = Array<'skills' | 'onboarding' | 'slides'>;
3
- export declare const initialState: NavigationState;
4
3
  declare const reducer: (state: NavigationState | undefined, action: NavigateTo | NavigateBack) => NavigationState;
5
4
  export default reducer;
@@ -8,12 +8,10 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
8
8
  return to.concat(ar || Array.prototype.slice.call(from));
9
9
  };
10
10
  import { NAVIGATE_BACK, NAVIGATE_TO } from '../../actions/ui/navigation';
11
- export var initialState = [];
12
- // -----------------------------------------------------------------------------
13
11
  var reducer = function (
14
12
  // eslint-disable-next-line default-param-last
15
13
  state, action) {
16
- if (state === void 0) { state = initialState; }
14
+ if (state === void 0) { state = []; }
17
15
  switch (action.type) {
18
16
  case NAVIGATE_TO: {
19
17
  return __spreadArray(__spreadArray([], state, true), [action.payload], false);
@@ -1,5 +1,4 @@
1
1
  import { UpdateReviewStatus } from '../../actions/ui/review-status';
2
2
  export declare type ReviewStatusState = 'finished' | 'ongoing';
3
- export declare const initialState: ReviewStatusState;
4
3
  declare const reducer: (state: ReviewStatusState | undefined, action: UpdateReviewStatus) => ReviewStatusState;
5
4
  export default reducer;