@coorpacademy/app-review 0.26.18 → 0.27.0

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.
@@ -18,4 +18,4 @@ export declare type PostAnswerSuccessAction = {
18
18
  };
19
19
  payload: ProgressionFromAPI;
20
20
  };
21
- export declare const postAnswer: (dispatch: Dispatch, getState: () => StoreState, { services }: ThunkOptions) => Promise<void>;
21
+ export declare const postAnswer: (dispatch: Dispatch, getState: () => StoreState, { services, onEndProgression }: ThunkOptions) => Promise<void>;
@@ -6,7 +6,7 @@ import { fetchStartRank } from './fetch-rank';
6
6
  export const POST_ANSWER_REQUEST = '@@answer/POST_REQUEST';
7
7
  export const POST_ANSWER_SUCCESS = '@@answer/POST_SUCCESS';
8
8
  export const POST_ANSWER_FAILURE = '@@answer/POST_FAILURE';
9
- export const postAnswer = async (dispatch, getState, { services }) => {
9
+ export const postAnswer = async (dispatch, getState, { services, onEndProgression }) => {
10
10
  const state = getState();
11
11
  const currentSlideRef = get(['ui', 'currentSlideRef'], state);
12
12
  const token = get(['data', 'token'], state);
@@ -29,6 +29,7 @@ export const postAnswer = async (dispatch, getState, { services }) => {
29
29
  await dispatch(fetchStartRank);
30
30
  }
31
31
  else {
32
+ onEndProgression(updatedProgression);
32
33
  await dispatch(fetchCorrection);
33
34
  }
34
35
  }
@@ -12,4 +12,4 @@ export declare type ReceivedProgression = {
12
12
  type: typeof POST_PROGRESSION_SUCCESS;
13
13
  payload: ProgressionFromAPI;
14
14
  };
15
- export declare const postProgression: (skillRef: string, testingSlideRef?: string) => (dispatch: Dispatch, getState: () => StoreState, { services }: ThunkOptions) => Promise<void>;
15
+ export declare const postProgression: (skillRef: string, testingSlideRef?: string) => (dispatch: Dispatch, getState: () => StoreState, { services, onStartProgression }: ThunkOptions) => Promise<void>;
@@ -5,7 +5,7 @@ import { fetchSkill } from './fetch-skill';
5
5
  export const POST_PROGRESSION_REQUEST = '@@progression/POST_REQUEST';
6
6
  export const POST_PROGRESSION_SUCCESS = '@@progression/POST_SUCCESS';
7
7
  export const POST_PROGRESSION_FAILURE = '@@progression/POST_FAILURE';
8
- export const postProgression = (skillRef, testingSlideRef) => async (dispatch, getState, { services }) => {
8
+ export const postProgression = (skillRef, testingSlideRef) => async (dispatch, getState, { services, onStartProgression }) => {
9
9
  const state = getState();
10
10
  const token = get(['data', 'token'], state);
11
11
  const action = buildTask({
@@ -18,6 +18,7 @@ export const postProgression = (skillRef, testingSlideRef) => async (dispatch, g
18
18
  if (response.type === POST_PROGRESSION_SUCCESS) {
19
19
  const progression = response.payload;
20
20
  const slideRef = progression.state.nextContent.ref;
21
+ onStartProgression(progression);
21
22
  await dispatch(fetchSlide(slideRef));
22
23
  await dispatch(fetchSkill(skillRef));
23
24
  }
@@ -1,6 +1,7 @@
1
1
  import { applyMiddleware, compose, createStore } from 'redux';
2
2
  import thunk from 'redux-thunk';
3
3
  import { getServices } from '@coorpacademy/review-services';
4
+ import { identity } from 'lodash/fp';
4
5
  import rootReducer from './reducers';
5
6
  export default function configureStore(options) {
6
7
  const _compose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
@@ -14,7 +15,9 @@ export default function configureStore(options) {
14
15
  const thunkOptions = {
15
16
  services: options.services || getServices(locale),
16
17
  callbackOnViewChanged: options.callbackOnViewChanged,
17
- appendVideoOptions: options.appendVideoOptions
18
+ appendVideoOptions: options.appendVideoOptions,
19
+ onStartProgression: options.onStartProgression || identity,
20
+ onEndProgression: options.onEndProgression || identity
18
21
  };
19
22
  const thunkMiddleware = thunk.withExtraArgument(thunkOptions);
20
23
  const enhancer = _compose(applyMiddleware(thunkMiddleware));
package/es/index.js CHANGED
@@ -32,7 +32,7 @@ const storeTokenAndCreateProgression = async (store, options) => {
32
32
  };
33
33
  const AppReview = ({ options }) => {
34
34
  const [store, setStore] = useState(null);
35
- const { translate, onQuitClick, skin, backgroundImage } = options;
35
+ const { translate, onQuitClick, onStartProgression, onEndProgression, skin, backgroundImage } = options;
36
36
  useEffect(() => {
37
37
  const newStore = configureStore(options);
38
38
  setStore(newStore);
@@ -43,6 +43,6 @@ const AppReview = ({ options }) => {
43
43
  if (!store)
44
44
  return null;
45
45
  return (React.createElement(Provider, { store: store },
46
- React.createElement(ConnectedApp, { onQuitClick: onQuitClick, translate: translate, skin: skin, backgroundImage: backgroundImage })));
46
+ React.createElement(ConnectedApp, { onQuitClick: onQuitClick, onStartProgression: onStartProgression, onEndProgression: onEndProgression, translate: translate, skin: skin, backgroundImage: backgroundImage })));
47
47
  };
48
48
  export default AppReview;
@@ -1,5 +1,5 @@
1
1
  import { Media } from '@coorpacademy/components/es/molecule/questions/types';
2
- import type { Services, VideoMedia } from '@coorpacademy/review-services';
2
+ import type { ProgressionFromAPI, Services, VideoMedia } from '@coorpacademy/review-services';
3
3
  export declare type WithRequired<T, K extends keyof T> = T & {
4
4
  [P in K]-?: T[P];
5
5
  };
@@ -21,6 +21,8 @@ export declare type VideoPropsForPlayer = {
21
21
  export declare type ConnectedOptions = {
22
22
  translate: Translate;
23
23
  onQuitClick: () => void;
24
+ onStartProgression?: (progression: ProgressionFromAPI) => void;
25
+ onEndProgression?: (progression: ProgressionFromAPI) => void;
24
26
  skin?: Skin;
25
27
  backgroundImage?: number;
26
28
  };
@@ -34,6 +36,8 @@ export declare type AppOptions = ConnectedOptions & {
34
36
  appendVideoOptions: (media: VideoMedia) => Promise<VideoPropsForPlayer>;
35
37
  };
36
38
  export declare type ThunkOptions = Pick<AppOptions, 'callbackOnViewChanged' | 'appendVideoOptions'> & {
39
+ onStartProgression: (progression: ProgressionFromAPI) => void;
40
+ onEndProgression: (progression: ProgressionFromAPI) => void;
37
41
  services: Services;
38
42
  };
39
43
  export declare type Options = {
@@ -18,4 +18,4 @@ export declare type PostAnswerSuccessAction = {
18
18
  };
19
19
  payload: ProgressionFromAPI;
20
20
  };
21
- export declare const postAnswer: (dispatch: Dispatch, getState: () => StoreState, { services }: ThunkOptions) => Promise<void>;
21
+ export declare const postAnswer: (dispatch: Dispatch, getState: () => StoreState, { services, onEndProgression }: ThunkOptions) => Promise<void>;
@@ -12,7 +12,7 @@ const fetch_rank_1 = require("./fetch-rank");
12
12
  exports.POST_ANSWER_REQUEST = '@@answer/POST_REQUEST';
13
13
  exports.POST_ANSWER_SUCCESS = '@@answer/POST_SUCCESS';
14
14
  exports.POST_ANSWER_FAILURE = '@@answer/POST_FAILURE';
15
- const postAnswer = async (dispatch, getState, { services }) => {
15
+ const postAnswer = async (dispatch, getState, { services, onEndProgression }) => {
16
16
  const state = getState();
17
17
  const currentSlideRef = (0, get_1.default)(['ui', 'currentSlideRef'], state);
18
18
  const token = (0, get_1.default)(['data', 'token'], state);
@@ -35,6 +35,7 @@ const postAnswer = async (dispatch, getState, { services }) => {
35
35
  await dispatch(fetch_rank_1.fetchStartRank);
36
36
  }
37
37
  else {
38
+ onEndProgression(updatedProgression);
38
39
  await dispatch(fetch_correction_1.fetchCorrection);
39
40
  }
40
41
  }
@@ -12,4 +12,4 @@ export declare type ReceivedProgression = {
12
12
  type: typeof POST_PROGRESSION_SUCCESS;
13
13
  payload: ProgressionFromAPI;
14
14
  };
15
- export declare const postProgression: (skillRef: string, testingSlideRef?: string) => (dispatch: Dispatch, getState: () => StoreState, { services }: ThunkOptions) => Promise<void>;
15
+ export declare const postProgression: (skillRef: string, testingSlideRef?: string) => (dispatch: Dispatch, getState: () => StoreState, { services, onStartProgression }: ThunkOptions) => Promise<void>;
@@ -11,7 +11,7 @@ const fetch_skill_1 = require("./fetch-skill");
11
11
  exports.POST_PROGRESSION_REQUEST = '@@progression/POST_REQUEST';
12
12
  exports.POST_PROGRESSION_SUCCESS = '@@progression/POST_SUCCESS';
13
13
  exports.POST_PROGRESSION_FAILURE = '@@progression/POST_FAILURE';
14
- const postProgression = (skillRef, testingSlideRef) => async (dispatch, getState, { services }) => {
14
+ const postProgression = (skillRef, testingSlideRef) => async (dispatch, getState, { services, onStartProgression }) => {
15
15
  const state = getState();
16
16
  const token = (0, get_1.default)(['data', 'token'], state);
17
17
  const action = (0, redux_task_1.default)({
@@ -24,6 +24,7 @@ const postProgression = (skillRef, testingSlideRef) => async (dispatch, getState
24
24
  if (response.type === exports.POST_PROGRESSION_SUCCESS) {
25
25
  const progression = response.payload;
26
26
  const slideRef = progression.state.nextContent.ref;
27
+ onStartProgression(progression);
27
28
  await dispatch((0, fetch_slide_1.fetchSlide)(slideRef));
28
29
  await dispatch((0, fetch_skill_1.fetchSkill)(skillRef));
29
30
  }
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const redux_1 = require("redux");
7
7
  const redux_thunk_1 = __importDefault(require("redux-thunk"));
8
8
  const review_services_1 = require("@coorpacademy/review-services");
9
+ const fp_1 = require("lodash/fp");
9
10
  const reducers_1 = __importDefault(require("./reducers"));
10
11
  function configureStore(options) {
11
12
  const _compose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
@@ -19,7 +20,9 @@ function configureStore(options) {
19
20
  const thunkOptions = {
20
21
  services: options.services || (0, review_services_1.getServices)(locale),
21
22
  callbackOnViewChanged: options.callbackOnViewChanged,
22
- appendVideoOptions: options.appendVideoOptions
23
+ appendVideoOptions: options.appendVideoOptions,
24
+ onStartProgression: options.onStartProgression || fp_1.identity,
25
+ onEndProgression: options.onEndProgression || fp_1.identity
23
26
  };
24
27
  const thunkMiddleware = redux_thunk_1.default.withExtraArgument(thunkOptions);
25
28
  const enhancer = _compose((0, redux_1.applyMiddleware)(thunkMiddleware));
package/lib/index.js CHANGED
@@ -60,7 +60,7 @@ const storeTokenAndCreateProgression = async (store, options) => {
60
60
  };
61
61
  const AppReview = ({ options }) => {
62
62
  const [store, setStore] = (0, react_1.useState)(null);
63
- const { translate, onQuitClick, skin, backgroundImage } = options;
63
+ const { translate, onQuitClick, onStartProgression, onEndProgression, skin, backgroundImage } = options;
64
64
  (0, react_1.useEffect)(() => {
65
65
  const newStore = (0, configure_store_1.default)(options);
66
66
  setStore(newStore);
@@ -71,6 +71,6 @@ const AppReview = ({ options }) => {
71
71
  if (!store)
72
72
  return null;
73
73
  return (react_1.default.createElement(react_redux_1.Provider, { store: store },
74
- react_1.default.createElement(ConnectedApp, { onQuitClick: onQuitClick, translate: translate, skin: skin, backgroundImage: backgroundImage })));
74
+ react_1.default.createElement(ConnectedApp, { onQuitClick: onQuitClick, onStartProgression: onStartProgression, onEndProgression: onEndProgression, translate: translate, skin: skin, backgroundImage: backgroundImage })));
75
75
  };
76
76
  exports.default = AppReview;
@@ -1,5 +1,5 @@
1
1
  import { Media } from '@coorpacademy/components/es/molecule/questions/types';
2
- import type { Services, VideoMedia } from '@coorpacademy/review-services';
2
+ import type { ProgressionFromAPI, Services, VideoMedia } from '@coorpacademy/review-services';
3
3
  export declare type WithRequired<T, K extends keyof T> = T & {
4
4
  [P in K]-?: T[P];
5
5
  };
@@ -21,6 +21,8 @@ export declare type VideoPropsForPlayer = {
21
21
  export declare type ConnectedOptions = {
22
22
  translate: Translate;
23
23
  onQuitClick: () => void;
24
+ onStartProgression?: (progression: ProgressionFromAPI) => void;
25
+ onEndProgression?: (progression: ProgressionFromAPI) => void;
24
26
  skin?: Skin;
25
27
  backgroundImage?: number;
26
28
  };
@@ -34,6 +36,8 @@ export declare type AppOptions = ConnectedOptions & {
34
36
  appendVideoOptions: (media: VideoMedia) => Promise<VideoPropsForPlayer>;
35
37
  };
36
38
  export declare type ThunkOptions = Pick<AppOptions, 'callbackOnViewChanged' | 'appendVideoOptions'> & {
39
+ onStartProgression: (progression: ProgressionFromAPI) => void;
40
+ onEndProgression: (progression: ProgressionFromAPI) => void;
37
41
  services: Services;
38
42
  };
39
43
  export declare type Options = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coorpacademy/app-review",
3
- "version": "0.26.18",
3
+ "version": "0.27.0",
4
4
  "description": "",
5
5
  "engines": {
6
6
  "node": ">=16.15.0"
@@ -35,7 +35,7 @@
35
35
  "main": "lib/index.js",
36
36
  "module": "es/index.js",
37
37
  "dependencies": {
38
- "@coorpacademy/components": "11.14.18",
38
+ "@coorpacademy/components": "11.14.19",
39
39
  "@coorpacademy/progression-engine": "11.7.0",
40
40
  "@coorpacademy/redux-task": "1.1.6",
41
41
  "@coorpacademy/review-services": "1.6.1",
@@ -74,5 +74,5 @@
74
74
  "webpack-cli": "^4.10.0",
75
75
  "webpack-dev-server": "^4.11.1"
76
76
  },
77
- "gitHead": "543ee5489cfda21e57572eaa8028c918be00f463"
77
+ "gitHead": "ed1c80cf3abdea233c75f1f7db357e3b933053b3"
78
78
  }