@basiq/connect-auth 0.1.89 → 0.1.91

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.
@@ -1,4 +1,4 @@
1
- import React, { useState, createRef, useEffect } from 'react';
1
+ import React, { useState, useEffect, useCallback, createRef } from 'react';
2
2
  import styled, { css, keyframes, createGlobalStyle, ThemeProvider } from 'styled-components';
3
3
  import { useTranslation, Trans, initReactI18next } from 'react-i18next';
4
4
  import i18n from 'i18next';
@@ -466,6 +466,13 @@ var hexToRGBa = function hexToRGBa(hex, opacity) {
466
466
  var opp = opacity > 1 && opacity < 0 ? 1 : opacity;
467
467
  return "rgba(" + (hexToRGBA == null ? void 0 : hexToRGBA.concat(opp).join()) + ")";
468
468
  };
469
+ var handleUserKeyPress = function handleUserKeyPress(e, onEnter) {
470
+ var keyCode = e.keyCode;
471
+
472
+ if (keyCode === 13) {
473
+ onEnter();
474
+ }
475
+ };
469
476
 
470
477
  var DASHBOARD_API_URL_TEST = 'https://c9joivz12f.execute-api.ap-southeast-2.amazonaws.com/Development/';
471
478
  var DASHBOARD_API_URL = 'https://p4c8zn20r9.execute-api.ap-southeast-2.amazonaws.com/Production_v1/';
@@ -527,10 +534,10 @@ var theme = {
527
534
  },
528
535
  mixin: {
529
536
  subtitle: function subtitle() {
530
- return " margin-top: 8px;\n margin-bottom: 4px;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;";
537
+ return " margin-top: 32px;\n margin-bottom: 4px;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;";
531
538
  },
532
539
  title: function title() {
533
- return " font-size: 26px;\n line-height: 30px;\n letter-spacing: -0.2px;\n margin-top: 0;\n margin-bottom: 24px;\n color: #130f26;\n white-space: pre-line;\n ";
540
+ return " font-size: 26px;\n line-height: 30px;\n letter-spacing: -0.2px;\n margin-top: 0;\n margin-bottom: 0;\n color: #130f26;\n white-space: pre-line;\n ";
534
541
  }
535
542
  }
536
543
  };
@@ -626,13 +633,17 @@ var InputStyled = /*#__PURE__*/styled.input(_templateObject3$3 || (_templateObje
626
633
  return error ? theme.color.cerise : theme.color.endeavour;
627
634
  });
