@coorpacademy/app-review 0.1.2 → 0.1.4

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 (266) hide show
  1. package/es/actions/data/skills.d.ts +13 -0
  2. package/es/actions/data/skills.js +10 -0
  3. package/es/actions/data/slides.d.ts +54 -0
  4. package/es/actions/{slides.js → data/slides.js} +5 -0
  5. package/es/actions/index.d.ts +19 -5
  6. package/es/actions/ui/finished-slides.d.ts +10 -0
  7. package/es/actions/{finished-slides.js → ui/finished-slides.js} +1 -0
  8. package/es/actions/ui/is-fetching.d.ts +10 -0
  9. package/es/actions/ui/is-fetching.js +6 -0
  10. package/{lib/actions → es/actions/ui}/navigation.d.ts +2 -2
  11. package/es/actions/ui/review-status.d.ts +7 -0
  12. package/{lib/actions → es/actions/ui}/step-items.d.ts +17 -1
  13. package/es/actions/{step-items.js → ui/step-items.js} +5 -0
  14. package/es/common/index.d.ts +1 -1
  15. package/es/common/index.js +1 -1
  16. package/es/configure-store.d.ts +34 -4
  17. package/es/configure-store.js +1 -2
  18. package/es/fixtures/qcm-slide.js +7 -3
  19. package/es/fixtures/temp-fixture.d.ts +1 -1
  20. package/es/index.js +54 -36
  21. package/es/index.test.js +1 -1
  22. package/es/middlewares/on-start-app.d.ts +2 -3
  23. package/es/middlewares/on-start-app.js +18 -17
  24. package/es/reducers/data/index.d.ts +7 -0
  25. package/es/reducers/data/index.js +11 -0
  26. package/es/reducers/data/progression.d.ts +14 -0
  27. package/es/reducers/data/progression.js +78 -0
  28. package/es/reducers/data/skills.d.ts +6 -0
  29. package/es/reducers/{courses.js → data/skills.js} +3 -4
  30. package/es/reducers/data/slides.d.ts +8 -0
  31. package/es/reducers/{slides.js → data/slides.js} +4 -3
  32. package/es/reducers/data/token.d.ts +5 -0
  33. package/es/reducers/data/token.js +15 -0
  34. package/es/reducers/index.d.ts +11 -8
  35. package/es/reducers/index.js +3 -16
  36. package/es/reducers/ui/finished-slides.d.ts +8 -0
  37. package/es/reducers/{finished-slides.js → ui/finished-slides.js} +9 -6
  38. package/es/reducers/ui/index.d.ts +7 -0
  39. package/es/reducers/ui/index.js +11 -0
  40. package/es/reducers/ui/navigation.d.ts +5 -0
  41. package/es/reducers/{navigation.js → ui/navigation.js} +4 -7
  42. package/es/reducers/ui/review-status.d.ts +5 -0
  43. package/es/reducers/{review-status.js → ui/review-status.js} +3 -2
  44. package/es/reducers/ui/step-items.d.ts +14 -0
  45. package/es/reducers/{step-items.js → ui/step-items.js} +7 -7
  46. package/es/services/fetch-skills.d.ts +8 -0
  47. package/es/services/fetch-skills.js +23 -0
  48. package/es/services/fetch-skills.mock.d.ts +3 -0
  49. package/es/services/fetch-skills.mock.js +17 -0
  50. package/es/services/fetch-skills.test.js +22 -0
  51. package/es/services/tools/fetch-responses.d.ts +7 -0
  52. package/es/services/tools/fetch.mocks.d.ts +8 -0
  53. package/es/services/{fetch.mocks.js → tools/fetch.mocks.js} +1 -0
  54. package/es/types/common.d.ts +12 -0
  55. package/es/types/skills.d.ts +7 -0
  56. package/es/types/slides.d.ts +3 -21
  57. package/es/types/views/skills.d.ts +24 -0
  58. package/{lib/types/views.d.ts → es/types/views/slides.d.ts} +7 -11
  59. package/lib/actions/data/skills.d.ts +13 -0
  60. package/lib/actions/data/skills.js +10 -0
  61. package/lib/actions/data/slides.d.ts +54 -0
  62. package/lib/actions/{slides.js → data/slides.js} +5 -0
  63. package/lib/actions/index.d.ts +19 -5
  64. package/lib/actions/ui/finished-slides.d.ts +10 -0
  65. package/lib/actions/{finished-slides.js → ui/finished-slides.js} +1 -0
  66. package/lib/actions/ui/is-fetching.d.ts +10 -0
  67. package/lib/actions/ui/is-fetching.js +6 -0
  68. package/{es/actions → lib/actions/ui}/navigation.d.ts +2 -2
  69. package/lib/actions/ui/review-status.d.ts +7 -0
  70. package/{es/actions → lib/actions/ui}/step-items.d.ts +17 -1
  71. package/lib/actions/{step-items.js → ui/step-items.js} +5 -0
  72. package/lib/common/index.d.ts +1 -1
  73. package/lib/common/index.js +1 -1
  74. package/lib/configure-store.d.ts +34 -4
  75. package/lib/configure-store.js +1 -2
  76. package/lib/fixtures/qcm-slide.js +7 -3
  77. package/lib/fixtures/temp-fixture.d.ts +1 -1
  78. package/lib/index.js +57 -37
  79. package/lib/index.test.js +1 -1
  80. package/lib/middlewares/on-start-app.d.ts +2 -3
  81. package/lib/middlewares/on-start-app.js +18 -17
  82. package/lib/reducers/data/index.d.ts +7 -0
  83. package/lib/reducers/data/index.js +11 -0
  84. package/lib/reducers/data/progression.d.ts +14 -0
  85. package/lib/reducers/data/progression.js +79 -0
  86. package/lib/reducers/data/skills.d.ts +6 -0
  87. package/lib/reducers/data/skills.js +15 -0
  88. package/lib/reducers/data/slides.d.ts +8 -0
  89. package/lib/reducers/{slides.js → data/slides.js} +4 -3
  90. package/lib/reducers/data/token.d.ts +5 -0
  91. package/lib/reducers/data/token.js +16 -0
  92. package/lib/reducers/index.d.ts +11 -8
  93. package/lib/reducers/index.js +3 -16
  94. package/lib/reducers/ui/finished-slides.d.ts +8 -0
  95. package/lib/reducers/{finished-slides.js → ui/finished-slides.js} +9 -6
  96. package/lib/reducers/ui/index.d.ts +7 -0
  97. package/lib/reducers/ui/index.js +11 -0
  98. package/lib/reducers/ui/navigation.d.ts +5 -0
  99. package/lib/reducers/{courses.js → ui/navigation.js} +9 -3
  100. package/lib/reducers/ui/review-status.d.ts +5 -0
  101. package/lib/reducers/{review-status.js → ui/review-status.js} +3 -2
  102. package/lib/reducers/ui/step-items.d.ts +14 -0
  103. package/lib/reducers/{step-items.js → ui/step-items.js} +7 -7
  104. package/lib/services/fetch-skills.d.ts +8 -0
  105. package/lib/services/{fetch-demo.js → fetch-skills.js} +28 -35
  106. package/lib/services/fetch-skills.mock.d.ts +3 -0
  107. package/lib/services/fetch-skills.mock.js +17 -0
  108. package/lib/services/{fetch-demo.test.js → fetch-skills.test.js} +31 -12
  109. package/lib/services/tools/fetch-responses.d.ts +7 -0
  110. package/lib/services/tools/fetch.mocks.d.ts +8 -0
  111. package/lib/services/{fetch.mocks.js → tools/fetch.mocks.js} +1 -0
  112. package/lib/types/common.d.ts +12 -0
  113. package/lib/types/skills.d.ts +7 -0
  114. package/lib/types/slides.d.ts +3 -21
  115. package/lib/types/views/skills.d.ts +24 -0
  116. package/{es/types/views.d.ts → lib/types/views/slides.d.ts} +7 -11
  117. package/package.json +3 -3
  118. package/src/actions/data/skills.ts +24 -0
  119. package/src/actions/data/slides.ts +89 -0
  120. package/src/actions/index.ts +27 -5
  121. package/src/actions/{finished-slides.ts → ui/finished-slides.ts} +5 -5
  122. package/src/actions/ui/is-fetching.ts +19 -0
  123. package/src/actions/{navigation.ts → ui/navigation.ts} +2 -2
  124. package/src/actions/{review-status.ts → ui/review-status.ts} +4 -4
  125. package/src/actions/{step-items.ts → ui/step-items.ts} +22 -4
  126. package/src/common/index.ts +2 -2
  127. package/src/configure-store.ts +40 -8
  128. package/src/fixtures/qcm-slide.ts +7 -3
  129. package/src/fixtures/temp-fixture.ts +1 -1
  130. package/src/index.test.tsx +1 -1
  131. package/src/index.tsx +69 -44
  132. package/src/middlewares/on-start-app.ts +23 -26
  133. package/src/reducers/data/index.ts +13 -0
  134. package/src/reducers/data/progression.ts +106 -0
  135. package/src/reducers/data/skills.ts +21 -0
  136. package/src/reducers/{slides.ts → data/slides.ts} +24 -21
  137. package/src/reducers/{review-status.ts → data/token.ts} +8 -6
  138. package/src/reducers/index.ts +3 -17
  139. package/src/reducers/{finished-slides.ts → ui/finished-slides.ts} +24 -14
  140. package/src/reducers/ui/index.ts +13 -0
  141. package/src/reducers/ui/navigation.ts +36 -0
  142. package/src/reducers/ui/review-status.ts +26 -0
  143. package/src/reducers/{step-items.ts → ui/step-items.ts} +34 -21
  144. package/src/services/fetch-skills.mock.ts +21 -0
  145. package/src/services/fetch-skills.test.ts +32 -0
  146. package/src/services/fetch-skills.ts +40 -0
  147. package/src/services/{fetch-responses.ts → tools/fetch-responses.ts} +3 -16
  148. package/src/services/{fetch.mocks.ts → tools/fetch.mocks.ts} +10 -10
  149. package/src/types/common.ts +15 -0
  150. package/src/types/globals.d.ts +2 -0
  151. package/src/types/skills.ts +8 -0
  152. package/src/types/slides.ts +3 -26
  153. package/src/types/views/skills.ts +27 -0
  154. package/src/types/{views.tsx → views/slides.ts} +7 -11
  155. package/es/actions/courses.d.ts +0 -6
  156. package/es/actions/courses.js +0 -5
  157. package/es/actions/data/is-fetching.d.ts +0 -5
  158. package/es/actions/data/is-fetching.js +0 -4
  159. package/es/actions/data/validate-slide.d.ts +0 -5
  160. package/es/actions/data/validate-slide.js +0 -6
  161. package/es/actions/finished-slides.d.ts +0 -7
  162. package/es/actions/review-status.d.ts +0 -7
  163. package/es/actions/slides.d.ts +0 -20
  164. package/es/reducers/courses.d.ts +0 -5
  165. package/es/reducers/data.d.ts +0 -7
  166. package/es/reducers/data.js +0 -76
  167. package/es/reducers/finished-slides.d.ts +0 -6
  168. package/es/reducers/navigation.d.ts +0 -8
  169. package/es/reducers/review-status.d.ts +0 -5
  170. package/es/reducers/slides.d.ts +0 -6
  171. package/es/reducers/step-items.d.ts +0 -6
  172. package/es/reducers/token.d.ts +0 -5
  173. package/es/reducers/token.js +0 -8
  174. package/es/services/fetch-demo.d.ts +0 -11
  175. package/es/services/fetch-demo.js +0 -26
  176. package/es/services/fetch-demo.test.js +0 -12
  177. package/es/services/fetch-responses.d.ts +0 -19
  178. package/es/services/fetch.mocks.d.ts +0 -9
  179. package/es/types/data/index.d.ts +0 -14
  180. package/es/types/dispatchers.d.ts +0 -17
  181. package/es/types/finished-slides.d.ts +0 -9
  182. package/es/types/review-status.d.ts +0 -1
  183. package/es/types/states.d.ts +0 -6
  184. package/es/types/step-items.d.ts +0 -26
  185. package/es/types/step-items.js +0 -5
  186. package/es/types/store-state.d.ts +0 -12
  187. package/es/types/utils.d.ts +0 -3
  188. package/es/types/views.js +0 -1
  189. package/lib/actions/courses.d.ts +0 -6
  190. package/lib/actions/courses.js +0 -5
  191. package/lib/actions/data/is-fetching.d.ts +0 -5
  192. package/lib/actions/data/is-fetching.js +0 -4
  193. package/lib/actions/data/validate-slide.d.ts +0 -5
  194. package/lib/actions/data/validate-slide.js +0 -6
  195. package/lib/actions/finished-slides.d.ts +0 -7
  196. package/lib/actions/review-status.d.ts +0 -7
  197. package/lib/actions/slides.d.ts +0 -20
  198. package/lib/reducers/courses.d.ts +0 -5
  199. package/lib/reducers/data.d.ts +0 -7
  200. package/lib/reducers/data.js +0 -77
  201. package/lib/reducers/finished-slides.d.ts +0 -6
  202. package/lib/reducers/navigation.d.ts +0 -8
  203. package/lib/reducers/navigation.js +0 -36
  204. package/lib/reducers/review-status.d.ts +0 -5
  205. package/lib/reducers/slides.d.ts +0 -6
  206. package/lib/reducers/step-items.d.ts +0 -6
  207. package/lib/reducers/token.d.ts +0 -5
  208. package/lib/reducers/token.js +0 -8
  209. package/lib/services/fetch-demo.d.ts +0 -11
  210. package/lib/services/fetch-demo.test.d.ts +0 -1
  211. package/lib/services/fetch-responses.d.ts +0 -19
  212. package/lib/services/fetch.mocks.d.ts +0 -9
  213. package/lib/types/data/index.d.ts +0 -14
  214. package/lib/types/data/index.js +0 -1
  215. package/lib/types/dispatchers.d.ts +0 -17
  216. package/lib/types/dispatchers.js +0 -1
  217. package/lib/types/finished-slides.d.ts +0 -9
  218. package/lib/types/finished-slides.js +0 -1
  219. package/lib/types/review-status.d.ts +0 -1
  220. package/lib/types/review-status.js +0 -1
  221. package/lib/types/states.d.ts +0 -6
  222. package/lib/types/states.js +0 -1
  223. package/lib/types/step-items.d.ts +0 -26
  224. package/lib/types/step-items.js +0 -5
  225. package/lib/types/store-state.d.ts +0 -12
  226. package/lib/types/store-state.js +0 -1
  227. package/lib/types/utils.d.ts +0 -3
  228. package/lib/types/utils.js +0 -1
  229. package/lib/types/views.js +0 -1
  230. package/src/actions/courses.ts +0 -11
  231. package/src/actions/data/is-fetching.ts +0 -12
  232. package/src/actions/data/validate-slide.ts +0 -15
  233. package/src/actions/slides.ts +0 -45
  234. package/src/reducers/courses.ts +0 -23
  235. package/src/reducers/data.ts +0 -88
  236. package/src/reducers/navigation.ts +0 -36
  237. package/src/reducers/token.ts +0 -17
  238. package/src/services/fetch-demo.test.ts +0 -16
  239. package/src/services/fetch-demo.ts +0 -57
  240. package/src/types/data/index.ts +0 -16
  241. package/src/types/dispatchers.ts +0 -18
  242. package/src/types/finished-slides.ts +0 -9
  243. package/src/types/review-status.ts +0 -1
  244. package/src/types/states.ts +0 -6
  245. package/src/types/step-items.ts +0 -31
  246. package/src/types/store-state.ts +0 -20
  247. package/src/types/utils.ts +0 -4
  248. /package/es/actions/{token.d.ts → data/token.d.ts} +0 -0
  249. /package/es/actions/{token.js → data/token.js} +0 -0
  250. /package/es/actions/{navigation.js → ui/navigation.js} +0 -0
  251. /package/es/actions/{review-status.js → ui/review-status.js} +0 -0
  252. /package/es/services/{fetch-demo.test.d.ts → fetch-skills.test.d.ts} +0 -0
  253. /package/es/services/{fetch-responses.js → tools/fetch-responses.js} +0 -0
  254. /package/es/types/{data/index.js → skills.js} +0 -0
  255. /package/es/types/{dispatchers.js → views/skills.js} +0 -0
  256. /package/es/types/{finished-slides.js → views/slides.js} +0 -0
  257. /package/lib/actions/{token.d.ts → data/token.d.ts} +0 -0
  258. /package/lib/actions/{token.js → data/token.js} +0 -0
  259. /package/lib/actions/{navigation.js → ui/navigation.js} +0 -0
  260. /package/lib/actions/{review-status.js → ui/review-status.js} +0 -0
  261. /package/{es/types/review-status.js → lib/services/fetch-skills.test.d.ts} +0 -0
  262. /package/lib/services/{fetch-responses.js → tools/fetch-responses.js} +0 -0
  263. /package/{es/types/states.js → lib/types/skills.js} +0 -0
  264. /package/{es/types/store-state.js → lib/types/views/skills.js} +0 -0
  265. /package/{es/types/utils.js → lib/types/views/slides.js} +0 -0
  266. /package/src/actions/{token.ts → data/token.ts} +0 -0
