|
|
|
@ -1,17 +1,16 @@
|
|
|
|
import 'dart:developer';
|
|
|
|
import 'dart:developer';
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
|
|
|
|
|
|
|
import 'package:intl/intl.dart';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:fluffychat/pangea/constants/age_limits.dart';
|
|
|
|
import 'package:fluffychat/pangea/constants/age_limits.dart';
|
|
|
|
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
|
|
|
|
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
|
|
|
|
import 'package:fluffychat/pangea/pages/p_user_age/p_user_age_view.dart';
|
|
|
|
import 'package:fluffychat/pangea/pages/p_user_age/p_user_age_view.dart';
|
|
|
|
import 'package:fluffychat/pangea/utils/p_extension.dart';
|
|
|
|
import 'package:fluffychat/pangea/utils/p_extension.dart';
|
|
|
|
import 'package:fluffychat/widgets/fluffy_chat_app.dart';
|
|
|
|
import 'package:fluffychat/widgets/fluffy_chat_app.dart';
|
|
|
|
import 'package:fluffychat/widgets/matrix.dart';
|
|
|
|
import 'package:fluffychat/widgets/matrix.dart';
|
|
|
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
|
|
|
|
|
|
|
import 'package:intl/intl.dart';
|
|
|
|
|
|
|
|
|
|
|
|
import '../../utils/bot_name.dart';
|
|
|
|
import '../../utils/bot_name.dart';
|
|
|
|
import '../../utils/error_handler.dart';
|
|
|
|
import '../../utils/error_handler.dart';
|
|
|
|
|
|
|
|
|
|
|
|
@ -24,13 +23,11 @@ class PUserAge extends StatefulWidget {
|
|
|
|
|
|
|
|
|
|
|
|
class PUserAgeController extends State<PUserAge> {
|
|
|
|
class PUserAgeController extends State<PUserAge> {
|
|
|
|
bool loading = false;
|
|
|
|
bool loading = false;
|
|
|
|
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
|
|
|
int? selectedAge;
|
|
|
|
TextEditingController dobController = TextEditingController();
|
|
|
|
TextEditingController dobController = TextEditingController();
|
|
|
|
// #Pangea
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String? error;
|
|
|
|
String? error;
|
|
|
|
bool unknownErrorState = false;
|
|
|
|
bool unknownErrorState = false;
|
|
|
|
// DateTime? dateOfBirth;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final PangeaController pangeaController = MatrixState.pangeaController;
|
|
|
|
final PangeaController pangeaController = MatrixState.pangeaController;
|
|
|
|
|
|
|
|
|
|
|
|
@ -52,13 +49,12 @@ class PUserAgeController extends State<PUserAge> {
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
String? dobFieldValidator(String? value) {
|
|
|
|
String? dobValidator() {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
if (value?.isEmpty ?? true) {
|
|
|
|
if (selectedDate == null) {
|
|
|
|
return L10n.of(context)!.yourBirthdayPleaseShort;
|
|
|
|
return L10n.of(context)!.yourBirthdayPleaseShort;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
final DateTime dob = _textToDate!;
|
|
|
|
if (!selectedDate!.isAtLeastYearsOld(AgeLimits.toUseTheApp)) {
|
|
|
|
if (!dob.isAtLeastYearsOld(AgeLimits.toUseTheApp)) {
|
|
|
|
|
|
|
|
return L10n.of(context)!.mustBe13;
|
|
|
|
return L10n.of(context)!.mustBe13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
@ -68,30 +64,26 @@ class PUserAgeController extends State<PUserAge> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DateTime? get _textToDate {
|
|
|
|
DateTime? get selectedDate {
|
|
|
|
try {
|
|
|
|
if (selectedAge == null) return null;
|
|
|
|
final DateTime initial = DateFormat.yMd().parse(dobController.text);
|
|
|
|
final now = DateTime.now();
|
|
|
|
return initial;
|
|
|
|
return DateTime(now.year - selectedAge!, now.month, now.day);
|
|
|
|
} catch (err) {
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DateTime get initialDate =>
|
|
|
|
|
|
|
|
_textToDate ?? DateTime.now().subtract(const Duration(days: 13 * 365));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Note: used linear progress bar (also used in fluffychat signup button) for consistency
|
|
|
|
//Note: used linear progress bar (also used in fluffychat signup button) for consistency
|
|
|
|
createUserInPangea() async {
|
|
|
|
createUserInPangea() async {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
setState(() {
|
|
|
|
setState(() {
|
|
|
|
error = null;
|
|
|
|
error = dobValidator();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
if (!formKey.currentState!.validate()) return;
|
|
|
|
|
|
|
|
|
|
|
|
if (error?.isNotEmpty == true) return;
|
|
|
|
|
|
|
|
|
|
|
|
setState(() {
|
|
|
|
setState(() {
|
|
|
|
loading = true;
|
|
|
|
loading = true;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
final String date = DateFormat('MM-dd-yyyy').format(_textToDate!);
|
|
|
|
final String date = DateFormat('MM-dd-yyyy').format(selectedDate!);
|
|
|
|
|
|
|
|
|
|
|
|
if (pangeaController.userController.userModel?.access == null) {
|
|
|
|
if (pangeaController.userController.userModel?.access == null) {
|
|
|
|
await pangeaController.userController.createPangeaUser(dob: date);
|
|
|
|
await pangeaController.userController.createPangeaUser(dob: date);
|
|
|
|
@ -100,11 +92,6 @@ class PUserAgeController extends State<PUserAge> {
|
|
|
|
dateOfBirth: date,
|
|
|
|
dateOfBirth: date,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Matrix.of(context).widget.router!.currentState!.to(
|
|
|
|
|
|
|
|
// '/rooms',
|
|
|
|
|
|
|
|
// queryParameters:
|
|
|
|
|
|
|
|
// Matrix.of(context).widget.router!.currentState!.queryParameters,
|
|
|
|
|
|
|
|
// );
|
|
|
|
|
|
|
|
FluffyChatApp.router.go('/rooms');
|
|
|
|
FluffyChatApp.router.go('/rooms');
|
|
|
|
} catch (err, s) {
|
|
|
|
} catch (err, s) {
|
|
|
|
setState(() {
|
|
|
|
setState(() {
|
|
|
|
@ -117,6 +104,12 @@ class PUserAgeController extends State<PUserAge> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void setSelectedAge(int? value) {
|
|
|
|
|
|
|
|
setState(() {
|
|
|
|
|
|
|
|
selectedAge = value;
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return !unknownErrorState
|
|
|
|
return !unknownErrorState
|
|
|
|
|