Add privacy policy for wino accounts when registering.
This commit is contained in:
@@ -1222,6 +1222,10 @@
|
||||
"WinoAccount_RegisterDialog_DifferenceTitle": "Wino Account is separate from your mail accounts",
|
||||
"WinoAccount_RegisterDialog_DifferenceDescription": "Your Outlook, Gmail, IMAP, or other email accounts stay exactly as they are. A Wino Account only manages Wino-specific features and account-based add-ons.",
|
||||
"WinoAccount_RegisterDialog_PrimaryButton": "Register",
|
||||
"WinoAccount_RegisterDialog_PrivacyTitle": "Privacy and API processing",
|
||||
"WinoAccount_RegisterDialog_PrivacyDescription": "Optional add-ons such as Wino AI Pack may send selected email HTML content to the Wino API service only when you use those features.",
|
||||
"WinoAccount_RegisterDialog_PrivacyLinkText": "Read the privacy policy",
|
||||
"WinoAccount_RegisterDialog_PrivacyCheckbox": "I agree to the privacy policy.",
|
||||
"WinoAccount_LoginDialog_Title": "Sign In to Wino Account",
|
||||
"WinoAccount_LoginDialog_Description": "Sign in to your Wino Account to sync your Wino setup and access account-based features.",
|
||||
"WinoAccount_LoginDialog_HeroTitle": "Welcome back",
|
||||
@@ -1236,6 +1240,7 @@
|
||||
"WinoAccount_Validation_EmailRequired": "Email is required.",
|
||||
"WinoAccount_Validation_PasswordRequired": "Password is required.",
|
||||
"WinoAccount_Validation_PasswordMismatch": "Passwords do not match.",
|
||||
"WinoAccount_Validation_PrivacyConsentRequired": "You must accept the privacy policy before creating a Wino Account.",
|
||||
"WinoAccount_Error_InvalidCredentials": "The email address or password is incorrect.",
|
||||
"WinoAccount_Error_AccountLocked": "This account is temporarily locked.",
|
||||
"WinoAccount_Error_AccountBanned": "This account has been banned.",
|
||||
|
||||
@@ -261,6 +261,31 @@
|
||||
PasswordChanged="InputChanged" />
|
||||
</StackPanel>
|
||||
|
||||
<Border
|
||||
Padding="14"
|
||||
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
|
||||
CornerRadius="12">
|
||||
<StackPanel Spacing="10">
|
||||
<TextBlock
|
||||
Style="{StaticResource BodyStrongTextBlockStyle}"
|
||||
Text="{x:Bind domain:Translator.WinoAccount_RegisterDialog_PrivacyTitle}" />
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{x:Bind domain:Translator.WinoAccount_RegisterDialog_PrivacyDescription}"
|
||||
TextWrapping="WrapWholeWords" />
|
||||
<HyperlinkButton
|
||||
HorizontalAlignment="Left"
|
||||
Click="PrivacyPolicyLink_Click"
|
||||
Content="{x:Bind domain:Translator.WinoAccount_RegisterDialog_PrivacyLinkText}" />
|
||||
<CheckBox
|
||||
x:Name="PrivacyPolicyCheckBox"
|
||||
Checked="InputChanged"
|
||||
Unchecked="InputChanged"
|
||||
Content="{x:Bind domain:Translator.WinoAccount_RegisterDialog_PrivacyCheckbox}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<ProgressRing
|
||||
x:Name="BusyRing"
|
||||
Width="20"
|
||||
|
||||
@@ -12,6 +12,7 @@ namespace Wino.Dialogs;
|
||||
|
||||
public sealed partial class WinoAccountRegistrationDialog : ContentDialog
|
||||
{
|
||||
private const string PrivacyPolicyUrl = "https://www.winomail.app/accounts_policy.html";
|
||||
private readonly IWinoAccountProfileService _profileService;
|
||||
|
||||
public WinoAccountRegistrationDialog(IWinoAccountProfileService profileService)
|
||||
@@ -93,6 +94,11 @@ public sealed partial class WinoAccountRegistrationDialog : ContentDialog
|
||||
return Translator.WinoAccount_Validation_PasswordMismatch;
|
||||
}
|
||||
|
||||
if (PrivacyPolicyCheckBox.IsChecked != true)
|
||||
{
|
||||
return Translator.WinoAccount_Validation_PrivacyConsentRequired;
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
@@ -123,6 +129,11 @@ public sealed partial class WinoAccountRegistrationDialog : ContentDialog
|
||||
}
|
||||
}
|
||||
|
||||
private async void PrivacyPolicyLink_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
await Launcher.LaunchUriAsync(new Uri(PrivacyPolicyUrl));
|
||||
}
|
||||
|
||||
private void InputChanged(TextBox sender, TextBoxTextChangingEventArgs args) => HideError();
|
||||
|
||||
private void InputChanged(object sender, RoutedEventArgs e) => HideError();
|
||||
|
||||
Reference in New Issue
Block a user