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_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_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_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_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_Description": "Sign in to your Wino Account to sync your Wino setup and access account-based features.",
|
||||||
"WinoAccount_LoginDialog_HeroTitle": "Welcome back",
|
"WinoAccount_LoginDialog_HeroTitle": "Welcome back",
|
||||||
@@ -1236,6 +1240,7 @@
|
|||||||
"WinoAccount_Validation_EmailRequired": "Email is required.",
|
"WinoAccount_Validation_EmailRequired": "Email is required.",
|
||||||
"WinoAccount_Validation_PasswordRequired": "Password is required.",
|
"WinoAccount_Validation_PasswordRequired": "Password is required.",
|
||||||
"WinoAccount_Validation_PasswordMismatch": "Passwords do not match.",
|
"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_InvalidCredentials": "The email address or password is incorrect.",
|
||||||
"WinoAccount_Error_AccountLocked": "This account is temporarily locked.",
|
"WinoAccount_Error_AccountLocked": "This account is temporarily locked.",
|
||||||
"WinoAccount_Error_AccountBanned": "This account has been banned.",
|
"WinoAccount_Error_AccountBanned": "This account has been banned.",
|
||||||
|
|||||||
@@ -261,6 +261,31 @@
|
|||||||
PasswordChanged="InputChanged" />
|
PasswordChanged="InputChanged" />
|
||||||
</StackPanel>
|
</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
|
<ProgressRing
|
||||||
x:Name="BusyRing"
|
x:Name="BusyRing"
|
||||||
Width="20"
|
Width="20"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace Wino.Dialogs;
|
|||||||
|
|
||||||
public sealed partial class WinoAccountRegistrationDialog : ContentDialog
|
public sealed partial class WinoAccountRegistrationDialog : ContentDialog
|
||||||
{
|
{
|
||||||
|
private const string PrivacyPolicyUrl = "https://www.winomail.app/accounts_policy.html";
|
||||||
private readonly IWinoAccountProfileService _profileService;
|
private readonly IWinoAccountProfileService _profileService;
|
||||||
|
|
||||||
public WinoAccountRegistrationDialog(IWinoAccountProfileService profileService)
|
public WinoAccountRegistrationDialog(IWinoAccountProfileService profileService)
|
||||||
@@ -93,6 +94,11 @@ public sealed partial class WinoAccountRegistrationDialog : ContentDialog
|
|||||||
return Translator.WinoAccount_Validation_PasswordMismatch;
|
return Translator.WinoAccount_Validation_PasswordMismatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PrivacyPolicyCheckBox.IsChecked != true)
|
||||||
|
{
|
||||||
|
return Translator.WinoAccount_Validation_PrivacyConsentRequired;
|
||||||
|
}
|
||||||
|
|
||||||
return string.Empty;
|
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(TextBox sender, TextBoxTextChangingEventArgs args) => HideError();
|
||||||
|
|
||||||
private void InputChanged(object sender, RoutedEventArgs e) => HideError();
|
private void InputChanged(object sender, RoutedEventArgs e) => HideError();
|
||||||
|
|||||||
Reference in New Issue
Block a user