|
|
|
|
@ -29,12 +29,15 @@ class UserSettingsState extends State<UserSettingsPage> {
|
|
|
|
|
|
|
|
|
|
String? selectedLanguageError;
|
|
|
|
|
String? profileCreationError;
|
|
|
|
|
String? tncError;
|
|
|
|
|
|
|
|
|
|
bool loading = false;
|
|
|
|
|
|
|
|
|
|
Uint8List? avatar;
|
|
|
|
|
String? _selectedFilePath;
|
|
|
|
|
|
|
|
|
|
bool isTncChecked = false;
|
|
|
|
|
|
|
|
|
|
List<String> avatarPaths = const [
|
|
|
|
|
"assets/pangea/Avatar_1.png",
|
|
|
|
|
"assets/pangea/Avatar_2.png",
|
|
|
|
|
@ -52,7 +55,6 @@ class UserSettingsState extends State<UserSettingsPage> {
|
|
|
|
|
: PangeaLanguage.byLangCode(systemLangCode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool canSetDisplayName = false;
|
|
|
|
|
TextEditingController displayNameController = TextEditingController();
|
|
|
|
|
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
|
|
|
|
|
|
|
|
|
@ -61,19 +63,31 @@ class UserSettingsState extends State<UserSettingsPage> {
|
|
|
|
|
super.initState();
|
|
|
|
|
selectedTargetLanguage = _pangeaController.languageController.userL2;
|
|
|
|
|
selectedAvatarPath = avatarPaths.first;
|
|
|
|
|
final loginTypeEntry =
|
|
|
|
|
_pangeaController.pStoreService.read(PLocalKey.loginType);
|
|
|
|
|
if (loginTypeEntry is String && loginTypeEntry == 'sso') {
|
|
|
|
|
canSetDisplayName = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void dispose() {
|
|
|
|
|
displayNameController.dispose();
|
|
|
|
|
loading = false;
|
|
|
|
|
selectedLanguageError = null;
|
|
|
|
|
profileCreationError = null;
|
|
|
|
|
tncError = null;
|
|
|
|
|
super.dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool get isSSOSignup {
|
|
|
|
|
final loginTypeEntry =
|
|
|
|
|
_pangeaController.pStoreService.read(PLocalKey.loginType);
|
|
|
|
|
return loginTypeEntry is String && loginTypeEntry == 'sso';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setTncChecked(bool? value) {
|
|
|
|
|
setState(() {
|
|
|
|
|
isTncChecked = value ?? false;
|
|
|
|
|
tncError = null;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setSelectedTargetLanguage(LanguageModel? language) {
|
|
|
|
|
setState(() {
|
|
|
|
|
selectedTargetLanguage = language;
|
|
|
|
|
@ -150,7 +164,11 @@ class UserSettingsState extends State<UserSettingsPage> {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> createUserInPangea() async {
|
|
|
|
|
setState(() => profileCreationError = null);
|
|
|
|
|
setState(() {
|
|
|
|
|
profileCreationError = null;
|
|
|
|
|
selectedLanguageError = null;
|
|
|
|
|
tncError = null;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (selectedTargetLanguage == null) {
|
|
|
|
|
setState(() {
|
|
|
|
|
@ -159,6 +177,13 @@ class UserSettingsState extends State<UserSettingsPage> {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isSSOSignup && !isTncChecked) {
|
|
|
|
|
setState(() {
|
|
|
|
|
tncError = L10n.of(context).pleaseAgreeToTOS;
|
|
|
|
|
});
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!formKey.currentState!.validate()) return;
|
|
|
|
|
setState(() => loading = true);
|
|
|
|
|
|
|
|
|
|
|