@@ -1,5 +1,19 @@
1
- import { ReceivedCourse } from './courses';
2
- import { NavigateBack, NavigateTo, StartApp } from './navigation';
3
- import { StoreToken } from './token';
4
- import { StoreFirstSlide } from './slides';
5
- export declare type Action = NavigateBack | NavigateTo | ReceivedCourse | StartApp | StoreFirstSlide | StoreToken;
1
+ import { StoreFirstSlide, updateSlidesOnValidation, updateSlidesOnNext, validateSlide } from './data/slides';
2
+ import { ErrorFetchingSkills, ReceivedSkills } from './data/skills';
3
+ import { StoreToken } from './data/token';
4
+ import { updateFinishedSlides } from './ui/finished-slides';
5
+ import { navigateBack, navigateTo, NavigateBack, NavigateTo, StartApp } from './ui/navigation';
6
+ import { updateReviewStatus } from './ui/review-status';
7
+ import { updateStepItemsOnValidation, updateStepItemsOnNext } from './ui/step-items';
8
+ export declare type Action = NavigateBack | NavigateTo | ReceivedSkills | ErrorFetchingSkills | StartApp | StoreFirstSlide | StoreToken;
9
+ export declare type Dispatchers = {
10
+ navigateTo: typeof navigateTo;
11
+ navigateBack: typeof navigateBack;
12
+ validateSlide: typeof validateSlide;
13
+ updateSlidesOnValidation: typeof updateSlidesOnValidation;
14
+ updateSlidesOnNext: typeof updateSlidesOnNext;
15
+ updateReviewStatus: typeof updateReviewStatus;
16
+ updateStepItemsOnValidation: typeof updateStepItemsOnValidation;
17
+ updateStepItemsOnNext: typeof updateStepItemsOnNext;
18
+ updateFinishedSlides: typeof updateFinishedSlides;
19
+ };
@@ -0,0 +1,10 @@
1
+ export declare type FinishedSlide = {
2
+ slideNumber: number;
3
+ value: true;
4
+ };
5
+ export declare const UPDATE_FINISHED_SLIDES = "@@finished-slides/UPDATE_FINISHED_SLIDES";
6
+ export declare type UpdateFinishedSlides = {
7
+ type: typeof UPDATE_FINISHED_SLIDES;
8
+ payload: FinishedSlide;
9
+ };
10
+ export declare const updateFinishedSlides: (payload: FinishedSlide) => UpdateFinishedSlides;
@@ -1,3 +1,4 @@
1
+ // Stores only successful slides
1
2
  // -----------------------------------------------------------------------------
