Add new profile settings
This commit is contained in:
parent
683da30532
commit
35ea0587b5
|
@ -15,6 +15,7 @@ import '../util/more_icon.dart';
|
||||||
import '../util/pictrs.dart';
|
import '../util/pictrs.dart';
|
||||||
import '../widgets/bottom_modal.dart';
|
import '../widgets/bottom_modal.dart';
|
||||||
import '../widgets/bottom_safe.dart';
|
import '../widgets/bottom_safe.dart';
|
||||||
|
import '../widgets/editor.dart';
|
||||||
|
|
||||||
/// Page for managing things like username, email, avatar etc
|
/// Page for managing things like username, email, avatar etc
|
||||||
/// This page will assume the manage account is logged in and
|
/// This page will assume the manage account is logged in and
|
||||||
|
@ -109,11 +110,15 @@ class _ManageAccount extends HookWidget {
|
||||||
final avatar = useRef(user.person.avatar);
|
final avatar = useRef(user.person.avatar);
|
||||||
final banner = useRef(user.person.banner);
|
final banner = useRef(user.person.banner);
|
||||||
final showNsfw = useState(user.localUser.showNsfw);
|
final showNsfw = useState(user.localUser.showNsfw);
|
||||||
|
final botAccount = useState(user.person.botAccount);
|
||||||
|
final showBotAccounts = useState(user.localUser.showBotAccounts);
|
||||||
|
final showReadPosts = useState(user.localUser.showReadPosts);
|
||||||
final sendNotificationsToEmail =
|
final sendNotificationsToEmail =
|
||||||
useState(user.localUser.sendNotificationsToEmail);
|
useState(user.localUser.sendNotificationsToEmail);
|
||||||
final newPasswordController = useTextEditingController();
|
// TODO: bring back changing password
|
||||||
final newPasswordVerifyController = useTextEditingController();
|
// final newPasswordController = useTextEditingController();
|
||||||
final oldPasswordController = useTextEditingController();
|
// final newPasswordVerifyController = useTextEditingController();
|
||||||
|
// final oldPasswordController = useTextEditingController();
|
||||||
|
|
||||||
final informAcceptedAvatarRef = useRef<VoidCallback?>(null);
|
final informAcceptedAvatarRef = useRef<VoidCallback?>(null);
|
||||||
final informAcceptedBannerRef = useRef<VoidCallback?>(null);
|
final informAcceptedBannerRef = useRef<VoidCallback?>(null);
|
||||||
|
@ -124,8 +129,8 @@ class _ManageAccount extends HookWidget {
|
||||||
final emailFocusNode = useFocusNode();
|
final emailFocusNode = useFocusNode();
|
||||||
final matrixUserFocusNode = useFocusNode();
|
final matrixUserFocusNode = useFocusNode();
|
||||||
final newPasswordFocusNode = useFocusNode();
|
final newPasswordFocusNode = useFocusNode();
|
||||||
final verifyPasswordFocusNode = useFocusNode();
|
// final verifyPasswordFocusNode = useFocusNode();
|
||||||
final oldPasswordFocusNode = useFocusNode();
|
// final oldPasswordFocusNode = useFocusNode();
|
||||||
|
|
||||||
final token =
|
final token =
|
||||||
accountsStore.userDataFor(user.instanceHost, user.person.name)!.jwt;
|
accountsStore.userDataFor(user.instanceHost, user.person.name)!.jwt;
|
||||||
|
@ -141,6 +146,9 @@ class _ManageAccount extends HookWidget {
|
||||||
defaultListingType: user.localUser.defaultListingType,
|
defaultListingType: user.localUser.defaultListingType,
|
||||||
lang: user.localUser.lang,
|
lang: user.localUser.lang,
|
||||||
showAvatars: user.localUser.showAvatars,
|
showAvatars: user.localUser.showAvatars,
|
||||||
|
botAccount: botAccount.value,
|
||||||
|
showBotAccounts: showBotAccounts.value,
|
||||||
|
showReadPosts: showReadPosts.value,
|
||||||
sendNotificationsToEmail: sendNotificationsToEmail.value,
|
sendNotificationsToEmail: sendNotificationsToEmail.value,
|
||||||
auth: token.raw,
|
auth: token.raw,
|
||||||
avatar: avatar.current,
|
avatar: avatar.current,
|
||||||
|
@ -255,12 +263,11 @@ class _ManageAccount extends HookWidget {
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Text(L10n.of(context)!.bio, style: theme.textTheme.headline6),
|
Text(L10n.of(context)!.bio, style: theme.textTheme.headline6),
|
||||||
TextField(
|
Editor(
|
||||||
controller: bioController,
|
controller: bioController,
|
||||||
focusNode: bioFocusNode,
|
focusNode: bioFocusNode,
|
||||||
textCapitalization: TextCapitalization.sentences,
|
|
||||||
onSubmitted: (_) => emailFocusNode.requestFocus(),
|
onSubmitted: (_) => emailFocusNode.requestFocus(),
|
||||||
minLines: 4,
|
instanceHost: user.instanceHost,
|
||||||
maxLines: 10,
|
maxLines: 10,
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
|
@ -280,36 +287,36 @@ class _ManageAccount extends HookWidget {
|
||||||
onSubmitted: (_) => newPasswordFocusNode.requestFocus(),
|
onSubmitted: (_) => newPasswordFocusNode.requestFocus(),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Text(L10n.of(context)!.new_password, style: theme.textTheme.headline6),
|
// Text(L10n.of(context)!.new_password, style: theme.textTheme.headline6),
|
||||||
TextField(
|
// TextField(
|
||||||
focusNode: newPasswordFocusNode,
|
// focusNode: newPasswordFocusNode,
|
||||||
controller: newPasswordController,
|
// controller: newPasswordController,
|
||||||
autofillHints: const [AutofillHints.newPassword],
|
// autofillHints: const [AutofillHints.newPassword],
|
||||||
keyboardType: TextInputType.visiblePassword,
|
// keyboardType: TextInputType.visiblePassword,
|
||||||
obscureText: true,
|
// obscureText: true,
|
||||||
onSubmitted: (_) => verifyPasswordFocusNode.requestFocus(),
|
// onSubmitted: (_) => verifyPasswordFocusNode.requestFocus(),
|
||||||
),
|
// ),
|
||||||
const SizedBox(height: 8),
|
// const SizedBox(height: 8),
|
||||||
Text(L10n.of(context)!.verify_password,
|
// Text(L10n.of(context)!.verify_password,
|
||||||
style: theme.textTheme.headline6),
|
// style: theme.textTheme.headline6),
|
||||||
TextField(
|
// TextField(
|
||||||
focusNode: verifyPasswordFocusNode,
|
// focusNode: verifyPasswordFocusNode,
|
||||||
controller: newPasswordVerifyController,
|
// controller: newPasswordVerifyController,
|
||||||
autofillHints: const [AutofillHints.newPassword],
|
// autofillHints: const [AutofillHints.newPassword],
|
||||||
keyboardType: TextInputType.visiblePassword,
|
// keyboardType: TextInputType.visiblePassword,
|
||||||
obscureText: true,
|
// obscureText: true,
|
||||||
onSubmitted: (_) => oldPasswordFocusNode.requestFocus(),
|
// onSubmitted: (_) => oldPasswordFocusNode.requestFocus(),
|
||||||
),
|
// ),
|
||||||
const SizedBox(height: 8),
|
// const SizedBox(height: 8),
|
||||||
Text(L10n.of(context)!.old_password, style: theme.textTheme.headline6),
|
// Text(L10n.of(context)!.old_password, style: theme.textTheme.headline6),
|
||||||
TextField(
|
// TextField(
|
||||||
focusNode: oldPasswordFocusNode,
|
// focusNode: oldPasswordFocusNode,
|
||||||
controller: oldPasswordController,
|
// controller: oldPasswordController,
|
||||||
autofillHints: const [AutofillHints.password],
|
// autofillHints: const [AutofillHints.password],
|
||||||
keyboardType: TextInputType.visiblePassword,
|
// keyboardType: TextInputType.visiblePassword,
|
||||||
obscureText: true,
|
// obscureText: true,
|
||||||
),
|
// ),
|
||||||
const SizedBox(height: 8),
|
// const SizedBox(height: 8),
|
||||||
SwitchListTile.adaptive(
|
SwitchListTile.adaptive(
|
||||||
value: showNsfw.value,
|
value: showNsfw.value,
|
||||||
onChanged: (checked) {
|
onChanged: (checked) {
|
||||||
|
@ -319,6 +326,33 @@ class _ManageAccount extends HookWidget {
|
||||||
dense: true,
|
dense: true,
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
|
SwitchListTile.adaptive(
|
||||||
|
value: botAccount.value,
|
||||||
|
onChanged: (checked) {
|
||||||
|
botAccount.value = checked;
|
||||||
|
},
|
||||||
|
title: Text('TODO'),
|
||||||
|
dense: true,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
SwitchListTile.adaptive(
|
||||||
|
value: showBotAccounts.value,
|
||||||
|
onChanged: (checked) {
|
||||||
|
showBotAccounts.value = checked;
|
||||||
|
},
|
||||||
|
title: Text('TODO'),
|
||||||
|
dense: true,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
SwitchListTile.adaptive(
|
||||||
|
value: showReadPosts.value,
|
||||||
|
onChanged: (checked) {
|
||||||
|
showReadPosts.value = checked;
|
||||||
|
},
|
||||||
|
title: Text('TODO'),
|
||||||
|
dense: true,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
SwitchListTile.adaptive(
|
SwitchListTile.adaptive(
|
||||||
value: sendNotificationsToEmail.value,
|
value: sendNotificationsToEmail.value,
|
||||||
onChanged: (checked) {
|
onChanged: (checked) {
|
||||||
|
|
|
@ -9,6 +9,7 @@ class Editor extends HookWidget {
|
||||||
final FocusNode? focusNode;
|
final FocusNode? focusNode;
|
||||||
final ValueChanged<String>? onSubmitted;
|
final ValueChanged<String>? onSubmitted;
|
||||||
final int? minLines;
|
final int? minLines;
|
||||||
|
final int? maxLines;
|
||||||
final String? labelText;
|
final String? labelText;
|
||||||
final bool autofocus;
|
final bool autofocus;
|
||||||
|
|
||||||
|
@ -22,6 +23,7 @@ class Editor extends HookWidget {
|
||||||
this.focusNode,
|
this.focusNode,
|
||||||
this.onSubmitted,
|
this.onSubmitted,
|
||||||
this.minLines = 5,
|
this.minLines = 5,
|
||||||
|
this.maxLines,
|
||||||
this.labelText,
|
this.labelText,
|
||||||
this.fancy = false,
|
this.fancy = false,
|
||||||
required this.instanceHost,
|
required this.instanceHost,
|
||||||
|
@ -50,7 +52,7 @@ class Editor extends HookWidget {
|
||||||
keyboardType: TextInputType.multiline,
|
keyboardType: TextInputType.multiline,
|
||||||
textCapitalization: TextCapitalization.sentences,
|
textCapitalization: TextCapitalization.sentences,
|
||||||
onSubmitted: onSubmitted,
|
onSubmitted: onSubmitted,
|
||||||
maxLines: null,
|
maxLines: maxLines,
|
||||||
minLines: minLines,
|
minLines: minLines,
|
||||||
decoration: InputDecoration(labelText: labelText),
|
decoration: InputDecoration(labelText: labelText),
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue