@@ -82,8 +82,10 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
82
82
String ? _pairingAtsign;
83
83
84
84
ServerStatus ? atSignStatus;
85
- final String _incorrectKeyFile = AtOnboardingLocalizations .current.msg_cannot_fetch_keys_from_chosen_file;
86
- final String _failedFileProcessing = AtOnboardingLocalizations .current.error_processing_files;
85
+ final String _incorrectKeyFile =
86
+ AtOnboardingLocalizations .current.msg_cannot_fetch_keys_from_chosen_file;
87
+ final String _failedFileProcessing =
88
+ AtOnboardingLocalizations .current.error_processing_files;
87
89
88
90
late AtSyncDialog _inprogressDialog;
89
91
@@ -142,7 +144,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
142
144
// width: _dialogWidth,
143
145
decoration: BoxDecoration (
144
146
color: theme.primaryColor.withOpacity (0.1 ),
145
- borderRadius: BorderRadius .circular (AtOnboardingDimens .borderRadius)),
147
+ borderRadius:
148
+ BorderRadius .circular (AtOnboardingDimens .borderRadius)),
146
149
padding: const EdgeInsets .all (AtOnboardingDimens .paddingNormal),
147
150
margin: const EdgeInsets .all (AtOnboardingDimens .paddingNormal),
148
151
constraints: const BoxConstraints (
@@ -165,7 +168,9 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
165
168
key: keyUploadAtSign,
166
169
height: 48 ,
167
170
borderRadius: 24 ,
168
- onPressed: (Platform .isMacOS || Platform .isLinux || Platform .isWindows)
171
+ onPressed: (Platform .isMacOS ||
172
+ Platform .isLinux ||
173
+ Platform .isWindows)
169
174
? _uploadKeyFileForDesktop
170
175
: _uploadKeyFile,
171
176
isLoading: loading,
@@ -206,8 +211,10 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
206
211
mainAxisAlignment: MainAxisAlignment .center,
207
212
children: [
208
213
Text (
209
- AtOnboardingLocalizations .current.btn_activate_atSign,
210
- style: const TextStyle (fontSize: AtOnboardingDimens .fontLarge),
214
+ AtOnboardingLocalizations
215
+ .current.btn_activate_atSign,
216
+ style: const TextStyle (
217
+ fontSize: AtOnboardingDimens .fontLarge),
211
218
),
212
219
const Icon (Icons .arrow_right_alt_rounded)
213
220
],
@@ -228,7 +235,9 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
228
235
required String secret,
229
236
}) {
230
237
String cramSecret = secret.split (':' ).last;
231
- String atsign = atSign.startsWith ('@' ) ? atSign : '@$atSign ' ;
238
+ String atsign = atSign.startsWith ('@' )
239
+ ? atSign
240
+ : '@$atSign ' ;
232
241
_processSharedSecret (atsign, cramSecret);
233
242
},
234
243
config: widget.config,
@@ -291,8 +300,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
291
300
String decodeQrCode (String imagepath) {
292
301
var image = img.decodePng (File (imagepath).readAsBytesSync ())! ;
293
302
294
- LuminanceSource source = RGBLuminanceSource (
295
- image.width, image.height, image. getBytes (order: img.ChannelOrder .abgr).buffer.asInt32List ());
303
+ LuminanceSource source = RGBLuminanceSource (image.width, image.height,
304
+ image.getBytes (order: img.ChannelOrder .abgr).buffer.asInt32List ());
296
305
var bitmap = BinaryBitmap (HybridBinarizer (source));
297
306
298
307
var reader = QRCodeReader ();
@@ -350,7 +359,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
350
359
child: Text (
351
360
(Platform .isAndroid || Platform .isIOS)
352
361
? AtOnboardingLocalizations .current.tutorial_scan_QRCode
353
- : AtOnboardingLocalizations .current.tutorial_upload_image_QRCode,
362
+ : AtOnboardingLocalizations
363
+ .current.tutorial_upload_image_QRCode,
354
364
style: const TextStyle (
355
365
color: Colors .white,
356
366
fontWeight: FontWeight .w500,
@@ -378,7 +388,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
378
388
builder: (context, controller) {
379
389
return Center (
380
390
child: Text (
381
- AtOnboardingLocalizations .current.tutorial_activate_your_atSign,
391
+ AtOnboardingLocalizations
392
+ .current.tutorial_activate_your_atSign,
382
393
style: const TextStyle (
383
394
color: Colors .white,
384
395
fontWeight: FontWeight .w500,
@@ -425,7 +436,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
425
436
}
426
437
427
438
Future <void > showErrorDialog (String ? errorMessage) async {
428
- return AtOnboardingDialog .showError (context: context, message: errorMessage ?? '' );
439
+ return AtOnboardingDialog .showError (
440
+ context: context, message: errorMessage ?? '' );
429
441
}
430
442
431
443
bool skipTutorial () {
@@ -437,13 +449,15 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
437
449
if (widget.config.tutorialDisplay == AtOnboardingTutorialDisplay .always) {
438
450
await Future .delayed (const Duration (milliseconds: 300 ));
439
451
_showTutorial ();
440
- } else if (widget.config.tutorialDisplay == AtOnboardingTutorialDisplay .never) {
452
+ } else if (widget.config.tutorialDisplay ==
453
+ AtOnboardingTutorialDisplay .never) {
441
454
return ;
442
455
} else {
443
456
final result = await AtOnboardingTutorialService .checkShowTutorial ();
444
457
if (! result) {
445
458
await Future .delayed (const Duration (milliseconds: 300 ));
446
- final result = await AtOnboardingTutorialService .hasShowTutorialSignIn ();
459
+ final result =
460
+ await AtOnboardingTutorialService .hasShowTutorialSignIn ();
447
461
if (! result) {
448
462
_showTutorial ();
449
463
}
@@ -477,7 +491,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
477
491
await _checkShowTutorial ();
478
492
}
479
493
480
- Future <void > _processAESKey (String ? atsign, String ? aesKey, String contents) async {
494
+ Future <void > _processAESKey (
495
+ String ? atsign, String ? aesKey, String contents) async {
481
496
dynamic authResponse;
482
497
assert (aesKey != null || aesKey != '' );
483
498
assert (atsign != null || atsign != '' );
@@ -494,7 +509,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
494
509
return ;
495
510
}
496
511
497
- _onboardingService.setAtClientPreference = widget.config.atClientPreference;
512
+ _onboardingService.setAtClientPreference =
513
+ widget.config.atClientPreference;
498
514
499
515
authResponse = await _onboardingService.authenticate (
500
516
atsign,
@@ -549,16 +565,22 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
549
565
bool isExist = await _onboardingService.isExistingAtsign (atsign);
550
566
if (isExist) {
551
567
_inprogressDialog.close ();
552
- await _showAlertDialog (AtOnboardingErrorToString ().pairedAtsign (atsign));
568
+ await _showAlertDialog (
569
+ AtOnboardingErrorToString ().pairedAtsign (atsign));
553
570
return ;
554
571
}
555
572
556
573
//Delay for waiting for ServerStatus change to teapot when activating an atsign
557
574
await Future .delayed (const Duration (seconds: 10 ));
558
575
559
- _onboardingService.setAtClientPreference = widget.config.atClientPreference;
576
+ _onboardingService.setAtClientPreference =
577
+ widget.config.atClientPreference;
560
578
561
- authResponse = await _onboardingService.authenticate (atsign, cramSecret: secret, status: widget.onboardStatus);
579
+ String ? previousAtsign = _onboardingService.currentAtsign;
580
+ _onboardingService.setAtsign = atsign;
581
+ authResponse = await _onboardingService.onboard (
582
+ cramSecret: secret,
583
+ );
562
584
563
585
int round = 1 ;
564
586
atSignStatus = await _onboardingService.checkAtSignServerStatus (atsign);
@@ -574,6 +596,12 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
574
596
}
575
597
576
598
_inprogressDialog.close ();
599
+
600
+ if (authResponse != AtOnboardingResponseStatus .authSuccess ||
601
+ atSignStatus == ServerStatus .teapot) {
602
+ _onboardingService.setAtsign = previousAtsign;
603
+ }
604
+
577
605
if (authResponse == AtOnboardingResponseStatus .authSuccess) {
578
606
if (atSignStatus == ServerStatus .teapot) {
579
607
await _showAlertDialog (
@@ -615,7 +643,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
615
643
e,
616
644
title: AtOnboardingLocalizations .current.msg_auth_failed,
617
645
);
618
- } else if (e == AtOnboardingResponseStatus .serverNotReached && _isContinue) {
646
+ } else if (e == AtOnboardingResponseStatus .serverNotReached &&
647
+ _isContinue) {
619
648
await _processSharedSecret (atsign, secret);
620
649
} else if (e == AtOnboardingResponseStatus .timeOut) {
621
650
await _showAlertDialog (
@@ -670,8 +699,10 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
670
699
}
671
700
672
701
Future <void > _showAlertDialog (dynamic errorMessage, {String ? title}) async {
673
- String ? messageString = AtOnboardingErrorToString ().getErrorMessage (errorMessage);
674
- return AtOnboardingDialog .showError (context: context, title: title, message: messageString);
702
+ String ? messageString =
703
+ AtOnboardingErrorToString ().getErrorMessage (errorMessage);
704
+ return AtOnboardingDialog .showError (
705
+ context: context, title: title, message: messageString);
675
706
}
676
707
677
708
void _showReferenceWebview () {
@@ -717,7 +748,8 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
717
748
}
718
749
_isContinue = true ;
719
750
String ? fileContents, aesKey, atsign;
720
- FilePickerResult ? result = await FilePicker .platform.pickFiles (type: FileType .any);
751
+ FilePickerResult ? result =
752
+ await FilePicker .platform.pickFiles (type: FileType .any);
721
753
if ((result? .files ?? []).isEmpty) {
722
754
//User cancelled => do nothing
723
755
return ;
@@ -745,7 +777,9 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
745
777
for (ArchiveFile file in archive) {
746
778
if (file.name.contains ('atKeys' )) {
747
779
fileContents = String .fromCharCodes (file.content);
748
- } else if (aesKey == null && atsign == null && file.name.contains ('_private_key.png' )) {
780
+ } else if (aesKey == null &&
781
+ atsign == null &&
782
+ file.name.contains ('_private_key.png' )) {
749
783
List <int > bytes = file.content as List <int >;
750
784
String path = (await path_provider.getTemporaryDirectory ()).path;
751
785
File file1 = await File ('${path }test' ).create ();
@@ -760,7 +794,9 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
760
794
}
761
795
} else if (pickedFile.name.contains ('atKeys' )) {
762
796
fileContents = File (path.toString ()).readAsStringSync ();
763
- } else if (aesKey == null && atsign == null && pickedFile.name.contains ('_private_key.png' )) {
797
+ } else if (aesKey == null &&
798
+ atsign == null &&
799
+ pickedFile.name.contains ('_private_key.png' )) {
764
800
//read scan QRcode and extract atsign,aeskey
765
801
var result = decodeQrCode (path);
766
802
@@ -783,7 +819,10 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
783
819
}
784
820
if (aesKey == null && atsign == null && fileContents != null ) {
785
821
List <String > keyData = fileContents.split (',"@' );
786
- List <String > params = keyData[1 ].toString ().substring (0 , keyData[1 ].length - 2 ).split ('":"' );
822
+ List <String > params = keyData[1 ]
823
+ .toString ()
824
+ .substring (0 , keyData[1 ].length - 2 )
825
+ .split ('":"' );
787
826
atsign = "@${params [0 ]}" ;
788
827
Map <String , dynamic > keyMap = jsonDecode (fileContents);
789
828
aesKey = keyMap[AtOnboardingConstants .atSelfEncryptionKey];
@@ -794,8 +833,11 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
794
833
loading = false ;
795
834
});
796
835
return ;
797
- } else if (OnboardingService .getInstance ().formatAtSign (atsign) != _pairingAtsign && _pairingAtsign != null ) {
798
- await showErrorDialog (AtOnboardingErrorToString ().atsignMismatch (_pairingAtsign));
836
+ } else if (OnboardingService .getInstance ().formatAtSign (atsign) !=
837
+ _pairingAtsign &&
838
+ _pairingAtsign != null ) {
839
+ await showErrorDialog (
840
+ AtOnboardingErrorToString ().atsignMismatch (_pairingAtsign));
799
841
setState (() {
800
842
loading = false ;
801
843
});
@@ -841,7 +883,10 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
841
883
// ignore: unnecessary_null_comparison
842
884
if (aesKey == null && atsign == null && fileContents.isNotEmpty) {
843
885
List <String > keyData = fileContents.split (',"@' );
844
- List <String > params = keyData[1 ].toString ().substring (0 , keyData[1 ].length - 2 ).split ('":"' );
886
+ List <String > params = keyData[1 ]
887
+ .toString ()
888
+ .substring (0 , keyData[1 ].length - 2 )
889
+ .split ('":"' );
845
890
atsign = "@${params [0 ]}" ;
846
891
Map <String , dynamic > keyMap = jsonDecode (fileContents);
847
892
aesKey = keyMap[AtOnboardingConstants .atSelfEncryptionKey];
@@ -852,8 +897,11 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
852
897
loading = false ;
853
898
});
854
899
return ;
855
- } else if (OnboardingService .getInstance ().formatAtSign (atsign) != _pairingAtsign && _pairingAtsign != null ) {
856
- await showErrorDialog (AtOnboardingErrorToString ().atsignMismatch (_pairingAtsign));
900
+ } else if (OnboardingService .getInstance ().formatAtSign (atsign) !=
901
+ _pairingAtsign &&
902
+ _pairingAtsign != null ) {
903
+ await showErrorDialog (
904
+ AtOnboardingErrorToString ().atsignMismatch (_pairingAtsign));
857
905
setState (() {
858
906
loading = false ;
859
907
});
@@ -873,10 +921,14 @@ class _AtOnboardingHomeScreenState extends State<AtOnboardingHomeScreen> {
873
921
}
874
922
875
923
bool _validatePickedFileContents (String fileContents) {
876
- bool result = fileContents.contains (BackupKeyConstants .PKAM_PRIVATE_KEY_FROM_KEY_FILE ) &&
877
- fileContents.contains (BackupKeyConstants .PKAM_PUBLIC_KEY_FROM_KEY_FILE ) &&
878
- fileContents.contains (BackupKeyConstants .ENCRYPTION_PRIVATE_KEY_FROM_FILE ) &&
879
- fileContents.contains (BackupKeyConstants .ENCRYPTION_PUBLIC_KEY_FROM_FILE ) &&
924
+ bool result = fileContents
925
+ .contains (BackupKeyConstants .PKAM_PRIVATE_KEY_FROM_KEY_FILE ) &&
926
+ fileContents
927
+ .contains (BackupKeyConstants .PKAM_PUBLIC_KEY_FROM_KEY_FILE ) &&
928
+ fileContents
929
+ .contains (BackupKeyConstants .ENCRYPTION_PRIVATE_KEY_FROM_FILE ) &&
930
+ fileContents
931
+ .contains (BackupKeyConstants .ENCRYPTION_PUBLIC_KEY_FROM_FILE ) &&
880
932
fileContents.contains (BackupKeyConstants .SELF_ENCRYPTION_KEY_FROM_FILE );
881
933
return result;
882
934
}
0 commit comments