2
3
  export var UPDATE_FINISHED_SLIDES = '@@finished-slides/UPDATE_FINISHED_SLIDES';
3
4
  // -----------------------------------------------------------------------------
@@ -0,0 +1,10 @@
1
+ export declare const START_FETCHING = "@@ui/START_FETCHING";
2
+ export declare const STOP_FETCHING = "@@ui/STOP_FETCHING";
3
+ export declare type StartFetching = {
4
+ type: typeof START_FETCHING;
5
+ };
6
+ export declare type StopFetching = {
7
+ type: typeof STOP_FETCHING;
8
+ };
9
+ export declare const startFetching: () => StartFetching;
10
+ export declare const stopFetching: () => StopFetching;
@@ -0,0 +1,6 @@
1
+ // -----------------------------------------------------------------------------
2
+ export var START_FETCHING = '@@ui/START_FETCHING';
3
+ export var STOP_FETCHING = '@@ui/STOP_FETCHING';
4
+ // -----------------------------------------------------------------------------
5
+ export var startFetching = function () { return ({ type: START_FETCHING }); };
6
+ export var stopFetching = function () { return ({ type: STOP_FETCHING }); };
@@ -1,8 +1,8 @@
1
- import { AppOptions } from '../types/common';
1
+ import { AppOptions } from '../../types/common';
2
2
  export declare const NAVIGATE_TO = "@@navigation/NAVIGATE_TO";
