Removes a redundant check for "There is no account that uses
those credentials" as it's already covered by other checks,
simplifying the logic for handling invalid credentials and
preventing unnecessary code execution.
Adds logic to check the error message from the API response
when a 401 error is received. If the error indicates
invalid credentials or missing authentication headers, the
user is automatically logged out.
Currently translated at 95.1% (1465 of 1540 strings)
Translated using Weblate (German)
Currently translated at 95.1% (1465 of 1540 strings)
Translated using Weblate (German)
Currently translated at 95.1% (1465 of 1540 strings)
Co-authored-by: Fabjan Sukalia <fsukalia@gmail.com>
Co-authored-by: Oliver Jeute <ojeute@freenet.de>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.habitica.com/projects/habitica-android/main-strings/de/
Translation: Habitica Android/Main Strings
Populates the change email, username, about me, and photo URL
settings forms with the user's current data.
Also, prevent SettingsFormBottomSheet from appearing blank during configuration changes by retaining the instance.
Introduce SettingsFormBottomSheet to host any ConfigurableFormScreen (ChangePassword, ChangeEmail, ChangeUsername, ChangeDisplayName, AboutMe, PhotoUrl)
Replace all legacy ValidatingEditText + HabiticaAlertDialog flows with Compose screens in a full-screen bottom sheet
Wire each show…Dialog() in AccountPreferencesFragment to instantiate the sheet, assign its content lambda, invoke existing repository calls (e.g. updatePassword, updateEmail, etc.), dismiss the sheet, and update preference summaries via configurePreference(...)
Preserve keyboard dismissal, viewModel.saveTokens, and “forgot password” callbacks exactly as before
Add FieldConfig and FormScreenConfig data models
Implement ConfigurableFormScreen and ComponentTextInput to render any settings screen with AndroidView inputs, styling, and validation
Refactor ChangePasswordScreen to use the new generic form instead of its bespoke implementation
Preserve existing theming, padding, and error behavior across all screens
- Wrap initial fragment transaction in if (savedInstanceState == null) so if the activity recreates (theme or system UI changes), fragments don’t stack
- Change password button always in purple 400
- Fix styling of change password
- Use the existing textinputlayout (textbox) behavior
- Show error when changing password (without closing the sheet)
- Use transparent white nav bar on API token bottom sheet on day/light mode
- Match password reset screen textbox styling
- Update styling of the explanation text to match designs
- Don't disable change password button field for now
- Transparent white bottom nav bar when on light mode
- Light mode password input text box colors