@magmamath/students-features 1.8.6-rc.4 → 1.8.6

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 (41) hide show
  1. package/dist/commonjs/features/profile/Profile.js +11 -1
  2. package/dist/commonjs/features/profile/Profile.js.map +1 -1
  3. package/dist/commonjs/features/profile/components/modals/JoinClassModal.js +10 -6
  4. package/dist/commonjs/features/profile/components/modals/JoinClassModal.js.map +1 -1
  5. package/dist/commonjs/features/profile/model/ProfileJoinClassModel.js +9 -10
  6. package/dist/commonjs/features/profile/model/ProfileJoinClassModel.js.map +1 -1
  7. package/dist/commonjs/features/profile/model/ProfileModel.js +18 -5
  8. package/dist/commonjs/features/profile/model/ProfileModel.js.map +1 -1
  9. package/dist/module/features/profile/Profile.js +11 -1
  10. package/dist/module/features/profile/Profile.js.map +1 -1
  11. package/dist/module/features/profile/components/modals/JoinClassModal.js +11 -7
  12. package/dist/module/features/profile/components/modals/JoinClassModal.js.map +1 -1
  13. package/dist/module/features/profile/model/ProfileJoinClassModel.js +10 -11
  14. package/dist/module/features/profile/model/ProfileJoinClassModel.js.map +1 -1
  15. package/dist/module/features/profile/model/ProfileModel.js +18 -5
  16. package/dist/module/features/profile/model/ProfileModel.js.map +1 -1
  17. package/dist/typescript/commonjs/features/profile/Profile.d.ts +3 -2
  18. package/dist/typescript/commonjs/features/profile/Profile.d.ts.map +1 -1
  19. package/dist/typescript/commonjs/features/profile/components/modals/JoinClassModal.d.ts.map +1 -1
  20. package/dist/typescript/commonjs/features/profile/model/ProfileJoinClassModel.d.ts +1 -1
  21. package/dist/typescript/commonjs/features/profile/model/ProfileJoinClassModel.d.ts.map +1 -1
  22. package/dist/typescript/commonjs/features/profile/model/ProfileModel.d.ts +6 -8
  23. package/dist/typescript/commonjs/features/profile/model/ProfileModel.d.ts.map +1 -1
  24. package/dist/typescript/commonjs/features/profile/shared/profile.types.d.ts +4 -0
  25. package/dist/typescript/commonjs/features/profile/shared/profile.types.d.ts.map +1 -1
  26. package/dist/typescript/module/features/profile/Profile.d.ts +3 -2
  27. package/dist/typescript/module/features/profile/Profile.d.ts.map +1 -1
  28. package/dist/typescript/module/features/profile/components/modals/JoinClassModal.d.ts.map +1 -1
  29. package/dist/typescript/module/features/profile/model/ProfileJoinClassModel.d.ts +1 -1
  30. package/dist/typescript/module/features/profile/model/ProfileJoinClassModel.d.ts.map +1 -1
  31. package/dist/typescript/module/features/profile/model/ProfileModel.d.ts +6 -8
  32. package/dist/typescript/module/features/profile/model/ProfileModel.d.ts.map +1 -1
  33. package/dist/typescript/module/features/profile/shared/profile.types.d.ts +4 -0
  34. package/dist/typescript/module/features/profile/shared/profile.types.d.ts.map +1 -1
  35. package/package.json +1 -1
  36. package/src/features/profile/Profile.tsx +7 -3
  37. package/src/features/profile/__tests__/ProfileModel.test.ts +11 -6
  38. package/src/features/profile/components/modals/JoinClassModal.tsx +11 -7
  39. package/src/features/profile/model/ProfileJoinClassModel.ts +10 -11
  40. package/src/features/profile/model/ProfileModel.ts +19 -10
  41. package/src/features/profile/shared/profile.types.ts +5 -0
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Profile = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _reactNative = require("react-native");
9
+ var _effectorReact = require("effector-react");
9
10
  var _reactNativeUi = require("@magmamath/react-native-ui");
10
11
  var _commonConstants = require("../../shared/common.constants.js");
11
12
  var _ProfileActions = require("./components/actions/ProfileActions.js");
@@ -18,8 +19,13 @@ var _jsxRuntime = require("react/jsx-runtime");
18
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
20
  const TWO_COLUMN_BREAKPOINT = 768;
20
21
  const COLUMN_MAX_WIDTH = 560;