3
3
  export declare const NAVIGATE_BACK = "@@navigation/NAVIGATE_BACK";
4
4
  export declare const START_APP = "@@navigation/START_APP";
5
- export declare type ViewPath = 'home' | 'onboarding' | 'slides';
5
+ export declare type ViewPath = 'skills' | 'onboarding' | 'slides';
6
6
  export declare type NavigateTo = {
7
7
  type: '@@navigation/NAVIGATE_TO';
8
8
  payload: ViewPath;
@@ -0,0 +1,7 @@
1
+ export declare const UPDATE_REVIEW_STATUS = "@@review-status/UPDATE_REVIEW_STATUS";
2
+ export declare type FinishedStatus = 'finished';
3
+ export declare type UpdateReviewStatus = {
4
+ type: typeof UPDATE_REVIEW_STATUS;
5
+ payload: FinishedStatus;
6
+ };
7
+ export declare const updateReviewStatus: (payload: FinishedStatus) => UpdateReviewStatus;
@@ -1,6 +1,21 @@
1
- import { UpdateStepItemsOnNextClickPayload, UpdateStepItemsOnValidationClickPayload } from '../types/step-items';
1
+ import { FinishedSlidesState } from '../../reducers/ui/finished-slides';
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
+ declare type UpdateStepItemsOnValidationClickPayload = {
11
+ stepNumber: number;
12
+ icon: IconValue;
13
+ };
14
+ declare type UpdateStepItemsOnNextClickPayload = {
15
+ stepNumber: number;
16
+ finishedSlides: FinishedSlidesState;
17
+ current: boolean;
18
+ };
4
19
  export declare type UpdateStepItemsOnValidation = {
5
20
  type: typeof UPDATE_STEP_ITEMS_ON_VALIDATION;
6
21
  payload: UpdateStepItemsOnValidationClickPayload;
@@ -12,3 +27,4 @@ export declare type UpdateStepItemsOnNext = {
12
27
  export declare type StepItemsAction = UpdateStepItemsOnValidation | UpdateStepItemsOnNext;
13
28
  export declare const updateStepItemsOnValidation: (payload: UpdateStepItemsOnValidationClickPayload) => UpdateStepItemsOnValidation;
14
29
  export declare const updateStepItemsOnNext: (payload: UpdateStepItemsOnNextClickPayload) => UpdateStepItemsOnNext;
30
+ export {};
@@ -1,6 +1,11 @@
1
1
  // -----------------------------------------------------------------------------
2
2
  export var UPDATE_STEP_ITEMS_ON_VALIDATION = '@@step-items/UPDATE_STEP_ITEMS_ON_VALIDATION';
3
3
  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
+ };
4
9
  // -----------------------------------------------------------------------------
5
10
  export var updateStepItemsOnValidation = function (payload) { return ({
6
11
  type: UPDATE_STEP_ITEMS_ON_VALIDATION,
@@ -1,7 +1,7 @@
1
1
  export declare const TOTAL_SLIDES_STACK = 5;
2
2
  export declare const HIGHEST_INDEX: number;
3
3
  export declare const VIEWS: {
4
- readonly home: 'home';
4
+ readonly skills: 'skills';
5
5
  readonly onboarding: 'onboarding';
6
6
  readonly slides: 'slides';
7
7
  };
@@ -1,7 +1,7 @@
1
1
  export var TOTAL_SLIDES_STACK = 5;
2
2
  export var HIGHEST_INDEX = TOTAL_SLIDES_STACK - 1;
3
3
  export var VIEWS = {
4
- home: 'home',
4
+ skills: 'skills',
5
5
  onboarding: 'onboarding',
6
6
  slides: 'slides'
7
7
  };
@@ -1,5 +1,35 @@
1
- import { AnyAction, EmptyObject, Store } from 'redux';
2
- import { StoreState } from './types/store-state';
3
- export default function configureStore(): Store<EmptyObject & StoreState, AnyAction> & {
4
- dispatch: {};
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 { AnswerUI } from './types/slides';
10
+ declare type DataState = {
11
+ isFetching?: boolean;
12
+ progression?: {
13
+ slideNumber: number;
14
+ isCorrect?: boolean;
15
+ exitNode?: 'successExitNode' | 'failExitNode';
16
+ nextSlide?: {
17
+ questionText?: string;
18
+ answerUI?: AnswerUI;
19
+ };
20
+ } | null;
21
+ skills: SkillsState;
22
+ slides: SlidesState;
23
+ token?: TokenState;
5
24
  };
25
+ export declare type StoreState = {
26
+ ui: {
27
+ navigation: NavigationState;
28
+ stepItems: StepItemsState;
29
+ finishedSlides: FinishedSlidesState;
30
+ reviewStatus: ReviewStatusState;
31
+ };
32
+ data: DataState;
33
+ };
34
+ export default function configureStore(): Store<StoreState, AnyAction>;
35
+ export {};
@@ -2,7 +2,6 @@ import { applyMiddleware, compose, createStore } from 'redux';
2
2
  import thunk from 'redux-thunk';
3
3
  import rootReducer from './reducers';
4
4
  import onStartApp from './middlewares/on-start-app';
5
- var preloadedState = undefined;
6
5
  // -----------------------------------------------------------------------------
7
6
  export default function configureStore() {
8
7
  var _compose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
@@ -13,6 +12,6 @@ export default function configureStore() {
13
12
  })
14
13
  : compose;
15
14
  var enhancer = _compose(applyMiddleware(thunk, onStartApp));
16
- var store = createStore(rootReducer, preloadedState, enhancer);
15
+ var store = createStore(rootReducer, undefined, enhancer);
17
16
  return store;
18
17
  }
@@ -1,3 +1,4 @@
1
+ import noop from 'lodash/fp/noop';
1
2
  export var slide = {
2
3
  questionText: 'QCM',
3
4
  answerUI: {
@@ -9,19 +10,22 @@ export var slide = {
9
10
  selected: false,
10
11
  title: 'choix1',
11
12
  help: '(help choix1)',
12
- ariaLabel: '__ariaLabel1'
13
+ ariaLabel: '__ariaLabel1',
14
+ onClick: noop
13
15
  },
14
16
  {
15
17
  selected: false,
16
18
  title: 'choix2',
17
19
  help: '(help choix2)',
18
- ariaLabel: '__ariaLabel2'
20
+ ariaLabel: '__ariaLabel2',
21
+ onClick: noop
19
22
  },
20
23
  {
21
24
  selected: false,
22
25
  title: 'choix3',
23
26
  help: '(help choix3)',
24
- ariaLabel: '__ariaLabel3'
27
+ ariaLabel: '__ariaLabel3',
28
+ onClick: noop
25
29
  }
26
30
  ]
27
31
  }
@@ -1,3 +1,3 @@
1
- import { SlidesViewProps } from '../types/views';
1
+ import { SlidesViewProps } from '../types/views/slides';
2
2
  export declare const correctionPopinProps: SlidesViewProps['correctionPopinProps'];
3
3
  export declare const congratsProps: SlidesViewProps['congratsProps'];
package/lib/index.js CHANGED
@@ -38,14 +38,12 @@ import React, { useEffect, useState } from 'react';
38
38
  import { connect, Provider } from 'react-redux';
39
39
  import AppReviewTemplate from '@coorpacademy/components/es/template/app-review';
40
40
  import configureStore from './configure-store';
41
- import { navigateTo, navigateBack, startApp } from './actions/navigation';
42
- import { updateSlidesOnNext, updateSlidesOnValidation } from './actions/slides';
43
- import { getCurrentViewName } from './reducers/navigation';
44
41
  import { congratsProps, correctionPopinProps } from './fixtures/temp-fixture';
45
- import { updateFinishedSlides } from './actions/finished-slides';
46
- import { updateReviewStatus } from './actions/review-status';
47
- import { updateStepItemsOnValidation, updateStepItemsOnNext } from './actions/step-items';
48
- import { validateSlide } from './actions/data/validate-slide';
42
+ import { updateSlidesOnNext, updateSlidesOnValidation, validateSlide } from './actions/data/slides';
43
+ import { navigateTo, navigateBack, startApp } from './actions/ui/navigation';
44
+ import { updateFinishedSlides } from './actions/ui/finished-slides';
45
+ import { updateReviewStatus } from './actions/ui/review-status';
46
+ import { updateStepItemsOnValidation, updateStepItemsOnNext } from './actions/ui/step-items';
49
47
  // -----------------------------------------------------------------------------
50
48
  var mapDispatchToProps = {
51
49
  navigateTo: navigateTo,
@@ -58,33 +56,55 @@ var mapDispatchToProps = {
58
56
  updateStepItemsOnNext: updateStepItemsOnNext,
59
57
  updateFinishedSlides: updateFinishedSlides
60
58
  };
61
- var mapStateToProps = function (state) {
62
- return {
63
- viewName: getCurrentViewName(state),
64
- slides: {
65
- headerProps: {
66
- mode: '__revision_mode',
67
- skillName: '__agility',
68
- onQuitClick: function () {
69
- // eslint-disable-next-line no-console
70
- console.log('onQuitClick');
71
- },
72
- 'aria-label': 'aria-header-wrapper',
73
- closeButtonAriaLabel: 'aria-close-button'
74
- },
75
- slides: state.ui.slides,
76
- validate: {
77
- label: '__validate'
78
- },
79
- finishedSlides: state.ui.finishedSlides,
80
- stepItems: state.ui.stepItems,
81
- reviewStatus: state.ui.reviewStatus,
82
- correctionPopinProps: correctionPopinProps,
83
- congratsProps: congratsProps,
84
- slideValidationResult: state.data.slideValidationResult
85
- }
86
- };
59
+ var getCurrentViewName = function (storeState) {
60
+ return storeState.ui.navigation[storeState.ui.navigation.length - 1];
87
61
  };
62
+ var mapStateToSkillsProps = function (state) { return ({
63
+ title: '@todo title',
64
+ titleNoSkills: '@todo titleNoSkills',
65
+ textNoSkills: '@todo textNoSkills',
66
+ iconSkillAriaLabel: '@todo iconSkillAriaLabel',
67
+ isLoading: false,
68
+ isLoadingAriaLabel: '@todo loading',
69
+ listSkills: state.data.skills.map(function (skill) { return ({
70
+ 'aria-label': '',
71
+ isCustom: skill.custom,
72
+ skillTitle: skill.name,
73
+ skillAriaLabel: '@todo skill aria label',
74
+ buttonLabel: '@todo button',
75
+ buttonAriaLabel: '@todo button aria label',
76
+ reviseLabel: '@todo revise',
77
+ reviseAriaLabel: '@todo revise aria label',
78
+ // eslint-disable-next-line no-console
79
+ onClick: function () { return console.log('@todo plug dispatcher select skill'); }
80
+ }); })
81
+ }); };
82
+ var mapStateToProps = function (state) { return ({
83
+ viewName: getCurrentViewName(state),
84
+ slides: {
85
+ headerProps: {
86
+ mode: '__revision_mode',
87
+ skillName: '__agility',
88
+ onQuitClick: function () {
89
+ // eslint-disable-next-line no-console
90
+ console.log('onQuitClick');
91
+ },
92
+ 'aria-label': 'aria-header-wrapper',
93
+ closeButtonAriaLabel: 'aria-close-button'
94
+ },
95
+ slides: state.data.slides,
96
+ validate: {
97
+ label: '__validate'
98
+ },
99
+ finishedSlides: state.ui.finishedSlides,
100
+ stepItems: state.ui.stepItems,
101
+ reviewStatus: state.ui.reviewStatus,
102
+ correctionPopinProps: correctionPopinProps,
103
+ congratsProps: congratsProps,
104
+ progression: state.data.progression
105
+ },
106
+ skills: mapStateToSkillsProps(state)
107
+ }); };
88
108
  // Props = StaticProps && Dispatchers
89
109
  var App = connect(mapStateToProps, mapDispatchToProps)(AppReviewTemplate);
90
110
  // -----------------------------------------------------------------------------
@@ -99,13 +119,13 @@ var AppReview = function (_a) {
99
119
  }
100
120
  else {
101
121
  var _configure = function () { return __awaiter(void 0, void 0, void 0, function () {
102
- var _store;
122
+ var newStore;
103
123
  return __generator(this, function (_a) {
104
124
  switch (_a.label) {
105
125
  case 0: return [4 /*yield*/, configureStore()];
106
126
  case 1:
107
- _store = _a.sent();
108
- setStore(_store);
127
+ newStore = _a.sent();
128
+ setStore(newStore);
109
129
  return [2 /*return*/];
110
130
  }
111
131
  });
@@ -114,7 +134,7 @@ var AppReview = function (_a) {
114
134
  }
115
135
  }, [options, store]);
116
136
  if (!store || !appStarted)
117
- return null;
137
+ return React.createElement("div", null);
118
138
  return (React.createElement(Provider, { store: store },
119
139
  React.createElement(App, null)));
120
140
  };
package/lib/index.test.js CHANGED
@@ -148,7 +148,7 @@ test('should validate all the slides (all correct scenario)', function (t) { ret
148
148
  _a.sent();
149
149
  wrapper = container.querySelector('[data-name="slides-revision-container"]');
150
150
  t.truthy(wrapper);
151
- stackedSlidesContainer = wrapper.querySelector('[data-name="stacked-slides-container"]');
151
+ stackedSlidesContainer = wrapper === null || wrapper === void 0 ? void 0 : wrapper.querySelector('[data-name="stacked-slides-container"]');
152
152
  t.truthy(stackedSlidesContainer);
153
153
  return [4 /*yield*/, clickAllSlides(t, container)];
154
154
  case 2:
@@ -1,6 +1,5 @@
1
- import type { Middleware } from 'redux';
1
+ import type { Middleware, Store } from 'redux';
2
2
  import { Dispatch } from 'redux';
3
3
  import { Action } from '../actions';
4
- import { StoreState } from '../types/store-state';
5
- declare const onStartApp: Middleware<{}, StoreState, Dispatch<Action>>;
4
+ declare const onStartApp: Middleware<{}, Store, Dispatch<Action>>;
6
5
  export default onStartApp;
@@ -1,30 +1,31 @@
1
- // import fetchCourse from '../services/fetch-demo';
2
1
  import { VIEWS } from '../common';
3
- import { navigateTo, START_APP } from '../actions/navigation';
4
- import { storeToken } from '../actions/token';
5
- import { storeFirstSlide } from '../actions/slides';
2
+ import { storeToken } from '../actions/data/token';
3
+ import { receivedSkills, errorFetchingSkills } from '../actions/data/skills';
4
+ import { storeFirstSlide } from '../actions/data/slides';
5
+ import { navigateTo, START_APP } from '../actions/ui/navigation';
6
+ // eslint-disable-next-line import/no-named-as-default
7
+ import fetchSkills from '../services/fetch-skills';
6
8
  var onStartApp = function (_a) {
7
9
  var dispatch = _a.dispatch;
8
10
  return function (next) {
9
11
  return function (action) {
10
12
  if (action.type === START_APP) {
11
- // eslint-disable-next-line no-warning-comments
12
- // TODO: fetchProgression + fetchSlide à partir de la progression passée dans les options de l'app
13
- var slide = action.payload.slide;
13
+ var _a = action.payload, slide = _a.slide, token = _a.token;
14
+ dispatch(storeToken(token));
14
15
  if (slide) {
15
- var token = action.payload.token;
16
- dispatch(storeToken(token));
17
16
  dispatch(storeFirstSlide(slide));
18
17
  }
19
- var initialView = slide ? VIEWS.slides : VIEWS.onboarding;
18
+ else {
19
+ fetchSkills(token)
20
+ .then(function (skills) {
21
+ return dispatch(receivedSkills(skills));
22
+ })
23
+ .catch(function (err) {
24
+ return dispatch(errorFetchingSkills(err));
25
+ });
26
+ }
27
+ var initialView = slide ? VIEWS.slides : VIEWS.skills;
20
28
  dispatch(navigateTo(initialView));
21
- // --------------
22
- // demo service
23
- // const language = 'fr';
24
- // const universalRef = 'dis_xxx15';
25
- // fetchCourse(token, language, universalRef).then(course => {
26
- // dispatch(receivedCourse(course));
27
- // });
28
29
  }
29
30
  return next(action);
30
31
  };
@@ -0,0 +1,7 @@
1
+ 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/slides").ValidateSlide | import("../../actions/data/slides").SlidesAction | import("../../actions/data/skills").ReceivedSkills | import("../../actions/data/token").StoreToken>;
7
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { combineReducers } from 'redux';
2
+ import progression from './progression';
3
+ import skills from './skills';
4
+ import slides from './slides';
5
+ import token from './token';
6
+ export default combineReducers({
7
+ progression: progression,
8
+ skills: skills,
9
+ slides: slides,
10
+ token: token
11
+ });
@@ -0,0 +1,14 @@
1
+ import { ValidateSlide } from '../../actions/data/slides';
2
+ import { AnswerUI } from '../../types/slides';
3
+ export declare type ProgressionState = {
4
+ slideNumber: number;
5
+ isCorrect?: boolean;
6
+ exitNode?: 'successExitNode' | 'failExitNode';
7
+ nextSlide?: {
8
+ questionText?: string;
9
+ answerUI?: AnswerUI;
10
+ };
11
+ } | null;
12
+ export declare const initialState: ProgressionState;
13
+ declare const reducer: (state: ProgressionState | undefined, action: ValidateSlide) => ProgressionState;
14
+ export default reducer;
@@ -0,0 +1,79 @@
1
+ import { getOr, noop } from 'lodash/fp';
2
+ import { VALIDATE_SLIDE } from '../../actions/data/slides';
3
+ // -----------------------------------------------------------------------------
4
+ export var initialState = null;
5
+ // -----------------------------------------------------------------------------
6
+ var reducer = function (
7
+ // eslint-disable-next-line default-param-last
8
+ state, action) {
9
+ if (state === void 0) { state = initialState; }
10
+ switch (action.type) {
11
+ case VALIDATE_SLIDE: {
12
+ var previousSlideNumber = getOr(-1, 'slideNumber', state);
13
+ // hard coded for now
14
+ return {
15
+ // virtual field
16
+ slideNumber: previousSlideNumber + 1,
17
+ isCorrect: true,
18
+ // exitNode
19
+ // TODO: create another action, to retrieve the next slide
20
+ // nextSlide should be corrected to nextContent, when this new action is created
21
+ // ex: nextContent: {ref: "sli_E1n2i2sBo", type: "slide"}
22
+ // the middleware should trigger a next content request once the result is
23
+ // received && update the state accordingly,
24
+ //
25
+ nextSlide: {
26
+ questionText: 'Test',
27
+ answerUI: {
28
+ model: {
29
+ answers: [
30
+ {
31
+ title: 'There is no need for a password',
32
+ // TODO: onClick of each answer should use a dispatcher to
33
+ // update selected answers (in order to use them on validation)
34
+ // in each retrieval, the answers of answerUI need to be augmented
35
+ // for the onClick prop to achieve this.
36
+ onClick: noop,
37
+ selected: false,
38
+ help: 'help'
39
+ },
40
+ {
41
+ title: 'Lorem ipsum',
42
+ onClick: noop,
43
+ selected: false,
44
+ help: 'help'
45
+ },
46
+ {
47
+ title: 'Lorem',
48
+ onClick: noop,
49
+ selected: true,
50
+ order: 1,
51
+ help: 'help'
52
+ },
53
+ {
54
+ title: 'You need to have a password',
55
+ onClick: noop,
56
+ selected: false,
57
+ help: 'help'
58
+ },
59
+ {
60
+ title: 'Pouet',
61
+ onClick: noop,
62
+ selected: true,
63
+ order: 0,
64
+ help: 'help'
65
+ }
66
+ ],
67
+ type: 'qcmDrag'
68
+ },
69
+ help: 'Help text will appear here'
70
+ }
71
+ }
72
+ };
73
+ }
74
+ default:
75
+ return state;
76
+ }
77
+ };
78
+ // -----------------------------------------------------------------------------
79
+ export default reducer;
@@ -0,0 +1,6 @@
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;
6
+ export default reducer;
@@ -0,0 +1,15 @@
1
+ import { RECEIVED_SKILLS } from '../../actions/data/skills';
2
+ export var initialState = [];
3
+ // -----------------------------------------------------------------------------
4
+ // eslint-disable-next-line default-param-last
5
+ var reducer = function (state, action) {
6
+ if (state === void 0) { state = initialState; }
7
+ switch (action.type) {
8
+ case RECEIVED_SKILLS:
9
+ return action.payload;
10
+ default:
11
+ return state;
12
+ }
13
+ };
14
+ // -----------------------------------------------------------------------------
15
+ export default reducer;
@@ -0,0 +1,8 @@
1
+ import { Slide, SlidesAction } from '../../actions/data/slides';
2
+ export declare type SlidesState = {
3
+ slideNumbers: number[];
4
+ [key: number]: Slide;
5
+ };
6
+ export declare const initialState: SlidesState;
7
+ declare const reducer: (state: SlidesState | undefined, action: SlidesAction) => SlidesState;
8
+ export default reducer;
@@ -10,8 +10,9 @@ 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/slides';
14
- import { HIGHEST_INDEX, slideNumbers, TOTAL_SLIDES_STACK } from '../common';
13
+ import { STORE_FIRST_SLIDE, UPDATE_SLIDES_ON_NEXT, UPDATE_SLIDES_ON_VALIDATION } from '../../actions/data/slides';
14
+ import { HIGHEST_INDEX, slideNumbers, TOTAL_SLIDES_STACK } from '../../common';
15
+ // -----------------------------------------------------------------------------
15
16
  var getInitialState = function () {
16
17
  var state = {
17
18
  slideNumbers: slideNumbers
@@ -51,7 +52,7 @@ var stateUpdateOnValidation = function (state, payload) {
51
52
  if (index === slideNumber) {
52
53
  // only one slide remaining, presets the next value
53
54
  if (numberOfFinishedSlides === HIGHEST_INDEX) {
54
- _state[index] = __assign(__assign({}, previousValue), { nextSlide: nextSlide, position: newSlideContent.position, validationResult: newSlideContent.validationResult });
55
+ _state[index] = __assign(__assign({}, previousValue), { nextSlide: nextSlide, position: newSlideContent.position, isCorrect: newSlideContent.isCorrect });
55
56
  }
56
57
  else
57
58
  _state[slideNumber] = __assign(__assign({}, previousValue), newSlideContent);
@@ -0,0 +1,5 @@
1
+ import { StoreToken } from '../../actions/data/token';
2
+ export declare type TokenState = string | null;
3
+ export declare const initialState: TokenState;
4
+ declare const reducer: (state: TokenState | undefined, action: StoreToken) => TokenState;
5
+ export default reducer;
@@ -0,0 +1,16 @@
1
+ import { STORE_TOKEN } from '../../actions/data/token';
2
+ // -----------------------------------------------------------------------------
3
+ export var initialState = null;
4
+ // -----------------------------------------------------------------------------
5
+ // eslint-disable-next-line default-param-last
6
+ var reducer = function (state, action) {
7
+ if (state === void 0) { state = initialState; }
8
+ switch (action.type) {
9
+ case STORE_TOKEN:
10
+ return action.payload;
11
+ default:
12
+ return state;
13
+ }
14
+ };
15
+ // -----------------------------------------------------------------------------
16
+ export default reducer;