628
635
  var InputContainer = /*#__PURE__*/styled.div(_templateObject4$3 || (_templateObject4$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n"])));
629
- var DivAsLink = /*#__PURE__*/styled.div(_templateObject5$3 || (_templateObject5$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n\tcolor: ", ";\n\tdisplay: inherit;\n\tcursor: pointer;\n"])), function (_ref4) {
630
- var theme = _ref4.theme;
631
- return theme.color.endeavour;
636
+ var DivAsLink = /*#__PURE__*/styled.div(_templateObject5$3 || (_templateObject5$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n\tcolor: ", ";\n\tdisplay: inherit;\n\tcursor: ", ";\n"])), function (_ref4) {
637
+ var theme = _ref4.theme,
638
+ disabled = _ref4.disabled;
639
+ return disabled ? theme.color.casper : theme.color.endeavour;
640
+ }, function (_ref5) {
641
+ var disabled = _ref5.disabled;
642
+ return disabled ? 'not-allowed' : 'pointer';
632
643
  });
633
644
 
634
645
  var _templateObject$5;
635
- var InnerContainer = /*#__PURE__*/styled.div(_templateObject$5 || (_templateObject$5 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n\tmargin-top: 16px;\n\twidth: 100%;\n"])));
646
+ var InnerContainer = /*#__PURE__*/styled.div(_templateObject$5 || (_templateObject$5 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n\twidth: 100%;\n"])));
636
647
 
637
648
  var _templateObject$6, _templateObject2$5, _templateObject3$4, _templateObject4$4;
638
649
  var PageStatusScreenMain = /*#__PURE__*/styled(PageMainContainer)(_templateObject$6 || (_templateObject$6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n\theight: 100%;\n"])));
@@ -691,7 +702,7 @@ var MarkW1GBold = "data:font/otf;base64,T1RUTwANAIAAAwBQQ0ZGICwMZMIAACp0AAFDmERT
691
702
  var _templateObject$8;
692
703
  var GlobalStyles = /*#__PURE__*/createGlobalStyle(_templateObject$8 || (_templateObject$8 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n \n@font-face {\n font-family: MarkW1G;\n src: url(", ") format('opentype');\n }\n @font-face {\n font-family: MarkW1G;\n font-weight: bold;\n src: url(", ") format('opentype');\n }\n\nbody{\n font-family: 'MarkW1G', sans-serif;\n}\nbody * {\n font-family: 'MarkW1G', sans-serif;\n font-size: 14px;\n font-style: normal;\n}\n"])), MarkW1GBook, MarkW1GBold);
693
704
 
694
- var img = "data:image/svg+xml,%3c!-- Generated by IcoMoon.io --%3e%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='1024' height='1024' viewBox='0 0 1024 1024'%3e%3ctitle%3e%3c/title%3e%3cg id='icomoon-ignore'%3e%3c/g%3e%3cpath fill='black' d='M682.667 469.333h-241.493l53.333-55.893c7.287-7.645 11.77-18.019 11.77-29.44 0-23.584-19.119-42.703-42.703-42.703-12.164 0-23.139 5.085-30.917 13.246l-0.016 0.017-122.027 128c-1.338 1.628-2.607 3.44-3.731 5.347l-0.109 0.199c-1.886 2.326-3.467 5.004-4.62 7.899l-0.073 0.207c-1.426 3.52-2.347 7.596-2.557 11.859l-0.003 0.088-0.853 3.84c0.073 5.873 1.322 11.435 3.52 16.489l-0.107-0.275c2.2 5.299 5.227 9.831 8.968 13.662l127.992 127.992c7.733 7.795 18.45 12.621 30.293 12.621s22.56-4.826 30.291-12.618l0.003-0.003c7.795-7.733 12.621-18.45 12.621-30.293s-4.826-22.56-12.618-30.291l-0.003-0.003-55.467-54.613h238.507c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667v0z'%3e%3c/path%3e%3cpath fill='black' d='M512 85.333c-235.641 0-426.667 191.025-426.667 426.667s191.025 426.667 426.667 426.667c235.641 0 426.667-191.025 426.667-426.667v0c0-235.641-191.025-426.667-426.667-426.667v0zM512 853.333c-188.513 0-341.333-152.82-341.333-341.333s152.82-341.333 341.333-341.333c188.513 0 341.333 152.82 341.333 341.333v0c0 188.513-152.82 341.333-341.333 341.333v0z'%3e%3c/path%3e%3c/svg%3e";
705
+ var img = "data:image/svg+xml,%3csvg width='21' height='21' viewBox='0 0 21 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.25 1.75C5.55621 1.75 1.75 5.55621 1.75 10.25C1.75 14.9447 5.55616 18.75 10.25 18.75C14.9438 18.75 18.75 14.9447 18.75 10.25C18.75 5.55621 14.9438 1.75 10.25 1.75ZM0.25 10.25C0.25 4.72779 4.72779 0.25 10.25 0.25C15.7722 0.25 20.25 4.72779 20.25 10.25C20.25 15.7733 15.7722 20.25 10.25 20.25C4.72784 20.25 0.25 15.7733 0.25 10.25ZM12.2238 6.25001C12.516 6.54354 12.515 7.01841 12.2215 7.31067L9.26925 10.2502L12.2215 13.1897C12.515 13.482 12.516 13.9569 12.2238 14.2504C11.9315 14.5439 11.4566 14.5449 11.1631 14.2527L7.67711 10.7817C7.53576 10.6409 7.4563 10.4497 7.4563 10.2502C7.4563 10.0507 7.53576 9.85947 7.67711 9.71873L11.1631 6.24773C11.4566 5.95547 11.9315 5.95649 12.2238 6.25001Z' fill='black'/%3e%3c/svg%3e";
695
706
 
696
707
  function Button(props) {
697
708
  var onClick = props.onClick,
@@ -875,34 +886,35 @@ var authUser = /*#__PURE__*/function () {
875
886
  },
876
887
  method: method || 'POST'
877
888
  };
878
- _context2.next = 4;
889
+ _context2.prev = 2;
890
+ _context2.next = 5;
879
891
  return fetch((test ? DASHBOARD_API_URL_TEST : DASHBOARD_API_URL) + "client_auth/" + authRequestId, reqData);
880
892
 
881
- case 4:
893
+ case 5:
882
894
  result = _context2.sent;
883
895
 
884
896
  if (!(result.status >= 200 && result.status < 300)) {
885
- _context2.next = 15;
897
+ _context2.next = 16;
886
898
  break;
887
899
  }
888
900
 
889
901
  if (!(result.status === 204)) {
890
- _context2.next = 10;
902
+ _context2.next = 11;
891
903
  break;
892
904
  }
893
905
 
894
906
  _context2.t0 = null;
895
- _context2.next = 13;
907
+ _context2.next = 14;
896
908
  break;
897
909
 
898
- case 10:
899
- _context2.next = 12;
910
+ case 11:
911
+ _context2.next = 13;
900
912
  return result.json();
901
913
 
902
- case 12:
914
+ case 13:
903
915
  _context2.t0 = _context2.sent;
904
916
 
905
- case 13:
917
+ case 14:
906
918
  json = _context2.t0;
907
919
  return _context2.abrupt("return", {
908
920
  data: json,
@@ -911,29 +923,29 @@ var authUser = /*#__PURE__*/function () {
911
923
  ok: true
912
924
  });
913
925
 
914
- case 15:
926
+ case 16:
915
927
  if (!(result.status >= 400)) {
916
- _context2.next = 25;
928
+ _context2.next = 26;
917
929
  break;
918
930
  }
919
931
 
920
932
  if (![403, 404].includes(result.status)) {
921
- _context2.next = 20;
933
+ _context2.next = 21;
922
934
  break;
923
935
  }
924
936
 
925
937
  _context2.t1 = null;
926
- _context2.next = 23;
938
+ _context2.next = 24;
927
939
  break;
928
940
 
929
- case 20:
930
- _context2.next = 22;
941
+ case 21:
942
+ _context2.next = 23;
931
943
  return result.json();
932
944
 
933
- case 22:
945
+ case 23:
934
946
  _context2.t1 = _context2.sent;
935
947
 
936
- case 23:
948
+ case 24:
937
949
  _json = _context2.t1;
938
950
  return _context2.abrupt("return", {
939
951
  headers: result.headers,
@@ -942,7 +954,7 @@ var authUser = /*#__PURE__*/function () {
942
954
  ok: false
943
955
  });
944
956
 
945
- case 25:
957
+ case 26:
946
958
  return _context2.abrupt("return", {
947
959
  headers: result.headers,
948
960
  statusCode: result.status,
@@ -950,12 +962,21 @@ var authUser = /*#__PURE__*/function () {
950
962
  ok: false
951
963
  });
952
964
 
953
- case 26:
965
+ case 29:
966
+ _context2.prev = 29;
967
+ _context2.t2 = _context2["catch"](2);
968
+ return _context2.abrupt("return", {
969
+ statusCode: 500,
970
+ error: 'Something went wrong',
971
+ ok: false
972
+ });
973
+
974
+ case 32:
954
975
  case "end":
955
976
  return _context2.stop();
956
977
  }
957
978
  }
958
- }, _callee2);
979
+ }, _callee2, null, [[2, 29]]);
959
980
  }));
960
981
 
961
982
  return function authUser(_x2) {
@@ -1018,6 +1039,17 @@ function StartScreen(props) {
1018
1039
  var _useTranslation = useTranslation(),
1019
1040
  t = _useTranslation.t;
1020
1041
 
1042
+ useEffect(function () {
1043
+ window.addEventListener('keydown', function (e) {
1044
+ return handleUserKeyPress(e, onContinue);
1045
+ });
1046
+ return function () {
1047
+ window.removeEventListener('keydown', function (e) {
1048
+ return handleUserKeyPress(e, onContinue);
1049
+ });
1050
+ };
1051
+ }, []);
1052
+
1021
1053
  var handleContinue = /*#__PURE__*/function () {
1022
1054
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
1023
1055
  var response;
@@ -1105,9 +1137,13 @@ function StartScreen(props) {
1105
1137
  bold: React.createElement("strong", null)
1106
1138
  }
1107
1139
  }))), React.createElement(H4Styled, null, t('things_you_should_know')), React.createElement("ul", null, React.createElement("li", null, t('we_dont_share_your_data_without_your_consent')), React.createElement("li", null, t('you_can_easily_stop_sharing_your_data_at_any_time')), React.createElement("li", null, t('you_can_choose_to_delete_shared_data_when_we_no_longer_need_it'))), React.createElement(Spacer, null), React.createElement("span", null, React.createElement(React.Fragment, null, t('by_proceeding_you_agree_to_the'), ' ', React.createElement("a", {
1108
- href: "https://docs.basiq.io/en/articles/415750-basiq-terms-of-service"
1140
+ href: "https://docs.basiq.io/en/articles/415750-basiq-terms-of-service",
1141
+ rel: "noreferrer",
1142
+ target: "_blank"
1109
1143
  }, t('terms_of_service')), " ", t('and'), ' ', React.createElement("a", {
1110
- href: "https://docs.basiq.io/en/articles/382581-basiq-privacy-policy"
1144
+ href: "https://docs.basiq.io/en/articles/382581-basiq-privacy-policy",
1145
+ rel: "noreferrer",
1146
+ target: "_blank"
1111
1147
  }, t('privacy_notice')))), React.createElement(LoadingModal, {
1112
1148
  isOpen: loading
1113
1149
  })));
@@ -1136,36 +1172,43 @@ function AuthScreen(_ref) {
1136
1172
  setResend = _useState3[1];
1137
1173
 
1138
1174
  var _useState4 = useState(false),
1139
- loading = _useState4[0],
1140
- setLoading = _useState4[1];
1175
+ resendLoading = _useState4[0],
1176
+ setResendLoading = _useState4[1];
1141
1177
 
1142
- var handleCodeApply = /*#__PURE__*/function () {
1143
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
1144
- var _response$data;
1178
+ var _useState5 = useState(false),
1179
+ loading = _useState5[0],
1180
+ setLoading = _useState5[1];
1145
1181
 
1146
- var response, _response$data2;
1182
+ var handleCodeApply = useCallback( /*#__PURE__*/function () {
1183
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(e) {
1184
+ var _response$data, response, _response$data2;
1147
1185
 
1148
1186
  return _regeneratorRuntime().wrap(function _callee$(_context) {
1149
1187
  while (1) {
1150
1188
  switch (_context.prev = _context.next) {
1151
1189
  case 0:
1190
+ if (!(smsCode.length === 4 && error.length === 0 && (!e || (e == null ? void 0 : e.charCode) === 13))) {
1191
+ _context.next = 7;
1192
+ break;
1193
+ }
1194
+
1152
1195
  setLoading(true);
1153
- _context.next = 3;
1196
+ _context.next = 4;
1154
1197
  return verifySmsCode({
1155
1198
  authRequestId: authRequestId,
1156
1199
  smsCode: smsCode,
1157
1200
  test: test
1158
1201
  });
1159
1202
 
1160
- case 3:
1203
+ case 4:
1161
1204
  response = _context.sent;
1162
- setLoading(false);
1163
1205
 
1164
1206
  if (response != null && (_response$data = response.data) != null && _response$data.access_token) {
1165
- window.open("https://consent.basiq.io/home?token=" + (response == null ? void 0 : (_response$data2 = response.data) == null ? void 0 : _response$data2.access_token));
1207
+ window.open("https://consent.basiq.io/home?token=" + (response == null ? void 0 : (_response$data2 = response.data) == null ? void 0 : _response$data2.access_token), "_self");
1166
1208
  }
1167
1209
 
1168
1210
  if (response != null && response.error) {
1211
+ setLoading(false);
1169
1212
  setError(t('this_code_doesnt_appear_to_be_valid'));
1170
1213
  }
1171
1214
 
@@ -1177,16 +1220,16 @@ function AuthScreen(_ref) {
1177
1220
  }, _callee);
1178
1221
  }));
1179
1222
 
1180
- return function handleCodeApply() {
1223
+ return function (_x) {
1181
1224
  return _ref2.apply(this, arguments);
1182
1225
  };
1183
- }();
1184
-
1226
+ }(), [smsCode, error, authRequestId]);
1185
1227
  var buttons = [{
1186
1228
  label: t('continue'),
1187
1229
  onClick: function onClick() {
1188
1230
  return handleCodeApply();
1189
- }
1231
+ },
1232
+ disabled: smsCode.length < 4 || !!error
1190
1233
  }];
1191
1234
 
1192
1235
  var handleResend = /*#__PURE__*/function () {
@@ -1198,16 +1241,17 @@ function AuthScreen(_ref) {
1198
1241
  case 0:
1199
1242
  setError('');
1200
1243
  setSmsCode('');
1201
- setLoading(true);
1202
- _context2.next = 5;
1244
+ setResend(false);
1245
+ setResendLoading(true);
1246
+ _context2.next = 6;
1203
1247
  return authUser({
1204
1248
  authRequestId: authRequestId,
1205
1249
  test: test
1206
1250
  });
1207
1251
 
1208
- case 5:
1252
+ case 6:
1209
1253
  response = _context2.sent;
1210
- setLoading(false);
1254
+ setResendLoading(false);
1211
1255
 
1212
1256
  if (response.error) {
1213
1257
  setError(t('failed_to_send_sms'));
@@ -1215,7 +1259,7 @@ function AuthScreen(_ref) {
1215
1259
  setResend(true);
1216
1260
  }
1217
1261
 
1218
- case 8:
1262
+ case 9:
1219
1263
  case "end":
1220
1264
  return _context2.stop();
1221
1265
  }
@@ -1231,7 +1275,10 @@ function AuthScreen(_ref) {
1231
1275
  var handleInput = function handleInput(e) {
1232
1276
  setError('');
1233
1277
  setResend(false);
1234
- setSmsCode(e.target.value);
1278
+
1279
+ if (/^([0-9]+)$/.test(e.target.value) || e.target.value === '') {
1280
+ setSmsCode(e.target.value);
1281
+ }
1235
1282
  };
1236
1283
 
1237
1284
  return React.createElement(Page, {
@@ -1251,12 +1298,16 @@ function AuthScreen(_ref) {
1251
1298
  onChange: handleInput,
1252
1299
  value: smsCode,
1253
1300
  filled: smsCode.length === 4,
1254
- error: !!error
1301
+ error: !!error,
1302
+ onKeyPress: function onKeyPress(e) {
1303
+ return handleCodeApply(e);
1304
+ }
1255
1305
  })), React.createElement(PageConnectFooterControl, null, resend && React.createElement(StatusMessage, null, t('new_sms_code_has_been_sent')), !!error && React.createElement(StatusMessage, {
1256
1306
  error: true
1257
1307
  }, error), React.createElement(PageConnectFooterText, null, React.createElement("span", null, React.createElement(React.Fragment, null, t('didnt_receive_the_code'), " ", React.createElement(DivAsLink, {
1308
+ disabled: resendLoading,
1258
1309
  onClick: function onClick() {
1259
- return handleResend();
1310
+ return !resendLoading && handleResend();
1260
1311
  }
1261
1312
  }, t('resend_sms')))))), React.createElement(LoadingModal, {
1262
1313
  isOpen: loading
@@ -1264,6 +1315,7 @@ function AuthScreen(_ref) {
1264
1315
  }
1265
1316
 
1266
1317
  function App(props) {
1318
+ var test = props.test;
1267
1319
  var ref = createRef();
1268
1320
 
1269
1321
  var _useState = useState(false),
@@ -1302,6 +1354,11 @@ function App(props) {
1302
1354
  setShadow(detectScrollToBottom(event));
1303
1355
  };
1304
1356
 
1357
+ var showErrorScreen = function showErrorScreen(code) {
1358
+ setErrorCode(code);
1359
+ setCurrentScreen(3);
1360
+ };
1361
+
1305
1362
  useEffect(function () {
1306
1363
  var getData = /*#__PURE__*/function () {
1307
1364
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
@@ -1324,7 +1381,7 @@ function App(props) {
1324
1381
  return authUser({
1325
1382
  authRequestId: id,
1326
1383
  method: 'GET',
1327
- test: props.test
1384
+ test: test
1328
1385
  });
1329
1386
 
1330
1387
  case 6:
@@ -1370,11 +1427,6 @@ function App(props) {
1370
1427
  getData();
1371
1428
  }, []);
1372
1429
 
1373
- var showErrorScreen = function showErrorScreen(code) {
1374
- setErrorCode(code);
1375
- setCurrentScreen(3);
1376
- };
1377
-
1378
1430
  var getScreen = function getScreen() {
1379
1431
  switch (currentScreen) {
1380
1432
  case 0:
@@ -1394,7 +1446,7 @@ function App(props) {
1394
1446
  return setCurrentScreen(2);
1395
1447
  },
1396
1448
  authRequestId: authId,
1397
- test: props.test
1449
+ test: test
1398
1450
  });
1399
1451
 
1400
1452
  case 2:
@@ -1405,7 +1457,7 @@ function App(props) {
1405
1457
  },
1406
1458
  shadow: shadow,
1407
1459
  authRequestId: authId,
1408
- test: props.test
1460
+ test: test
1409
1461
  });
1410
1462
 
1411
1463
  case 3:
@@ -1503,10 +1555,11 @@ i18n.use(initReactI18next) // passes i18n down to react-i18next
1503
1555
  });
1504
1556
 
1505
1557
  function BasiqConnect(props) {
1558
+ var test = props.test;
1506
1559
  return React.createElement(React.StrictMode, null, React.createElement(ThemeProvider, {
1507
1560
  theme: theme
1508
1561
  }, React.createElement(App, {
1509
- test: props.test
1562
+ test: test
1510
1563
  })));
1511
1564
  }
1512
1565