21
- const Profile = props => {
22
+ const Profile = ({
23
+ user,
24
+ settings,
25
+ ...props
26
+ }) => {
22
27
  const {
28
+ model,
23
29
  showSolveMode,
24
30
  versionInfo
25
31
  } = props;
@@ -27,6 +33,10 @@ const Profile = props => {
27
33
  width
28
34
  } = (0, _reactNative.useWindowDimensions)();
29
35
  const isTwoColumn = width >= TWO_COLUMN_BREAKPOINT;
36
+ (0, _effectorReact.useGate)(model.gate, {
37
+ user,
38
+ settings
39
+ });
30
40
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProfileContext.ProfileProvider, {
31
41
  value: props,
32
42
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeUi","_commonConstants","_ProfileActions","_AccountInfoCard","_LanguageSettingsCard","_PreferencesCard","_TextSettingsCard","_ProfileContext","_jsxRuntime","e","__esModule","default","TWO_COLUMN_BREAKPOINT","COLUMN_MAX_WIDTH","Profile","props","showSolveMode","versionInfo","width","useWindowDimensions","isTwoColumn","jsx","ProfileProvider","value","children","jsxs","ScrollView","style","styles","container","contentContainerStyle","scroll","scrollEnabled","isWeb","showsVerticalScrollIndicator","View","columns","columnsStacked","column","columnWide","columnStacked","LanguageSettingsCard","TextSettingsCard","PreferencesCard","AccountInfoCard","ProfileActions","version","exports","StyleSheet","create","backgroundColor","COLORS","NEUTRAL_3","flex","flexGrow","gap","SPACING","paddingHorizontal","paddingVertical","flexDirection","justifyContent","alignItems","maxWidth","alignSelf","marginTop"],"sourceRoot":"../../../../src","sources":["features/profile/Profile.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_effectorReact","_reactNativeUi","_commonConstants","_ProfileActions","_AccountInfoCard","_LanguageSettingsCard","_PreferencesCard","_TextSettingsCard","_ProfileContext","_jsxRuntime","e","__esModule","default","TWO_COLUMN_BREAKPOINT","COLUMN_MAX_WIDTH","Profile","user","settings","props","model","showSolveMode","versionInfo","width","useWindowDimensions","isTwoColumn","useGate","gate","jsx","ProfileProvider","value","children","jsxs","ScrollView","style","styles","container","contentContainerStyle","scroll","scrollEnabled","isWeb","showsVerticalScrollIndicator","View","columns","columnsStacked","column","columnWide","columnStacked","LanguageSettingsCard","TextSettingsCard","PreferencesCard","AccountInfoCard","ProfileActions","version","exports","StyleSheet","create","backgroundColor","COLORS","NEUTRAL_3","flex","flexGrow","gap","SPACING","paddingHorizontal","paddingVertical","flexDirection","justifyContent","alignItems","maxWidth","alignSelf","marginTop"],"sourceRoot":"../../../../src","sources":["features/profile/Profile.tsx"],"mappings":"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","ignoreList":[]}
@@ -59,15 +59,19 @@ const JoinClassModal = ({
59
59
  value: code,
60
60
  setValue: setCode
61
61
  });
62
- (0, _react.useEffect)(() => {
63
- const subscription = model.api.joinClassFx.finally.watch(() => closeModal());
64
- return () => subscription.unsubscribe();
65
- }, [model, closeModal]);
62
+ const canSubmit = isComplete && !isPending;
66
63
  const closeAndReset = () => {
67
64
  model.joinClass.reset();
68
65
  closeModal();
69
66
  };
70
- const submit = () => model.joinClass.submit();
67
+ const submit = async () => {
68
+ if (!canSubmit) return;
69
+ try {
70
+ await model.joinClass.submitFx();
71
+ } finally {
72
+ closeModal();
73
+ }
74
+ };
71
75
  const keyboardHeight = (0, _useKeyboardOffset.useKeyboardOffset)();
72
76
  const liftStyle = (0, _react.useMemo)(() => ({
73
77
  transform: [{
@@ -134,7 +138,7 @@ const JoinClassModal = ({
134
138
  colorScheme: _reactNativeUi.ButtonColor.ORANGE,
135
139
  size: _reactNativeUi.ButtonSize.LARGE,
136
140
  onPress: submit,
137
- disabled: !isComplete || isPending,
141
+ disabled: !canSubmit,
138
142
  isLoading: isPending,
139
143
  testID: _studentsQa.TEST_IDS.JOIN_CLASS_SUBMIT_BUTTON,
140
144
  style: buttonStyle,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_effectorReact","_reactNativeConfirmationCodeField","_reactNativeUi","_studentsQa","_i18n","_useKeyboardOffset","_commonConstants","_profileConstants","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CODE_PLACEHOLDER","MAX_MODAL_WIDTH","SCREEN_MARGIN","CELL_GAP","SPACING","MODAL_H_PADDING","CELL_ASPECT","CELL_RADIUS_RATIO","CELL_FONT_RATIO","MAX_CELL_RADIUS","CLOSE_ICON_SIZE","KEYBOARD_LIFT_RATIO","JoinClassModal","modal","closeModal","params","useText","model","width","useWindowDimensions","code","isComplete","isPending","useUnit","joinClass","$code","$isComplete","api","joinClassFx","pending","modalWidth","Math","min","cellSize","CLASS_CODE_LENGTH","cellRadius","cellFontSize","setCode","value","toUpperCase","cellProps","getCellOnLayoutHandler","useClearByFocusCell","setValue","useEffect","subscription","finally","watch","unsubscribe","closeAndReset","reset","submit","keyboardHeight","useKeyboardOffset","liftStyle","useMemo","transform","translateY","Animated","multiply","jsx","View","style","children","BaseModal","onClose","closeButton","Button","variant","ButtonVariant","TERTIARY","icon","CrossIcon","size","color","COLORS","NEUTRAL_7","onPress","testID","TEST_IDS","JOIN_CLASS_CLOSE_BUTTON","container","styles","header","content","CodeField","nativeID","onChangeText","cellCount","rootStyle","codeRoot","textInputStyle","codeInput","autoFocus","autoComplete","textContentType","keyboardType","returnKeyType","onSubmitEditing","JOIN_CLASS_INPUT","renderCell","index","symbol","isFocused","isPlaceholder","cell","borderRadius","onLayout","Text","cellText","fontSize","cellPlaceholder","Cursor","footer","ReanimatedButton","PRIMARY","colorScheme","ButtonColor","ORANGE","ButtonSize","LARGE","disabled","isLoading","JOIN_CLASS_SUBMIT_BUTTON","buttonStyle","exports","StyleSheet","create","gap","paddingHorizontal","flexDirection","justifyContent","borderWidth","isWeb","outlineStyle","alignItems","aspectRatio","backgroundColor","NEUTRAL_1","borderColor","NEUTRAL_5","NEUTRAL_9","fontFamily","FONT_FAMILY","buenosAiresSemiBold","textAlign","text","textTransform"],"sourceRoot":"../../../../../../src","sources":["features/profile/components/modals/JoinClassModal.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_effectorReact","_reactNativeConfirmationCodeField","_reactNativeUi","_studentsQa","_i18n","_useKeyboardOffset","_commonConstants","_profileConstants","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CODE_PLACEHOLDER","MAX_MODAL_WIDTH","SCREEN_MARGIN","CELL_GAP","SPACING","MODAL_H_PADDING","CELL_ASPECT","CELL_RADIUS_RATIO","CELL_FONT_RATIO","MAX_CELL_RADIUS","CLOSE_ICON_SIZE","KEYBOARD_LIFT_RATIO","JoinClassModal","modal","closeModal","params","useText","model","width","useWindowDimensions","code","isComplete","isPending","useUnit","joinClass","$code","$isComplete","api","joinClassFx","pending","modalWidth","Math","min","cellSize","CLASS_CODE_LENGTH","cellRadius","cellFontSize","setCode","value","toUpperCase","cellProps","getCellOnLayoutHandler","useClearByFocusCell","setValue","canSubmit","closeAndReset","reset","submit","submitFx","keyboardHeight","useKeyboardOffset","liftStyle","useMemo","transform","translateY","Animated","multiply","jsx","View","style","children","BaseModal","onClose","closeButton","Button","variant","ButtonVariant","TERTIARY","icon","CrossIcon","size","color","COLORS","NEUTRAL_7","onPress","testID","TEST_IDS","JOIN_CLASS_CLOSE_BUTTON","container","styles","header","content","CodeField","nativeID","onChangeText","cellCount","rootStyle","codeRoot","textInputStyle","codeInput","autoFocus","autoComplete","textContentType","keyboardType","returnKeyType","onSubmitEditing","JOIN_CLASS_INPUT","renderCell","index","symbol","isFocused","isPlaceholder","cell","borderRadius","onLayout","Text","cellText","fontSize","cellPlaceholder","Cursor","footer","ReanimatedButton","PRIMARY","colorScheme","ButtonColor","ORANGE","ButtonSize","LARGE","disabled","isLoading","JOIN_CLASS_SUBMIT_BUTTON","buttonStyle","exports","StyleSheet","create","gap","paddingHorizontal","flexDirection","justifyContent","borderWidth","isWeb","outlineStyle","alignItems","aspectRatio","backgroundColor","NEUTRAL_1","borderColor","NEUTRAL_5","NEUTRAL_9","fontFamily","FONT_FAMILY","buenosAiresSemiBold","textAlign","text","textTransform"],"sourceRoot":"../../../../../../src","sources":["features/profile/components/modals/JoinClassModal.tsx"],"mappings":"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","ignoreList":[]}
@@ -11,9 +11,17 @@ var _profileHelpers = require("../shared/profile.helpers.js");
11
11
  class ProfileJoinClassModel {
12
12
  reset = (0, _effector.createEvent)();
13
13
  setCode = (0, _effector.createEvent)();
14
- submit = (0, _effector.createEvent)();
15
14
  $code = (0, _effector.restore)(this.setCode, '').reset(this.reset);
16
15
  $isComplete = this.$code.map(code => code.length === _profileConstants.CLASS_CODE_LENGTH);
16
+ submitFx = (0, _effector.attach)({
17
+ source: this.$code,
18
+ effect: classCode => {
19
+ if (classCode.length !== _profileConstants.CLASS_CODE_LENGTH) return;
20
+ return this.api.joinClassFx({
21
+ classCode
22
+ });
23
+ }
24
+ });
17
25
  constructor(api, notify) {
18
26
  this.api = api;
19
27
  this.notify = notify;
@@ -21,15 +29,6 @@ class ProfileJoinClassModel {
21
29
  }
22
30
  init() {
23
31
  const notifyFx = (0, _effector.createEffect)(this.notify);
24
- (0, _effector.sample)({
25
- clock: this.submit,
26
- source: this.$code,
27
- filter: code => code.length === _profileConstants.CLASS_CODE_LENGTH,
28
- fn: classCode => ({
29
- classCode
30
- }),
31
- target: this.api.joinClassFx
32
- });
33
32
  (0, _effector.sample)({
34
33
  clock: this.api.joinClassFx.done,
35
34
  fn: ({
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_JoinClassError","_profileConstants","_profileHelpers","ProfileJoinClassModel","reset","createEvent","setCode","submit","$code","restore","$isComplete","map","code","length","CLASS_CODE_LENGTH","constructor","api","notify","init","notifyFx","createEffect","sample","clock","source","filter","fn","classCode","target","joinClassFx","done","result","status","JoinClassStatus","SUCCESS","message","getJoinClassSuccessMessage","name","fail","error","ERROR","getJoinClassErrorMessage","JoinClassError","finally","exports"],"sourceRoot":"../../../../../src","sources":["features/profile/model/ProfileJoinClassModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAIO,MAAMI,qBAAqB,CAAC;EACjBC,KAAK,GAAG,IAAAC,qBAAW,EAAC,CAAC;EACrBC,OAAO,GAAG,IAAAD,qBAAW,EAAS,CAAC;EAC/BE,MAAM,GAAG,IAAAF,qBAAW,EAAC,CAAC;EAEtBG,KAAK,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACH,OAAO,EAAE,EAAE,CAAC,CAACF,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACnDM,WAAW,GAAG,IAAI,CAACF,KAAK,CAACG,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,MAAM,KAAKC,mCAAiB,CAAC;EAEzFC,WAAWA,CACQC,GAAe,EACfC,MAAuB,EACxC;IAAA,KAFiBD,GAAe,GAAfA,GAAe;IAAA,KACfC,MAAuB,GAAvBA,MAAuB;IAExC,IAAI,CAACC,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,MAAMC,QAAQ,GAAG,IAAAC,sBAAY,EAAC,IAAI,CAACH,MAAM,CAAC;IAE1C,IAAAI,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACf,MAAM;MAClBgB,MAAM,EAAE,IAAI,CAACf,KAAK;MAClBgB,MAAM,EAAGZ,IAAI,IAAKA,IAAI,CAACC,MAAM,KAAKC,mCAAiB;MACnDW,EAAE,EAAGC,SAAS,KAAM;QAAEA;MAAU,CAAC,CAAC;MAClCC,MAAM,EAAE,IAAI,CAACX,GAAG,CAACY;IACnB,CAAC,CAAC;IAEF,IAAAP,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACN,GAAG,CAACY,WAAW,CAACC,IAAI;MAChCJ,EAAE,EAAEA,CAAC;QAAEK;MAAO,CAAC,MAAM;QACnBC,MAAM,EAAEC,iCAAe,CAACC,OAAO;QAC/BC,OAAO,EAAE,IAAAC,0CAA0B,EAACL,MAAM,CAACM,IAAI;MACjD,CAAC,CAAC;MACFT,MAAM,EAAER;IACV,CAAC,CAAC;IAEF,IAAAE,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACN,GAAG,CAACY,WAAW,CAACS,IAAI;MAChCZ,EAAE,EAAEA,CAAC;QAAEa;MAAM,CAAC,MAAM;QAClBP,MAAM,EAAEC,iCAAe,CAACO,KAAK;QAC7BL,OAAO,EAAE,IAAAM,wCAAwB,EAACF,KAAK,YAAYG,8BAAc,GAAGH,KAAK,CAAC1B,IAAI,GAAG,IAAI;MACvF,CAAC,CAAC;MACFe,MAAM,EAAER;IACV,CAAC,CAAC;IAEF,IAAAE,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACN,GAAG,CAACY,WAAW,CAACc,OAAO;MACnCf,MAAM,EAAE,IAAI,CAACvB;IACf,CAAC,CAAC;EACJ;AACF;AAACuC,OAAA,CAAAxC,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_JoinClassError","_profileConstants","_profileHelpers","ProfileJoinClassModel","reset","createEvent","setCode","$code","restore","$isComplete","map","code","length","CLASS_CODE_LENGTH","submitFx","attach","source","effect","classCode","api","joinClassFx","constructor","notify","init","notifyFx","createEffect","sample","clock","done","fn","result","status","JoinClassStatus","SUCCESS","message","getJoinClassSuccessMessage","name","target","fail","error","ERROR","getJoinClassErrorMessage","JoinClassError","finally","exports"],"sourceRoot":"../../../../../src","sources":["features/profile/model/ProfileJoinClassModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAIO,MAAMI,qBAAqB,CAAC;EACjBC,KAAK,GAAG,IAAAC,qBAAW,EAAC,CAAC;EACrBC,OAAO,GAAG,IAAAD,qBAAW,EAAS,CAAC;EAE/BE,KAAK,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACF,OAAO,EAAE,EAAE,CAAC,CAACF,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACnDK,WAAW,GAAG,IAAI,CAACF,KAAK,CAACG,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,MAAM,KAAKC,mCAAiB,CAAC;EAEzEC,QAAQ,GAAG,IAAAC,gBAAM,EAAC;IAChCC,MAAM,EAAE,IAAI,CAACT,KAAK;IAClBU,MAAM,EAAGC,SAAS,IAAK;MACrB,IAAIA,SAAS,CAACN,MAAM,KAAKC,mCAAiB,EAAE;MAC5C,OAAO,IAAI,CAACM,GAAG,CAACC,WAAW,CAAC;QAAEF;MAAU,CAAC,CAAC;IAC5C;EACF,CAAC,CAAC;EAEFG,WAAWA,CACQF,GAAe,EACfG,MAAuB,EACxC;IAAA,KAFiBH,GAAe,GAAfA,GAAe;IAAA,KACfG,MAAuB,GAAvBA,MAAuB;IAExC,IAAI,CAACC,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,MAAMC,QAAQ,GAAG,IAAAC,sBAAY,EAAC,IAAI,CAACH,MAAM,CAAC;IAE1C,IAAAI,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACR,GAAG,CAACC,WAAW,CAACQ,IAAI;MAChCC,EAAE,EAAEA,CAAC;QAAEC;MAAO,CAAC,MAAM;QACnBC,MAAM,EAAEC,iCAAe,CAACC,OAAO;QAC/BC,OAAO,EAAE,IAAAC,0CAA0B,EAACL,MAAM,CAACM,IAAI;MACjD,CAAC,CAAC;MACFC,MAAM,EAAEb;IACV,CAAC,CAAC;IAEF,IAAAE,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACR,GAAG,CAACC,WAAW,CAACkB,IAAI;MAChCT,EAAE,EAAEA,CAAC;QAAEU;MAAM,CAAC,MAAM;QAClBR,MAAM,EAAEC,iCAAe,CAACQ,KAAK;QAC7BN,OAAO,EAAE,IAAAO,wCAAwB,EAACF,KAAK,YAAYG,8BAAc,GAAGH,KAAK,CAAC5B,IAAI,GAAG,IAAI;MACvF,CAAC,CAAC;MACF0B,MAAM,EAAEb;IACV,CAAC,CAAC;IAEF,IAAAE,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACR,GAAG,CAACC,WAAW,CAACuB,OAAO;MACnCN,MAAM,EAAE,IAAI,CAACjC;IACf,CAAC,CAAC;EACJ;AACF;AAACwC,OAAA,CAAAzC,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -5,24 +5,37 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ProfileModel = void 0;
7
7
  var _effector = require("effector");
8
+ var _effectorReact = require("effector-react");
9
+ var _profileConstants = require("../shared/profile.constants.js");
8
10
  var _ProfileApi = require("./ProfileApi.js");
9
11
  var _ProfileJoinClassModel = require("./ProfileJoinClassModel.js");
10
12
  var _ProfileLanguageModel = require("./ProfileLanguageModel.js");
13
+ const DEFAULT_SETTINGS = {
14
+ textToSpeech: false,
15
+ textSize: _profileConstants.TEXT_SIZE.MIN,
16
+ translationLanguage: null,
17
+ canvasType: _profileConstants.ProfileCanvasType.DRAWING,
18
+ isTranslationLocked: false
19
+ };
11
20
  class ProfileModel {
21
+ gate = (0, _effectorReact.createGate)({
22
+ defaultState: {
23
+ user: null,
24
+ settings: DEFAULT_SETTINGS
25
+ }
26
+ });
12
27
  setTextToSpeech = (0, _effector.createEvent)();
13
28
  setTextSize = (0, _effector.createEvent)();
14
29
  setCanvasType = (0, _effector.createEvent)();
30
+ $user = this.gate.state.map(state => state.user);
31
+ $settings = this.gate.state.map(state => state.settings);
15
32
  constructor({
16
33
  api,
17
- notify,
18
- $user,
19
- $settings
34
+ notify
20
35
  }) {
21
36
  this.api = new _ProfileApi.ProfileApi(api);
22
37
  this.joinClass = new _ProfileJoinClassModel.ProfileJoinClassModel(this.api, notify);
23
38
  this.language = new _ProfileLanguageModel.ProfileLanguageModel(this.api);
24
- this.$user = $user;
25
- this.$settings = $settings;
26
39
  this.init();
27
40
  }
28
41
  init() {
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_ProfileApi","_ProfileJoinClassModel","_ProfileLanguageModel","ProfileModel","setTextToSpeech","createEvent","setTextSize","setCanvasType","constructor","api","notify","$user","$settings","ProfileApi","joinClass","ProfileJoinClassModel","language","ProfileLanguageModel","init","sample","clock","fn","textToSpeech","target","updateSettingsFx","textSize","canvasType","exports"],"sourceRoot":"../../../../../src","sources":["features/profile/model/ProfileModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAIA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAH,OAAA;AASO,MAAMI,YAAY,CAAC;EAKRC,eAAe,GAAG,IAAAC,qBAAW,EAAU,CAAC;EACxCC,WAAW,GAAG,IAAAD,qBAAW,EAAS,CAAC;EACnCE,aAAa,GAAG,IAAAF,qBAAW,EAAoB,CAAC;EAKhEG,WAAWA,CAAC;IAAEC,GAAG;IAAEC,MAAM;IAAEC,KAAK;IAAEC;EAA6B,CAAC,EAAE;IAChE,IAAI,CAACH,GAAG,GAAG,IAAII,sBAAU,CAACJ,GAAG,CAAC;IAC9B,IAAI,CAACK,SAAS,GAAG,IAAIC,4CAAqB,CAAC,IAAI,CAACN,GAAG,EAAEC,MAAM,CAAC;IAC5D,IAAI,CAACM,QAAQ,GAAG,IAAIC,0CAAoB,CAAC,IAAI,CAACR,GAAG,CAAC;IAClD,IAAI,CAACE,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,SAAS,GAAGA,SAAS;IAE1B,IAAI,CAACM,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,IAAAC,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAAChB,eAAe;MAC3BiB,EAAE,EAAGC,YAAY,KAAM;QAAEA;MAAa,CAAC,CAAC;MACxCC,MAAM,EAAE,IAAI,CAACd,GAAG,CAACe;IACnB,CAAC,CAAC;IAEF,IAAAL,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACd,WAAW;MACvBe,EAAE,EAAGI,QAAQ,KAAM;QAAEA;MAAS,CAAC,CAAC;MAChCF,MAAM,EAAE,IAAI,CAACd,GAAG,CAACe;IACnB,CAAC,CAAC;IAEF,IAAAL,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACb,aAAa;MACzBc,EAAE,EAAGK,UAAU,KAAM;QAAEA;MAAW,CAAC,CAAC;MACpCH,MAAM,EAAE,IAAI,CAACd,GAAG,CAACe;IACnB,CAAC,CAAC;EACJ;AACF;AAACG,OAAA,CAAAxB,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_effectorReact","_profileConstants","_ProfileApi","_ProfileJoinClassModel","_ProfileLanguageModel","DEFAULT_SETTINGS","textToSpeech","textSize","TEXT_SIZE","MIN","translationLanguage","canvasType","ProfileCanvasType","DRAWING","isTranslationLocked","ProfileModel","gate","createGate","defaultState","user","settings","setTextToSpeech","createEvent","setTextSize","setCanvasType","$user","state","map","$settings","constructor","api","notify","ProfileApi","joinClass","ProfileJoinClassModel","language","ProfileLanguageModel","init","sample","clock","fn","target","updateSettingsFx","exports"],"sourceRoot":"../../../../../src","sources":["features/profile/model/ProfileModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,sBAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AAOA,MAAMM,gBAAiC,GAAG;EACxCC,YAAY,EAAE,KAAK;EACnBC,QAAQ,EAAEC,2BAAS,CAACC,GAAG;EACvBC,mBAAmB,EAAE,IAAI;EACzBC,UAAU,EAAEC,mCAAiB,CAACC,OAAO;EACrCC,mBAAmB,EAAE;AACvB,CAAC;AAEM,MAAMC,YAAY,CAAC;EACRC,IAAI,GAAG,IAAAC,yBAAU,EAAmB;IAClDC,YAAY,EAAE;MAAEC,IAAI,EAAE,IAAI;MAAEC,QAAQ,EAAEf;IAAiB;EACzD,CAAC,CAAC;EAMcgB,eAAe,GAAG,IAAAC,qBAAW,EAAU,CAAC;EACxCC,WAAW,GAAG,IAAAD,qBAAW,EAAS,CAAC;EACnCE,aAAa,GAAG,IAAAF,qBAAW,EAAoB,CAAC;EAEhDG,KAAK,GAAG,IAAI,CAACT,IAAI,CAACU,KAAK,CAACC,GAAG,CAAED,KAAK,IAAKA,KAAK,CAACP,IAAI,CAAC;EAClDS,SAAS,GAAG,IAAI,CAACZ,IAAI,CAACU,KAAK,CAACC,GAAG,CAAED,KAAK,IAAKA,KAAK,CAACN,QAAQ,CAAC;EAE1ES,WAAWA,CAAC;IAAEC,GAAG;IAAEC;EAA0B,CAAC,EAAE;IAC9C,IAAI,CAACD,GAAG,GAAG,IAAIE,sBAAU,CAACF,GAAG,CAAC;IAC9B,IAAI,CAACG,SAAS,GAAG,IAAIC,4CAAqB,CAAC,IAAI,CAACJ,GAAG,EAAEC,MAAM,CAAC;IAC5D,IAAI,CAACI,QAAQ,GAAG,IAAIC,0CAAoB,CAAC,IAAI,CAACN,GAAG,CAAC;IAElD,IAAI,CAACO,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,IAAAC,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAAClB,eAAe;MAC3BmB,EAAE,EAAGlC,YAAY,KAAM;QAAEA;MAAa,CAAC,CAAC;MACxCmC,MAAM,EAAE,IAAI,CAACX,GAAG,CAACY;IACnB,CAAC,CAAC;IAEF,IAAAJ,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAAChB,WAAW;MACvBiB,EAAE,EAAGjC,QAAQ,KAAM;QAAEA;MAAS,CAAC,CAAC;MAChCkC,MAAM,EAAE,IAAI,CAACX,GAAG,CAACY;IACnB,CAAC,CAAC;IAEF,IAAAJ,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACf,aAAa;MACzBgB,EAAE,EAAG7B,UAAU,KAAM;QAAEA;MAAW,CAAC,CAAC;MACpC8B,MAAM,EAAE,IAAI,CAACX,GAAG,CAACY;IACnB,CAAC,CAAC;EACJ;AACF;AAACC,OAAA,CAAA5B,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import React from 'react';
4
4
  import { ScrollView, StyleSheet, useWindowDimensions, View } from 'react-native';
5
+ import { useGate } from 'effector-react';
5
6
  import { COLORS, SPACING } from '@magmamath/react-native-ui';
6
7
  import { isWeb } from "../../shared/common.constants.js";
7
8
  import { ProfileActions } from "./components/actions/ProfileActions.js";
@@ -13,8 +14,13 @@ import { ProfileProvider } from "./context/ProfileContext.js";
13
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
15
  const TWO_COLUMN_BREAKPOINT = 768;
15
16
  const COLUMN_MAX_WIDTH = 560;
16
- export const Profile = props => {
17
+ export const Profile = ({
18
+ user,
19
+ settings,
20
+ ...props
21
+ }) => {
17
22
  const {
23
+ model,
18
24
  showSolveMode,
19
25
  versionInfo
20
26
  } = props;
@@ -22,6 +28,10 @@ export const Profile = props => {
22
28
  width
23
29
  } = useWindowDimensions();
24
30
  const isTwoColumn = width >= TWO_COLUMN_BREAKPOINT;
31
+ useGate(model.gate, {
32
+ user,
33
+ settings
34
+ });
25
35
  return /*#__PURE__*/_jsx(ProfileProvider, {
26
36
  value: props,
27
37
  children: /*#__PURE__*/_jsxs(ScrollView, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","ScrollView","StyleSheet","useWindowDimensions","View","COLORS","SPACING","isWeb","ProfileActions","AccountInfoCard","LanguageSettingsCard","PreferencesCard","TextSettingsCard","ProfileProvider","jsx","_jsx","jsxs","_jsxs","TWO_COLUMN_BREAKPOINT","COLUMN_MAX_WIDTH","Profile","props","showSolveMode","versionInfo","width","isTwoColumn","value","children","style","styles","container","contentContainerStyle","scroll","scrollEnabled","showsVerticalScrollIndicator","columns","columnsStacked","column","columnWide","columnStacked","version","create","backgroundColor","NEUTRAL_3","flex","flexGrow","gap","paddingHorizontal","paddingVertical","flexDirection","justifyContent","alignItems","maxWidth","alignSelf","marginTop"],"sourceRoot":"../../../../src","sources":["features/profile/Profile.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","ScrollView","StyleSheet","useWindowDimensions","View","useGate","COLORS","SPACING","isWeb","ProfileActions","AccountInfoCard","LanguageSettingsCard","PreferencesCard","TextSettingsCard","ProfileProvider","jsx","_jsx","jsxs","_jsxs","TWO_COLUMN_BREAKPOINT","COLUMN_MAX_WIDTH","Profile","user","settings","props","model","showSolveMode","versionInfo","width","isTwoColumn","gate","value","children","style","styles","container","contentContainerStyle","scroll","scrollEnabled","showsVerticalScrollIndicator","columns","columnsStacked","column","columnWide","columnStacked","version","create","backgroundColor","NEUTRAL_3","flex","flexGrow","gap","paddingHorizontal","paddingVertical","flexDirection","justifyContent","alignItems","maxWidth","alignSelf","marginTop"],"sourceRoot":"../../../../src","sources":["features/profile/Profile.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import React, { useEffect, useMemo } from 'react';
3
+ import React, { useMemo } from 'react';
4
4
  import { Animated, StyleSheet, Text, useWindowDimensions, View } from 'react-native';
5
5
  import { useUnit } from 'effector-react';
6
6
  import { CodeField, Cursor, useClearByFocusCell } from 'react-native-confirmation-code-field';
@@ -53,15 +53,19 @@ export const JoinClassModal = ({
53
53
  value: code,
54
54
  setValue: setCode
55
55
  });
56
- useEffect(() => {
57
- const subscription = model.api.joinClassFx.finally.watch(() => closeModal());
58
- return () => subscription.unsubscribe();
59
- }, [model, closeModal]);
56
+ const canSubmit = isComplete && !isPending;
60
57
  const closeAndReset = () => {
61
58
  model.joinClass.reset();
62
59
  closeModal();
63
60
  };
64
- const submit = () => model.joinClass.submit();
61
+ const submit = async () => {
62
+ if (!canSubmit) return;
63
+ try {
64
+ await model.joinClass.submitFx();
65
+ } finally {
66
+ closeModal();
67
+ }
68
+ };
65
69
  const keyboardHeight = useKeyboardOffset();
66
70
  const liftStyle = useMemo(() => ({
67
71
  transform: [{
@@ -128,7 +132,7 @@ export const JoinClassModal = ({
128
132
  colorScheme: ButtonColor.ORANGE,
129
133
  size: ButtonSize.LARGE,
130
134
  onPress: submit,
131
- disabled: !isComplete || isPending,
135
+ disabled: !canSubmit,
132
136
  isLoading: isPending,
133
137
  testID: TEST_IDS.JOIN_CLASS_SUBMIT_BUTTON,
134
138
  style: buttonStyle,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useMemo","Animated","StyleSheet","Text","useWindowDimensions","View","useUnit","CodeField","Cursor","useClearByFocusCell","BaseModal","Button","ButtonColor","ButtonSize","ButtonVariant","COLORS","CrossIcon","FONT_FAMILY","ReanimatedButton","SPACING","TEST_IDS","useText","useKeyboardOffset","isWeb","CLASS_CODE_LENGTH","jsx","_jsx","CODE_PLACEHOLDER","MAX_MODAL_WIDTH","SCREEN_MARGIN","CELL_GAP","MODAL_H_PADDING","CELL_ASPECT","CELL_RADIUS_RATIO","CELL_FONT_RATIO","MAX_CELL_RADIUS","CLOSE_ICON_SIZE","KEYBOARD_LIFT_RATIO","JoinClassModal","modal","closeModal","params","t","model","width","code","isComplete","isPending","joinClass","$code","$isComplete","api","joinClassFx","pending","modalWidth","Math","min","cellSize","cellRadius","cellFontSize","setCode","value","toUpperCase","cellProps","getCellOnLayoutHandler","setValue","subscription","finally","watch","unsubscribe","closeAndReset","reset","submit","keyboardHeight","liftStyle","transform","translateY","multiply","style","children","onClose","closeButton","variant","TERTIARY","icon","size","color","NEUTRAL_7","onPress","testID","JOIN_CLASS_CLOSE_BUTTON","container","styles","header","content","nativeID","onChangeText","cellCount","rootStyle","codeRoot","textInputStyle","codeInput","autoFocus","autoComplete","textContentType","keyboardType","returnKeyType","onSubmitEditing","JOIN_CLASS_INPUT","renderCell","index","symbol","isFocused","isPlaceholder","cell","borderRadius","onLayout","cellText","fontSize","cellPlaceholder","footer","PRIMARY","colorScheme","ORANGE","LARGE","disabled","isLoading","JOIN_CLASS_SUBMIT_BUTTON","buttonStyle","create","gap","paddingHorizontal","flexDirection","justifyContent","borderWidth","outlineStyle","alignItems","aspectRatio","backgroundColor","NEUTRAL_1","borderColor","NEUTRAL_5","NEUTRAL_9","fontFamily","buenosAiresSemiBold","textAlign","text","textTransform"],"sourceRoot":"../../../../../../src","sources":["features/profile/components/modals/JoinClassModal.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","Animated","StyleSheet","Text","useWindowDimensions","View","useUnit","CodeField","Cursor","useClearByFocusCell","BaseModal","Button","ButtonColor","ButtonSize","ButtonVariant","COLORS","CrossIcon","FONT_FAMILY","ReanimatedButton","SPACING","TEST_IDS","useText","useKeyboardOffset","isWeb","CLASS_CODE_LENGTH","jsx","_jsx","CODE_PLACEHOLDER","MAX_MODAL_WIDTH","SCREEN_MARGIN","CELL_GAP","MODAL_H_PADDING","CELL_ASPECT","CELL_RADIUS_RATIO","CELL_FONT_RATIO","MAX_CELL_RADIUS","CLOSE_ICON_SIZE","KEYBOARD_LIFT_RATIO","JoinClassModal","modal","closeModal","params","t","model","width","code","isComplete","isPending","joinClass","$code","$isComplete","api","joinClassFx","pending","modalWidth","Math","min","cellSize","cellRadius","cellFontSize","setCode","value","toUpperCase","cellProps","getCellOnLayoutHandler","setValue","canSubmit","closeAndReset","reset","submit","submitFx","keyboardHeight","liftStyle","transform","translateY","multiply","style","children","onClose","closeButton","variant","TERTIARY","icon","size","color","NEUTRAL_7","onPress","testID","JOIN_CLASS_CLOSE_BUTTON","container","styles","header","content","nativeID","onChangeText","cellCount","rootStyle","codeRoot","textInputStyle","codeInput","autoFocus","autoComplete","textContentType","keyboardType","returnKeyType","onSubmitEditing","JOIN_CLASS_INPUT","renderCell","index","symbol","isFocused","isPlaceholder","cell","borderRadius","onLayout","cellText","fontSize","cellPlaceholder","footer","PRIMARY","colorScheme","ORANGE","LARGE","disabled","isLoading","JOIN_CLASS_SUBMIT_BUTTON","buttonStyle","create","gap","paddingHorizontal","flexDirection","justifyContent","borderWidth","outlineStyle","alignItems","aspectRatio","backgroundColor","NEUTRAL_1","borderColor","NEUTRAL_5","NEUTRAL_9","fontFamily","buenosAiresSemiBold","textAlign","text","textTransform"],"sourceRoot":"../../../../../../src","sources":["features/profile/components/modals/JoinClassModal.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,15 +1,23 @@
1
1
  "use strict";
2
2
 
3
- import { createEffect, createEvent, restore, sample } from 'effector';
3
+ import { attach, createEffect, createEvent, restore, sample } from 'effector';
4
4
  import { JoinClassError } from "../shared/JoinClassError.js";
5
5
  import { CLASS_CODE_LENGTH, JoinClassStatus } from "../shared/profile.constants.js";
6
6
  import { getJoinClassErrorMessage, getJoinClassSuccessMessage } from "../shared/profile.helpers.js";
7
7
  export class ProfileJoinClassModel {
8
8
  reset = createEvent();
9
9
  setCode = createEvent();
10
- submit = createEvent();
11
10
  $code = restore(this.setCode, '').reset(this.reset);
12
11
  $isComplete = this.$code.map(code => code.length === CLASS_CODE_LENGTH);
12
+ submitFx = attach({
13
+ source: this.$code,
14
+ effect: classCode => {
15
+ if (classCode.length !== CLASS_CODE_LENGTH) return;
16
+ return this.api.joinClassFx({
17
+ classCode
18
+ });
19
+ }
20
+ });
13
21
  constructor(api, notify) {
14
22
  this.api = api;
15
23
  this.notify = notify;
@@ -17,15 +25,6 @@ export class ProfileJoinClassModel {
17
25
  }
18
26
  init() {
19
27
  const notifyFx = createEffect(this.notify);
20
- sample({
21
- clock: this.submit,
22
- source: this.$code,
23
- filter: code => code.length === CLASS_CODE_LENGTH,
24
- fn: classCode => ({
25
- classCode
26
- }),
27
- target: this.api.joinClassFx
28
- });
29
28
  sample({
30
29
  clock: this.api.joinClassFx.done,
31
30
  fn: ({
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","createEvent","restore","sample","JoinClassError","CLASS_CODE_LENGTH","JoinClassStatus","getJoinClassErrorMessage","getJoinClassSuccessMessage","ProfileJoinClassModel","reset","setCode","submit","$code","$isComplete","map","code","length","constructor","api","notify","init","notifyFx","clock","source","filter","fn","classCode","target","joinClassFx","done","result","status","SUCCESS","message","name","fail","error","ERROR","finally"],"sourceRoot":"../../../../../src","sources":["features/profile/model/ProfileJoinClassModel.ts"],"mappings":";;AAAA,SAASA,YAAY,EAAEC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAQ,UAAU;AAErE,SAASC,cAAc,QAAQ,6BAA0B;AACzD,SAASC,iBAAiB,EAAEC,eAAe,QAAQ,gCAA6B;AAChF,SAASC,wBAAwB,EAAEC,0BAA0B,QAAQ,8BAA2B;AAIhG,OAAO,MAAMC,qBAAqB,CAAC;EACjBC,KAAK,GAAGT,WAAW,CAAC,CAAC;EACrBU,OAAO,GAAGV,WAAW,CAAS,CAAC;EAC/BW,MAAM,GAAGX,WAAW,CAAC,CAAC;EAEtBY,KAAK,GAAGX,OAAO,CAAC,IAAI,CAACS,OAAO,EAAE,EAAE,CAAC,CAACD,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACnDI,WAAW,GAAG,IAAI,CAACD,KAAK,CAACE,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,MAAM,KAAKZ,iBAAiB,CAAC;EAEzFa,WAAWA,CACQC,GAAe,EACfC,MAAuB,EACxC;IAAA,KAFiBD,GAAe,GAAfA,GAAe;IAAA,KACfC,MAAuB,GAAvBA,MAAuB;IAExC,IAAI,CAACC,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,MAAMC,QAAQ,GAAGtB,YAAY,CAAC,IAAI,CAACoB,MAAM,CAAC;IAE1CjB,MAAM,CAAC;MACLoB,KAAK,EAAE,IAAI,CAACX,MAAM;MAClBY,MAAM,EAAE,IAAI,CAACX,KAAK;MAClBY,MAAM,EAAGT,IAAI,IAAKA,IAAI,CAACC,MAAM,KAAKZ,iBAAiB;MACnDqB,EAAE,EAAGC,SAAS,KAAM;QAAEA;MAAU,CAAC,CAAC;MAClCC,MAAM,EAAE,IAAI,CAACT,GAAG,CAACU;IACnB,CAAC,CAAC;IAEF1B,MAAM,CAAC;MACLoB,KAAK,EAAE,IAAI,CAACJ,GAAG,CAACU,WAAW,CAACC,IAAI;MAChCJ,EAAE,EAAEA,CAAC;QAAEK;MAAO,CAAC,MAAM;QACnBC,MAAM,EAAE1B,eAAe,CAAC2B,OAAO;QAC/BC,OAAO,EAAE1B,0BAA0B,CAACuB,MAAM,CAACI,IAAI;MACjD,CAAC,CAAC;MACFP,MAAM,EAAEN;IACV,CAAC,CAAC;IAEFnB,MAAM,CAAC;MACLoB,KAAK,EAAE,IAAI,CAACJ,GAAG,CAACU,WAAW,CAACO,IAAI;MAChCV,EAAE,EAAEA,CAAC;QAAEW;MAAM,CAAC,MAAM;QAClBL,MAAM,EAAE1B,eAAe,CAACgC,KAAK;QAC7BJ,OAAO,EAAE3B,wBAAwB,CAAC8B,KAAK,YAAYjC,cAAc,GAAGiC,KAAK,CAACrB,IAAI,GAAG,IAAI;MACvF,CAAC,CAAC;MACFY,MAAM,EAAEN;IACV,CAAC,CAAC;IAEFnB,MAAM,CAAC;MACLoB,KAAK,EAAE,IAAI,CAACJ,GAAG,CAACU,WAAW,CAACU,OAAO;MACnCX,MAAM,EAAE,IAAI,CAAClB;IACf,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
1
+ {"version":3,"names":["attach","createEffect","createEvent","restore","sample","JoinClassError","CLASS_CODE_LENGTH","JoinClassStatus","getJoinClassErrorMessage","getJoinClassSuccessMessage","ProfileJoinClassModel","reset","setCode","$code","$isComplete","map","code","length","submitFx","source","effect","classCode","api","joinClassFx","constructor","notify","init","notifyFx","clock","done","fn","result","status","SUCCESS","message","name","target","fail","error","ERROR","finally"],"sourceRoot":"../../../../../src","sources":["features/profile/model/ProfileJoinClassModel.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,YAAY,EAAEC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAQ,UAAU;AAE7E,SAASC,cAAc,QAAQ,6BAA0B;AACzD,SAASC,iBAAiB,EAAEC,eAAe,QAAQ,gCAA6B;AAChF,SAASC,wBAAwB,EAAEC,0BAA0B,QAAQ,8BAA2B;AAIhG,OAAO,MAAMC,qBAAqB,CAAC;EACjBC,KAAK,GAAGT,WAAW,CAAC,CAAC;EACrBU,OAAO,GAAGV,WAAW,CAAS,CAAC;EAE/BW,KAAK,GAAGV,OAAO,CAAC,IAAI,CAACS,OAAO,EAAE,EAAE,CAAC,CAACD,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACnDG,WAAW,GAAG,IAAI,CAACD,KAAK,CAACE,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,MAAM,KAAKX,iBAAiB,CAAC;EAEzEY,QAAQ,GAAGlB,MAAM,CAAC;IAChCmB,MAAM,EAAE,IAAI,CAACN,KAAK;IAClBO,MAAM,EAAGC,SAAS,IAAK;MACrB,IAAIA,SAAS,CAACJ,MAAM,KAAKX,iBAAiB,EAAE;MAC5C,OAAO,IAAI,CAACgB,GAAG,CAACC,WAAW,CAAC;QAAEF;MAAU,CAAC,CAAC;IAC5C;EACF,CAAC,CAAC;EAEFG,WAAWA,CACQF,GAAe,EACfG,MAAuB,EACxC;IAAA,KAFiBH,GAAe,GAAfA,GAAe;IAAA,KACfG,MAAuB,GAAvBA,MAAuB;IAExC,IAAI,CAACC,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,MAAMC,QAAQ,GAAG1B,YAAY,CAAC,IAAI,CAACwB,MAAM,CAAC;IAE1CrB,MAAM,CAAC;MACLwB,KAAK,EAAE,IAAI,CAACN,GAAG,CAACC,WAAW,CAACM,IAAI;MAChCC,EAAE,EAAEA,CAAC;QAAEC;MAAO,CAAC,MAAM;QACnBC,MAAM,EAAEzB,eAAe,CAAC0B,OAAO;QAC/BC,OAAO,EAAEzB,0BAA0B,CAACsB,MAAM,CAACI,IAAI;MACjD,CAAC,CAAC;MACFC,MAAM,EAAET;IACV,CAAC,CAAC;IAEFvB,MAAM,CAAC;MACLwB,KAAK,EAAE,IAAI,CAACN,GAAG,CAACC,WAAW,CAACc,IAAI;MAChCP,EAAE,EAAEA,CAAC;QAAEQ;MAAM,CAAC,MAAM;QAClBN,MAAM,EAAEzB,eAAe,CAACgC,KAAK;QAC7BL,OAAO,EAAE1B,wBAAwB,CAAC8B,KAAK,YAAYjC,cAAc,GAAGiC,KAAK,CAACtB,IAAI,GAAG,IAAI;MACvF,CAAC,CAAC;MACFoB,MAAM,EAAET;IACV,CAAC,CAAC;IAEFvB,MAAM,CAAC;MACLwB,KAAK,EAAE,IAAI,CAACN,GAAG,CAACC,WAAW,CAACiB,OAAO;MACnCJ,MAAM,EAAE,IAAI,CAACzB;IACf,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
@@ -1,24 +1,37 @@
1
1
  "use strict";
2
2
 
3
3
  import { createEvent, sample } from 'effector';
4
+ import { createGate } from 'effector-react';
5
+ import { ProfileCanvasType, TEXT_SIZE } from "../shared/profile.constants.js";
4
6
  import { ProfileApi } from "./ProfileApi.js";
5
7
  import { ProfileJoinClassModel } from "./ProfileJoinClassModel.js";
6
8
  import { ProfileLanguageModel } from "./ProfileLanguageModel.js";
9
+ const DEFAULT_SETTINGS = {
10
+ textToSpeech: false,
11
+ textSize: TEXT_SIZE.MIN,
12
+ translationLanguage: null,
13
+ canvasType: ProfileCanvasType.DRAWING,
14
+ isTranslationLocked: false
15
+ };
7
16
  export class ProfileModel {
17
+ gate = createGate({
18
+ defaultState: {
19
+ user: null,
20
+ settings: DEFAULT_SETTINGS
21
+ }
22
+ });
8
23
  setTextToSpeech = createEvent();
9
24
  setTextSize = createEvent();
10
25
  setCanvasType = createEvent();
26
+ $user = this.gate.state.map(state => state.user);
27
+ $settings = this.gate.state.map(state => state.settings);
11
28
  constructor({
12
29
  api,
13
- notify,
14
- $user,
15
- $settings
30
+ notify
16
31
  }) {
17
32
  this.api = new ProfileApi(api);
18
33
  this.joinClass = new ProfileJoinClassModel(this.api, notify);
19
34
  this.language = new ProfileLanguageModel(this.api);
20
- this.$user = $user;
21
- this.$settings = $settings;
22
35
  this.init();
23
36
  }
24
37
  init() {
@@ -1 +1 @@
1
- {"version":3,"names":["createEvent","sample","ProfileApi","ProfileJoinClassModel","ProfileLanguageModel","ProfileModel","setTextToSpeech","setTextSize","setCanvasType","constructor","api","notify","$user","$settings","joinClass","language","init","clock","fn","textToSpeech","target","updateSettingsFx","textSize","canvasType"],"sourceRoot":"../../../../../src","sources":["features/profile/model/ProfileModel.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,MAAM,QAAoB,UAAU;AAI1D,SAASC,UAAU,QAA8B,iBAAc;AAC/D,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,oBAAoB,QAAQ,2BAAwB;AAS7D,OAAO,MAAMC,YAAY,CAAC;EAKRC,eAAe,GAAGN,WAAW,CAAU,CAAC;EACxCO,WAAW,GAAGP,WAAW,CAAS,CAAC;EACnCQ,aAAa,GAAGR,WAAW,CAAoB,CAAC;EAKhES,WAAWA,CAAC;IAAEC,GAAG;IAAEC,MAAM;IAAEC,KAAK;IAAEC;EAA6B,CAAC,EAAE;IAChE,IAAI,CAACH,GAAG,GAAG,IAAIR,UAAU,CAACQ,GAAG,CAAC;IAC9B,IAAI,CAACI,SAAS,GAAG,IAAIX,qBAAqB,CAAC,IAAI,CAACO,GAAG,EAAEC,MAAM,CAAC;IAC5D,IAAI,CAACI,QAAQ,GAAG,IAAIX,oBAAoB,CAAC,IAAI,CAACM,GAAG,CAAC;IAClD,IAAI,CAACE,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,SAAS,GAAGA,SAAS;IAE1B,IAAI,CAACG,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACbf,MAAM,CAAC;MACLgB,KAAK,EAAE,IAAI,CAACX,eAAe;MAC3BY,EAAE,EAAGC,YAAY,KAAM;QAAEA;MAAa,CAAC,CAAC;MACxCC,MAAM,EAAE,IAAI,CAACV,GAAG,CAACW;IACnB,CAAC,CAAC;IAEFpB,MAAM,CAAC;MACLgB,KAAK,EAAE,IAAI,CAACV,WAAW;MACvBW,EAAE,EAAGI,QAAQ,KAAM;QAAEA;MAAS,CAAC,CAAC;MAChCF,MAAM,EAAE,IAAI,CAACV,GAAG,CAACW;IACnB,CAAC,CAAC;IAEFpB,MAAM,CAAC;MACLgB,KAAK,EAAE,IAAI,CAACT,aAAa;MACzBU,EAAE,EAAGK,UAAU,KAAM;QAAEA;MAAW,CAAC,CAAC;MACpCH,MAAM,EAAE,IAAI,CAACV,GAAG,CAACW;IACnB,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
1
+ {"version":3,"names":["createEvent","sample","createGate","ProfileCanvasType","TEXT_SIZE","ProfileApi","ProfileJoinClassModel","ProfileLanguageModel","DEFAULT_SETTINGS","textToSpeech","textSize","MIN","translationLanguage","canvasType","DRAWING","isTranslationLocked","ProfileModel","gate","defaultState","user","settings","setTextToSpeech","setTextSize","setCanvasType","$user","state","map","$settings","constructor","api","notify","joinClass","language","init","clock","fn","target","updateSettingsFx"],"sourceRoot":"../../../../../src","sources":["features/profile/model/ProfileModel.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ,UAAU;AAC9C,SAASC,UAAU,QAAQ,gBAAgB;AAE3C,SAASC,iBAAiB,EAAEC,SAAS,QAAQ,gCAA6B;AAE1E,SAASC,UAAU,QAA8B,iBAAc;AAC/D,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,oBAAoB,QAAQ,2BAAwB;AAO7D,MAAMC,gBAAiC,GAAG;EACxCC,YAAY,EAAE,KAAK;EACnBC,QAAQ,EAAEN,SAAS,CAACO,GAAG;EACvBC,mBAAmB,EAAE,IAAI;EACzBC,UAAU,EAAEV,iBAAiB,CAACW,OAAO;EACrCC,mBAAmB,EAAE;AACvB,CAAC;AAED,OAAO,MAAMC,YAAY,CAAC;EACRC,IAAI,GAAGf,UAAU,CAAmB;IAClDgB,YAAY,EAAE;MAAEC,IAAI,EAAE,IAAI;MAAEC,QAAQ,EAAEZ;IAAiB;EACzD,CAAC,CAAC;EAMca,eAAe,GAAGrB,WAAW,CAAU,CAAC;EACxCsB,WAAW,GAAGtB,WAAW,CAAS,CAAC;EACnCuB,aAAa,GAAGvB,WAAW,CAAoB,CAAC;EAEhDwB,KAAK,GAAG,IAAI,CAACP,IAAI,CAACQ,KAAK,CAACC,GAAG,CAAED,KAAK,IAAKA,KAAK,CAACN,IAAI,CAAC;EAClDQ,SAAS,GAAG,IAAI,CAACV,IAAI,CAACQ,KAAK,CAACC,GAAG,CAAED,KAAK,IAAKA,KAAK,CAACL,QAAQ,CAAC;EAE1EQ,WAAWA,CAAC;IAAEC,GAAG;IAAEC;EAA0B,CAAC,EAAE;IAC9C,IAAI,CAACD,GAAG,GAAG,IAAIxB,UAAU,CAACwB,GAAG,CAAC;IAC9B,IAAI,CAACE,SAAS,GAAG,IAAIzB,qBAAqB,CAAC,IAAI,CAACuB,GAAG,EAAEC,MAAM,CAAC;IAC5D,IAAI,CAACE,QAAQ,GAAG,IAAIzB,oBAAoB,CAAC,IAAI,CAACsB,GAAG,CAAC;IAElD,IAAI,CAACI,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACbhC,MAAM,CAAC;MACLiC,KAAK,EAAE,IAAI,CAACb,eAAe;MAC3Bc,EAAE,EAAG1B,YAAY,KAAM;QAAEA;MAAa,CAAC,CAAC;MACxC2B,MAAM,EAAE,IAAI,CAACP,GAAG,CAACQ;IACnB,CAAC,CAAC;IAEFpC,MAAM,CAAC;MACLiC,KAAK,EAAE,IAAI,CAACZ,WAAW;MACvBa,EAAE,EAAGzB,QAAQ,KAAM;QAAEA;MAAS,CAAC,CAAC;MAChC0B,MAAM,EAAE,IAAI,CAACP,GAAG,CAACQ;IACnB,CAAC,CAAC;IAEFpC,MAAM,CAAC;MACLiC,KAAK,EAAE,IAAI,CAACX,aAAa;MACzBY,EAAE,EAAGtB,UAAU,KAAM;QAAEA;MAAW,CAAC,CAAC;MACpCuB,MAAM,EAAE,IAAI,CAACP,GAAG,CAACQ;IACnB,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type ProfileContextValue } from './context/ProfileContext';
3
- type ProfileProps = ProfileContextValue;
4
- export declare const Profile: (props: ProfileProps) => React.JSX.Element;
3
+ import type { ProfileGateProps } from './shared/profile.types';
4
+ type ProfileProps = ProfileContextValue & ProfileGateProps;
5
+ export declare const Profile: ({ user, settings, ...props }: ProfileProps) => React.JSX.Element;
5
6
  export {};
6
7
  //# sourceMappingURL=Profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../../../../src/features/profile/Profile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEpF,KAAK,YAAY,GAAG,mBAAmB,CAAA;AAKvC,eAAO,MAAM,OAAO,UAAW,YAAY,sBA4B1C,CAAA"}
1
+ {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../../../../src/features/profile/Profile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,KAAK,YAAY,GAAG,mBAAmB,GAAG,gBAAgB,CAAA;AAK1D,eAAO,MAAM,OAAO,iCAAkC,YAAY,sBA8BjE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"JoinClassModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/profile/components/modals/JoinClassModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAsBjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAcvE,eAAO,MAAM,cAAc,sCAAuC,iBAAiB,sBA+GlF,CAAA"}
1
+ {"version":3,"file":"JoinClassModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/profile/components/modals/JoinClassModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAsBtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAcvE,eAAO,MAAM,cAAc,sCAAuC,iBAAiB,sBAmHlF,CAAA"}
@@ -5,9 +5,9 @@ export declare class ProfileJoinClassModel {
5
5
  private readonly notify;
6
6
  readonly reset: import("effector").EventCallable<void>;
7
7
  readonly setCode: import("effector").EventCallable<string>;
8
- readonly submit: import("effector").EventCallable<void>;
9
8
  readonly $code: import("effector").StoreWritable<string>;
10
9
  readonly $isComplete: import("effector").Store<boolean>;
10
+ readonly submitFx: import("effector").Effect<void, import("../shared/profile.types").JoinClassResult | undefined, Error>;
11
11
  constructor(api: ProfileApi, notify: NotifyJoinClass);
12
12
  private init;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileJoinClassModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/model/ProfileJoinClassModel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,qBAAa,qBAAqB;IAS9B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,OAAO,2CAAwB;IAC/C,SAAgB,MAAM,yCAAgB;IAEtC,SAAgB,KAAK,2CAA8C;IACnE,SAAgB,WAAW,oCAA8D;gBAGtE,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,eAAe;IAK1C,OAAO,CAAC,IAAI;CAkCb"}
1
+ {"version":3,"file":"ProfileJoinClassModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/model/ProfileJoinClassModel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,qBAAa,qBAAqB;IAgB9B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAhBzB,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,OAAO,2CAAwB;IAE/C,SAAgB,KAAK,2CAA8C;IACnE,SAAgB,WAAW,oCAA8D;IAEzF,SAAgB,QAAQ,wGAMtB;gBAGiB,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,eAAe;IAK1C,OAAO,CAAC,IAAI;CA0Bb"}
@@ -1,25 +1,23 @@
1
- import { type Store } from 'effector';
2
- import type { ProfileCanvasType } from '../shared/profile.constants';
3
- import type { NotifyJoinClass, ProfileSettings, ProfileUser } from '../shared/profile.types';
1
+ import { ProfileCanvasType } from '../shared/profile.constants';
2
+ import type { NotifyJoinClass, ProfileGateProps, ProfileSettings } from '../shared/profile.types';
4
3
  import { ProfileApi, type ProfileApiProps } from './ProfileApi';
5
4
  import { ProfileJoinClassModel } from './ProfileJoinClassModel';
6
5
  import { ProfileLanguageModel } from './ProfileLanguageModel';
7
6
  type ProfileModelProps = {
8
7
  api: ProfileApiProps;
9
8
  notify: NotifyJoinClass;
10
- $user: Store<ProfileUser | null>;
11
- $settings: Store<ProfileSettings>;
12
9
  };
13
10
  export declare class ProfileModel {
11
+ readonly gate: import("effector-react").Gate<ProfileGateProps>;
14
12
  readonly api: ProfileApi;
15
13
  readonly joinClass: ProfileJoinClassModel;
16
14
  readonly language: ProfileLanguageModel;
17
15
  readonly setTextToSpeech: import("effector").EventCallable<boolean>;
18
16
  readonly setTextSize: import("effector").EventCallable<number>;
19
17
  readonly setCanvasType: import("effector").EventCallable<ProfileCanvasType>;
20
- readonly $user: Store<ProfileUser | null>;
21
- readonly $settings: Store<ProfileSettings>;
22
- constructor({ api, notify, $user, $settings }: ProfileModelProps);
18
+ readonly $user: import("effector").Store<import("../shared/profile.types").ProfileUser | null>;
19
+ readonly $settings: import("effector").Store<ProfileSettings>;
20
+ constructor({ api, notify }: ProfileModelProps);
23
21
  private init;
24
22
  }
25
23
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/model/ProfileModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,eAAe,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAChC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;CAClC,CAAA;AAED,qBAAa,YAAY;IACvB,SAAgB,GAAG,EAAE,UAAU,CAAA;IAC/B,SAAgB,SAAS,EAAE,qBAAqB,CAAA;IAChD,SAAgB,QAAQ,EAAE,oBAAoB,CAAA;IAE9C,SAAgB,eAAe,4CAAyB;IACxD,SAAgB,WAAW,2CAAwB;IACnD,SAAgB,aAAa,sDAAmC;IAEhE,SAAgB,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAChD,SAAgB,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;gBAErC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,iBAAiB;IAUhE,OAAO,CAAC,IAAI;CAmBb"}
1
+ {"version":3,"file":"ProfileModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/model/ProfileModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAa,MAAM,6BAA6B,CAAA;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,eAAe,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;CACxB,CAAA;AAUD,qBAAa,YAAY;IACvB,SAAgB,IAAI,kDAElB;IAEF,SAAgB,GAAG,EAAE,UAAU,CAAA;IAC/B,SAAgB,SAAS,EAAE,qBAAqB,CAAA;IAChD,SAAgB,QAAQ,EAAE,oBAAoB,CAAA;IAE9C,SAAgB,eAAe,4CAAyB;IACxD,SAAgB,WAAW,2CAAwB;IACnD,SAAgB,aAAa,sDAAmC;IAEhE,SAAgB,KAAK,iFAA6C;IAClE,SAAgB,SAAS,4CAAiD;gBAE9D,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAQ9C,OAAO,CAAC,IAAI;CAmBb"}
@@ -13,6 +13,10 @@ export type ProfileSettings = {
13
13
  isTranslationLocked: boolean;
14
14
  };
15
15
  export type ProfileSettingsUpdate = Partial<ProfileSettings>;
16
+ export type ProfileGateProps = {
17
+ user: ProfileUser | null;
18
+ settings: ProfileSettings;
19
+ };
16
20
  export type JoinClassPayload = {
17
21
  classCode: string;
18
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"profile.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/shared/profile.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE7E,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,QAAQ,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,mBAAmB,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAE5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,qBAAqB,KAAK,IAAI,CAAA"}
1
+ {"version":3,"file":"profile.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/shared/profile.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE7E,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,QAAQ,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,mBAAmB,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAE5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,eAAe,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,qBAAqB,KAAK,IAAI,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type ProfileContextValue } from './context/ProfileContext';
3
- type ProfileProps = ProfileContextValue;
4
- export declare const Profile: (props: ProfileProps) => React.JSX.Element;
3
+ import type { ProfileGateProps } from './shared/profile.types';
4
+ type ProfileProps = ProfileContextValue & ProfileGateProps;
5
+ export declare const Profile: ({ user, settings, ...props }: ProfileProps) => React.JSX.Element;
5
6
  export {};
6
7
  //# sourceMappingURL=Profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../../../../src/features/profile/Profile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEpF,KAAK,YAAY,GAAG,mBAAmB,CAAA;AAKvC,eAAO,MAAM,OAAO,UAAW,YAAY,sBA4B1C,CAAA"}
1
+ {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../../../../src/features/profile/Profile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,KAAK,YAAY,GAAG,mBAAmB,GAAG,gBAAgB,CAAA;AAK1D,eAAO,MAAM,OAAO,iCAAkC,YAAY,sBA8BjE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"JoinClassModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/profile/components/modals/JoinClassModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAsBjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAcvE,eAAO,MAAM,cAAc,sCAAuC,iBAAiB,sBA+GlF,CAAA"}
1
+ {"version":3,"file":"JoinClassModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/profile/components/modals/JoinClassModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAsBtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAcvE,eAAO,MAAM,cAAc,sCAAuC,iBAAiB,sBAmHlF,CAAA"}
@@ -5,9 +5,9 @@ export declare class ProfileJoinClassModel {
5
5
  private readonly notify;
6
6
  readonly reset: import("effector").EventCallable<void>;
7
7
  readonly setCode: import("effector").EventCallable<string>;
8
- readonly submit: import("effector").EventCallable<void>;
9
8
  readonly $code: import("effector").StoreWritable<string>;
10
9
  readonly $isComplete: import("effector").Store<boolean>;
10
+ readonly submitFx: import("effector").Effect<void, import("../shared/profile.types").JoinClassResult | undefined, Error>;
11
11
  constructor(api: ProfileApi, notify: NotifyJoinClass);
12
12
  private init;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileJoinClassModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/model/ProfileJoinClassModel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,qBAAa,qBAAqB;IAS9B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,OAAO,2CAAwB;IAC/C,SAAgB,MAAM,yCAAgB;IAEtC,SAAgB,KAAK,2CAA8C;IACnE,SAAgB,WAAW,oCAA8D;gBAGtE,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,eAAe;IAK1C,OAAO,CAAC,IAAI;CAkCb"}
1
+ {"version":3,"file":"ProfileJoinClassModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/model/ProfileJoinClassModel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,qBAAa,qBAAqB;IAgB9B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAhBzB,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,OAAO,2CAAwB;IAE/C,SAAgB,KAAK,2CAA8C;IACnE,SAAgB,WAAW,oCAA8D;IAEzF,SAAgB,QAAQ,wGAMtB;gBAGiB,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,eAAe;IAK1C,OAAO,CAAC,IAAI;CA0Bb"}
@@ -1,25 +1,23 @@
1
- import { type Store } from 'effector';
2
- import type { ProfileCanvasType } from '../shared/profile.constants';
3
- import type { NotifyJoinClass, ProfileSettings, ProfileUser } from '../shared/profile.types';
1
+ import { ProfileCanvasType } from '../shared/profile.constants';
2
+ import type { NotifyJoinClass, ProfileGateProps, ProfileSettings } from '../shared/profile.types';
4
3
  import { ProfileApi, type ProfileApiProps } from './ProfileApi';
5
4
  import { ProfileJoinClassModel } from './ProfileJoinClassModel';
6
5
  import { ProfileLanguageModel } from './ProfileLanguageModel';
7
6
  type ProfileModelProps = {
8
7
  api: ProfileApiProps;
9
8
  notify: NotifyJoinClass;
10
- $user: Store<ProfileUser | null>;
11
- $settings: Store<ProfileSettings>;
12
9
  };
13
10
  export declare class ProfileModel {
11
+ readonly gate: import("effector-react").Gate<ProfileGateProps>;
14
12
  readonly api: ProfileApi;
15
13
  readonly joinClass: ProfileJoinClassModel;
16
14
  readonly language: ProfileLanguageModel;
17
15
  readonly setTextToSpeech: import("effector").EventCallable<boolean>;
18
16
  readonly setTextSize: import("effector").EventCallable<number>;
19
17
  readonly setCanvasType: import("effector").EventCallable<ProfileCanvasType>;
20
- readonly $user: Store<ProfileUser | null>;
21
- readonly $settings: Store<ProfileSettings>;
22
- constructor({ api, notify, $user, $settings }: ProfileModelProps);
18
+ readonly $user: import("effector").Store<import("../shared/profile.types").ProfileUser | null>;
19
+ readonly $settings: import("effector").Store<ProfileSettings>;
20
+ constructor({ api, notify }: ProfileModelProps);
23
21
  private init;
24
22
  }
25
23
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/model/ProfileModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,eAAe,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAChC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;CAClC,CAAA;AAED,qBAAa,YAAY;IACvB,SAAgB,GAAG,EAAE,UAAU,CAAA;IAC/B,SAAgB,SAAS,EAAE,qBAAqB,CAAA;IAChD,SAAgB,QAAQ,EAAE,oBAAoB,CAAA;IAE9C,SAAgB,eAAe,4CAAyB;IACxD,SAAgB,WAAW,2CAAwB;IACnD,SAAgB,aAAa,sDAAmC;IAEhE,SAAgB,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAChD,SAAgB,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;gBAErC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,iBAAiB;IAUhE,OAAO,CAAC,IAAI;CAmBb"}
1
+ {"version":3,"file":"ProfileModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/model/ProfileModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAa,MAAM,6BAA6B,CAAA;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,eAAe,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;CACxB,CAAA;AAUD,qBAAa,YAAY;IACvB,SAAgB,IAAI,kDAElB;IAEF,SAAgB,GAAG,EAAE,UAAU,CAAA;IAC/B,SAAgB,SAAS,EAAE,qBAAqB,CAAA;IAChD,SAAgB,QAAQ,EAAE,oBAAoB,CAAA;IAE9C,SAAgB,eAAe,4CAAyB;IACxD,SAAgB,WAAW,2CAAwB;IACnD,SAAgB,aAAa,sDAAmC;IAEhE,SAAgB,KAAK,iFAA6C;IAClE,SAAgB,SAAS,4CAAiD;gBAE9D,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAQ9C,OAAO,CAAC,IAAI;CAmBb"}
@@ -13,6 +13,10 @@ export type ProfileSettings = {
13
13
  isTranslationLocked: boolean;
14
14
  };
15
15
  export type ProfileSettingsUpdate = Partial<ProfileSettings>;
16
+ export type ProfileGateProps = {
17
+ user: ProfileUser | null;
18
+ settings: ProfileSettings;
19
+ };
16
20
  export type JoinClassPayload = {
17
21
  classCode: string;
18
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"profile.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/shared/profile.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE7E,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,QAAQ,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,mBAAmB,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAE5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,qBAAqB,KAAK,IAAI,CAAA"}
1
+ {"version":3,"file":"profile.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/profile/shared/profile.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE7E,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,QAAQ,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,mBAAmB,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAE5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,eAAe,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,qBAAqB,KAAK,IAAI,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/students-features",
3
- "version": "1.8.6-rc.4",
3
+ "version": "1.8.6",
4
4
  "description": "Magmamath features library",
5
5
  "source": "src/index.ts",
6
6
  "main": "src/index.ts",
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
2
  import { ScrollView, StyleSheet, useWindowDimensions, View } from 'react-native'
3
+ import { useGate } from 'effector-react'
3
4
  import { COLORS, SPACING } from '@magmamath/react-native-ui'
4
5
 
5
6
  import { isWeb } from '../../shared/common.constants'
@@ -9,17 +10,20 @@ import { LanguageSettingsCard } from './components/settings/LanguageSettingsCard
9
10
  import { PreferencesCard } from './components/settings/PreferencesCard'
10
11
  import { TextSettingsCard } from './components/settings/TextSettingsCard'
11
12
  import { ProfileProvider, type ProfileContextValue } from './context/ProfileContext'
13
+ import type { ProfileGateProps } from './shared/profile.types'
12
14
 
13
- type ProfileProps = ProfileContextValue
15
+ type ProfileProps = ProfileContextValue & ProfileGateProps
14
16
 
15
17
  const TWO_COLUMN_BREAKPOINT = 768
16
18
  const COLUMN_MAX_WIDTH = 560
17
19
 
18
- export const Profile = (props: ProfileProps) => {
19
- const { showSolveMode, versionInfo } = props
20
+ export const Profile = ({ user, settings, ...props }: ProfileProps) => {
21
+ const { model, showSolveMode, versionInfo } = props
20
22
  const { width } = useWindowDimensions()
21
23
  const isTwoColumn = width >= TWO_COLUMN_BREAKPOINT
22
24
 
25
+ useGate(model.gate, { user, settings })
26
+
23
27
  return (
24
28
  <ProfileProvider value={props}>
25
29
  <ScrollView
@@ -1,4 +1,3 @@
1
- import { createStore } from 'effector'
2
1
  import { Language } from '@magmamath/frontend-config'
3
2
 
4
3
  import { JoinClassError } from '../shared/JoinClassError'
@@ -20,8 +19,6 @@ const createModel = (joinClass = jest.fn<Promise<JoinClassResult>, [unknown]>().
20
19
  const model = new ProfileModel({
21
20
  api: { updateSettings, joinClass },
22
21
  notify,
23
- $user: createStore<ProfileUser | null>(null),
24
- $settings: createStore<ProfileSettings>(baseSettings),
25
22
  })
26
23
  return { model, updateSettings, joinClass, notify }
27
24
  }
@@ -56,6 +53,14 @@ describe('ProfileModel settings', () => {
56
53
  model.language.setSearch('french')
57
54
  expect(model.language.$languages.getState()).toEqual([Language.FRENCH])
58
55
  })
56
+
57
+ it('derives user and settings from the gate', () => {
58
+ const { model } = createModel()
59
+ const user: ProfileUser = { fullName: 'Ada', username: 'ada', schoolName: 'Magma' }
60
+ model.gate.open({ user, settings: baseSettings })
61
+ expect(model.$user.getState()).toEqual(user)
62
+ expect(model.$settings.getState()).toEqual(baseSettings)
63
+ })
59
64
  })
60
65
 
61
66
  describe('ProfileModel join class', () => {
@@ -63,7 +68,7 @@ describe('ProfileModel join class', () => {
63
68
  const { model, joinClass } = createModel()
64
69
  model.joinClass.setCode('ABC')
65
70
  expect(model.joinClass.$isComplete.getState()).toBe(false)
66
- model.joinClass.submit()
71
+ model.joinClass.submitFx()
67
72
  expect(joinClass).not.toHaveBeenCalled()
68
73
  })
69
74
 
@@ -72,7 +77,7 @@ describe('ProfileModel join class', () => {
72
77
  model.joinClass.setCode('ABCDEF')
73
78
  expect(model.joinClass.$isComplete.getState()).toBe(true)
74
79
 
75
- model.joinClass.submit()
80
+ model.joinClass.submitFx()
76
81
  expect(joinClass).toHaveBeenCalledWith({ classCode: 'ABCDEF' })
77
82
 
78
83
  await new Promise((resolve) => setTimeout(resolve, 0))
@@ -89,7 +94,7 @@ describe('ProfileModel join class', () => {
89
94
  const { model, notify } = createModel(joinClass)
90
95
 
91
96
  model.joinClass.setCode('ABCDEF')
92
- model.joinClass.submit()
97
+ model.joinClass.submitFx()
93
98
 
94
99
  await new Promise((resolve) => setTimeout(resolve, 0))
95
100
  expect(notify).toHaveBeenCalledWith(
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useMemo } from 'react'
1
+ import React, { useMemo } from 'react'
2
2
  import { Animated, StyleSheet, Text, useWindowDimensions, View } from 'react-native'
3
3
  import { useUnit } from 'effector-react'
4
4
  import { CodeField, Cursor, useClearByFocusCell } from 'react-native-confirmation-code-field'
@@ -56,17 +56,21 @@ export const JoinClassModal = ({ modal: { closeModal, params } }: ProfileModalPr
56
56
  setValue: setCode,
57
57
  })
58
58
 
59
- useEffect(() => {
60
- const subscription = model.api.joinClassFx.finally.watch(() => closeModal())
61
- return () => subscription.unsubscribe()
62
- }, [model, closeModal])
59
+ const canSubmit = isComplete && !isPending
63
60
 
64
61
  const closeAndReset = () => {
65
62
  model.joinClass.reset()
66
63
  closeModal()
67
64
  }
68
65
 
69
- const submit = () => model.joinClass.submit()
66
+ const submit = async () => {
67
+ if (!canSubmit) return
68
+ try {
69
+ await model.joinClass.submitFx()
70
+ } finally {
71
+ closeModal()
72
+ }
73
+ }
70
74
 
71
75
  const keyboardHeight = useKeyboardOffset()
72
76
  const liftStyle = useMemo(
@@ -134,7 +138,7 @@ export const JoinClassModal = ({ modal: { closeModal, params } }: ProfileModalPr
134
138
  colorScheme={ButtonColor.ORANGE}
135
139
  size={ButtonSize.LARGE}
136
140
  onPress={submit}
137
- disabled={!isComplete || isPending}
141
+ disabled={!canSubmit}
138
142
  isLoading={isPending}
139
143
  testID={TEST_IDS.JOIN_CLASS_SUBMIT_BUTTON}
140
144
  style={buttonStyle}
@@ -1,4 +1,4 @@
1
- import { createEffect, createEvent, restore, sample } from 'effector'
1
+ import { attach, createEffect, createEvent, restore, sample } from 'effector'
2
2
 
3
3
  import { JoinClassError } from '../shared/JoinClassError'
4
4
  import { CLASS_CODE_LENGTH, JoinClassStatus } from '../shared/profile.constants'
@@ -9,14 +9,21 @@ import type { ProfileApi } from './ProfileApi'
9
9
  export class ProfileJoinClassModel {
10
10
  public readonly reset = createEvent()
11
11
  public readonly setCode = createEvent<string>()
12
- public readonly submit = createEvent()
13
12
 
14
13
  public readonly $code = restore(this.setCode, '').reset(this.reset)
15
14
  public readonly $isComplete = this.$code.map((code) => code.length === CLASS_CODE_LENGTH)
16
15
 
16
+ public readonly submitFx = attach({
17
+ source: this.$code,
18
+ effect: (classCode) => {
19
+ if (classCode.length !== CLASS_CODE_LENGTH) return
20
+ return this.api.joinClassFx({ classCode })
21
+ },
22
+ })
23
+
17
24
  constructor(
18
25
  private readonly api: ProfileApi,
19
- private readonly notify: NotifyJoinClass
26
+ private readonly notify: NotifyJoinClass,
20
27
  ) {
21
28
  this.init()
22
29
  }
@@ -24,14 +31,6 @@ export class ProfileJoinClassModel {
24
31
  private init() {
25
32
  const notifyFx = createEffect(this.notify)
26
33
 
27
- sample({
28
- clock: this.submit,
29
- source: this.$code,
30
- filter: (code) => code.length === CLASS_CODE_LENGTH,
31
- fn: (classCode) => ({ classCode }),
32
- target: this.api.joinClassFx,
33
- })
34
-
35
34
  sample({
36
35
  clock: this.api.joinClassFx.done,
37
36
  fn: ({ result }) => ({
@@ -1,7 +1,8 @@
1
- import { createEvent, sample, type Store } from 'effector'
1
+ import { createEvent, sample } from 'effector'
2
+ import { createGate } from 'effector-react'
2
3
 
3
- import type { ProfileCanvasType } from '../shared/profile.constants'
4
- import type { NotifyJoinClass, ProfileSettings, ProfileUser } from '../shared/profile.types'
4
+ import { ProfileCanvasType, TEXT_SIZE } from '../shared/profile.constants'
5
+ import type { NotifyJoinClass, ProfileGateProps, ProfileSettings } from '../shared/profile.types'
5
6
  import { ProfileApi, type ProfileApiProps } from './ProfileApi'
6
7
  import { ProfileJoinClassModel } from './ProfileJoinClassModel'
7
8
  import { ProfileLanguageModel } from './ProfileLanguageModel'
@@ -9,11 +10,21 @@ import { ProfileLanguageModel } from './ProfileLanguageModel'
9
10
  type ProfileModelProps = {
10
11
  api: ProfileApiProps
11
12
  notify: NotifyJoinClass
12
- $user: Store<ProfileUser | null>
13
- $settings: Store<ProfileSettings>
13
+ }
14
+
15
+ const DEFAULT_SETTINGS: ProfileSettings = {
16
+ textToSpeech: false,
17
+ textSize: TEXT_SIZE.MIN,
18
+ translationLanguage: null,
19
+ canvasType: ProfileCanvasType.DRAWING,
20
+ isTranslationLocked: false,
14
21
  }
15
22
 
16
23
  export class ProfileModel {
24
+ public readonly gate = createGate<ProfileGateProps>({
25
+ defaultState: { user: null, settings: DEFAULT_SETTINGS },
26
+ })
27
+
17
28
  public readonly api: ProfileApi
18
29
  public readonly joinClass: ProfileJoinClassModel
19
30
  public readonly language: ProfileLanguageModel
@@ -22,15 +33,13 @@ export class ProfileModel {
22
33
  public readonly setTextSize = createEvent<number>()
23
34
  public readonly setCanvasType = createEvent<ProfileCanvasType>()
24
35
 
25
- public readonly $user: Store<ProfileUser | null>
26
- public readonly $settings: Store<ProfileSettings>
36
+ public readonly $user = this.gate.state.map((state) => state.user)
37
+ public readonly $settings = this.gate.state.map((state) => state.settings)
27
38
 
28
- constructor({ api, notify, $user, $settings }: ProfileModelProps) {
39
+ constructor({ api, notify }: ProfileModelProps) {
29
40
  this.api = new ProfileApi(api)
30
41
  this.joinClass = new ProfileJoinClassModel(this.api, notify)
31
42
  this.language = new ProfileLanguageModel(this.api)
32
- this.$user = $user
33
- this.$settings = $settings
34
43
 
35
44
  this.init()
36
45
  }
@@ -18,6 +18,11 @@ export type ProfileSettings = {
18
18
 
19
19
  export type ProfileSettingsUpdate = Partial<ProfileSettings>
20
20
 
21
+ export type ProfileGateProps = {
22
+ user: ProfileUser | null
23
+ settings: ProfileSettings
24
+ }
25
+
21
26
  export type JoinClassPayload = {
22
27
  classCode: string
23
28
  }