X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fperson%2Fsettings.tsx;h=659c77c2081e9f675fbd05b2b9ae1d72f9a7da7e;hb=2efe167f6d5f5cb65a2b749ba2fcee0934b247a3;hp=dc542e72594518b49c5efd3f39c8be1431ea1722;hpb=cf857b4eca694b530f559a5ad054e6b3a9db5c79;p=lemmy-ui.git diff --git a/src/shared/components/person/settings.tsx b/src/shared/components/person/settings.tsx index dc542e7..659c77c 100644 --- a/src/shared/components/person/settings.tsx +++ b/src/shared/components/person/settings.tsx @@ -40,6 +40,7 @@ import { ImageUploadForm } from "../common/image-upload-form"; import { LanguageSelect } from "../common/language-select"; import { ListingTypeSelect } from "../common/listing-type-select"; import { MarkdownTextArea } from "../common/markdown-textarea"; +import PasswordInput from "../common/password-input"; import { SearchableSelect } from "../common/searchable-select"; import { SortSelect } from "../common/sort-select"; import Tabs from "../common/tabs"; @@ -72,6 +73,7 @@ interface SettingsState { show_new_post_notifs?: boolean; discussion_languages?: number[]; generate_totp_2fa?: boolean; + open_links_in_new_tab?: boolean; }; changePasswordForm: { new_password?: string; @@ -263,7 +265,7 @@ export class Settings extends Component { ); } - userSettings(isSelected) { + userSettings(isSelected: boolean) { return (
{ ); } - blockCards(isSelected) { + blockCards(isSelected: boolean) { return (
{ changePasswordHtmlForm() { return ( <> -
{I18NextService.i18n.t("change_password")}
+

{I18NextService.i18n.t("change_password")}

-
- -
- -
+
+
-
- -
- -
+
+
-
- -
- -
+
+
+
+
+ + +
+
{this.totpSection()}

-
+ {this.state.deleteAccountShowConfirm && ( <> -
+
- + )} -
+ ); @@ -904,7 +907,7 @@ export class Settings extends Component { id="user-remove-totp" type="checkbox" checked={ - this.state.saveUserSettingsForm.generate_totp_2fa == false + this.state.saveUserSettingsForm.generate_totp_2fa === false } onChange={linkEvent(this, this.handleRemoveTotp)} /> @@ -941,7 +944,7 @@ export class Settings extends Component { if (text.length > 0) { searchCommunityOptions.push( - ...(await fetchCommunities(text)).map(communityToChoice) + ...(await fetchCommunities(text)).map(communityToChoice), ); } @@ -1002,7 +1005,7 @@ export class Settings extends Component { handleShowNsfwChange(i: Settings, event: any) { i.setState( - s => ((s.saveUserSettingsForm.show_nsfw = event.target.checked), s) + s => ((s.saveUserSettingsForm.show_nsfw = event.target.checked), s), ); } @@ -1012,13 +1015,13 @@ export class Settings extends Component { mui.local_user_view.local_user.show_avatars = event.target.checked; } i.setState( - s => ((s.saveUserSettingsForm.show_avatars = event.target.checked), s) + s => ((s.saveUserSettingsForm.show_avatars = event.target.checked), s), ); } handleBotAccount(i: Settings, event: any) { i.setState( - s => ((s.saveUserSettingsForm.bot_account = event.target.checked), s) + s => ((s.saveUserSettingsForm.bot_account = event.target.checked), s), ); } @@ -1026,13 +1029,13 @@ export class Settings extends Component { i.setState( s => ( (s.saveUserSettingsForm.show_bot_accounts = event.target.checked), s - ) + ), ); } handleReadPosts(i: Settings, event: any) { i.setState( - s => ((s.saveUserSettingsForm.show_read_posts = event.target.checked), s) + s => ((s.saveUserSettingsForm.show_read_posts = event.target.checked), s), ); } @@ -1040,7 +1043,15 @@ export class Settings extends Component { i.setState( s => ( (s.saveUserSettingsForm.show_new_post_notifs = event.target.checked), s - ) + ), + ); + } + + handleOpenInNewTab(i: Settings, event: any) { + i.setState( + s => ( + (s.saveUserSettingsForm.open_links_in_new_tab = event.target.checked), s + ), ); } @@ -1050,7 +1061,7 @@ export class Settings extends Component { mui.local_user_view.local_user.show_scores = event.target.checked; } i.setState( - s => ((s.saveUserSettingsForm.show_scores = event.target.checked), s) + s => ((s.saveUserSettingsForm.show_scores = event.target.checked), s), ); } @@ -1075,7 +1086,7 @@ export class Settings extends Component { (s.saveUserSettingsForm.send_notifications_to_email = event.target.checked), s - ) + ), ); } @@ -1087,17 +1098,19 @@ export class Settings extends Component { handleInterfaceLangChange(i: Settings, event: any) { const newLang = event.target.value ?? "browser"; I18NextService.i18n.changeLanguage( - newLang === "browser" ? navigator.languages : newLang + newLang === "browser" ? navigator.languages : newLang, ); i.setState( - s => ((s.saveUserSettingsForm.interface_language = event.target.value), s) + s => ( + (s.saveUserSettingsForm.interface_language = event.target.value), s + ), ); } handleDiscussionLanguageChange(val: number[]) { this.setState( - s => ((s.saveUserSettingsForm.discussion_languages = val), s) + s => ((s.saveUserSettingsForm.discussion_languages = val), s), ); } @@ -1107,7 +1120,7 @@ export class Settings extends Component { handleListingTypeChange(val: ListingType) { this.setState( - s => ((s.saveUserSettingsForm.default_listing_type = val), s) + s => ((s.saveUserSettingsForm.default_listing_type = val), s), ); } @@ -1137,33 +1150,33 @@ export class Settings extends Component { handleDisplayNameChange(i: Settings, event: any) { i.setState( - s => ((s.saveUserSettingsForm.display_name = event.target.value), s) + s => ((s.saveUserSettingsForm.display_name = event.target.value), s), ); } handleMatrixUserIdChange(i: Settings, event: any) { i.setState( - s => ((s.saveUserSettingsForm.matrix_user_id = event.target.value), s) + s => ((s.saveUserSettingsForm.matrix_user_id = event.target.value), s), ); } handleNewPasswordChange(i: Settings, event: any) { const newPass: string | undefined = - event.target.value == "" ? undefined : event.target.value; + event.target.value === "" ? undefined : event.target.value; i.setState(s => ((s.changePasswordForm.new_password = newPass), s)); } handleNewPasswordVerifyChange(i: Settings, event: any) { const newPassVerify: string | undefined = - event.target.value == "" ? undefined : event.target.value; + event.target.value === "" ? undefined : event.target.value; i.setState( - s => ((s.changePasswordForm.new_password_verify = newPassVerify), s) + s => ((s.changePasswordForm.new_password_verify = newPassVerify), s), ); } handleOldPasswordChange(i: Settings, event: any) { const oldPass: string | undefined = - event.target.value == "" ? undefined : event.target.value; + event.target.value === "" ? undefined : event.target.value; i.setState(s => ((s.changePasswordForm.old_password = oldPass), s)); } @@ -1175,9 +1188,12 @@ export class Settings extends Component { ...i.state.saveUserSettingsForm, auth: myAuthRequired(), }); + if (saveRes.state === "success") { - UserService.Instance.login(saveRes.data); - location.reload(); + UserService.Instance.login({ + res: saveRes.data, + showToast: false, + }); toast(I18NextService.i18n.t("saved")); window.scrollTo(0, 0); } @@ -1199,7 +1215,10 @@ export class Settings extends Component { auth: myAuthRequired(), }); if (changePasswordRes.state === "success") { - UserService.Instance.login(changePasswordRes.data); + UserService.Instance.login({ + res: changePasswordRes.data, + showToast: false, + }); window.scrollTo(0, 0); toast(I18NextService.i18n.t("password_changed")); } @@ -1216,7 +1235,8 @@ export class Settings extends Component { i.setState(s => ((s.deleteAccountForm.password = event.target.value), s)); } - async handleDeleteAccount(i: Settings) { + async handleDeleteAccount(i: Settings, event: Event) { + event.preventDefault(); const password = i.state.deleteAccountForm.password; if (password) { i.setState({ deleteAccountRes: { state: "loading" } });