From 9b3424fa909af0a14112ce871beb230e39de147f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Kaan=20K=C3=B6se?= Date: Sat, 21 Dec 2024 19:31:24 +0100 Subject: [PATCH] Fixing build errors and gmail profile synchronization. --- Wino.Core/Synchronizers/GmailSynchronizer.cs | 6 +- Wino.Mail/Animations/Synchronization.cs | 557 ++++++++++++++++++ .../MailAuthenticatorConfiguration.cs | 3 +- Wino.Mail/Wino.Mail.csproj | 5 +- 4 files changed, 561 insertions(+), 10 deletions(-) create mode 100644 Wino.Mail/Animations/Synchronization.cs diff --git a/Wino.Core/Synchronizers/GmailSynchronizer.cs b/Wino.Core/Synchronizers/GmailSynchronizer.cs index b46b9ea1..dd64f8ab 100644 --- a/Wino.Core/Synchronizers/GmailSynchronizer.cs +++ b/Wino.Core/Synchronizers/GmailSynchronizer.cs @@ -79,10 +79,6 @@ namespace Wino.Core.Synchronizers.Mail string senderName = string.Empty, base64ProfilePicture = string.Empty, address = string.Empty; - //var gmailUserData = _gmailService.Users.GetProfile("me"); - //var gmailProfile = await gmailUserData.ExecuteAsync(); - - var userProfile = await profileRequest.ExecuteAsync(); senderName = userProfile.Names?.FirstOrDefault()?.DisplayName ?? Account.SenderName; @@ -94,7 +90,7 @@ namespace Wino.Core.Synchronizers.Mail base64ProfilePicture = await GetProfilePictureBase64EncodedAsync(profilePicture).ConfigureAwait(false); } - address = userProfile.EmailAddresses.FirstOrDefault().Value; + address = userProfile.EmailAddresses.FirstOrDefault(a => a.Metadata.Primary == true).Value; return new ProfileInformation(senderName, base64ProfilePicture, address); } diff --git a/Wino.Mail/Animations/Synchronization.cs b/Wino.Mail/Animations/Synchronization.cs new file mode 100644 index 00000000..0a76a6d0 --- /dev/null +++ b/Wino.Mail/Animations/Synchronization.cs @@ -0,0 +1,557 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// LottieGen version: +// 8.1.240821.1+077322fa26 +// +// Command: +// LottieGen -Language CSharp -Public -WinUIVersion 2.6 -InputFile synchronization.json +// +// Input file: +// synchronization.json (2404 bytes created 18:54+01:00 Dec 21 2024) +// +// LottieGen source: +// http://aka.ms/Lottie +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +// ___________________________________________________________ +// | Object stats | UAP v15 count | UAP v7 count | +// |__________________________|_______________|______________| +// | All CompositionObjects | 26 | 26 | +// |--------------------------+---------------+--------------| +// | Expression animators | 1 | 1 | +// | KeyFrame animators | 1 | 1 | +// | Reference parameters | 1 | 1 | +// | Expression operations | 0 | 0 | +// |--------------------------+---------------+--------------| +// | Animated brushes | - | - | +// | Animated gradient stops | - | - | +// | ExpressionAnimations | 1 | 1 | +// | PathKeyFrameAnimations | - | - | +// |--------------------------+---------------+--------------| +// | ContainerVisuals | 1 | 1 | +// | ShapeVisuals | 1 | 1 | +// |--------------------------+---------------+--------------| +// | ContainerShapes | 1 | 1 | +// | CompositionSpriteShapes | 2 | 2 | +// |--------------------------+---------------+--------------| +// | Brushes | 1 | 1 | +// | Gradient stops | - | - | +// | CompositionVisualSurface | - | - | +// ----------------------------------------------------------- +using Microsoft.Graphics.Canvas.Geometry; +using System; +using System.Collections.Generic; +using System.Numerics; +using Windows.Graphics; +using Windows.UI; +using Windows.UI.Composition; + +namespace AnimatedVisuals +{ + // Name: main_libary_shelf_icon_sync + // Frame rate: 60 fps + // Frame count: 61 + // Duration: 1016.7 mS + sealed class Synchronization + : Microsoft.UI.Xaml.Controls.IAnimatedVisualSource + , Microsoft.UI.Xaml.Controls.IAnimatedVisualSource2 + { + // Animation duration: 1.017 seconds. + internal const long c_durationTicks = 10166666; + + public Microsoft.UI.Xaml.Controls.IAnimatedVisual TryCreateAnimatedVisual(Compositor compositor) + { + object ignored = null; + return TryCreateAnimatedVisual(compositor, out ignored); + } + + public Microsoft.UI.Xaml.Controls.IAnimatedVisual TryCreateAnimatedVisual(Compositor compositor, out object diagnostics) + { + diagnostics = null; + + if (Synchronization_AnimatedVisual_UAPv15.IsRuntimeCompatible()) + { + var res = + new Synchronization_AnimatedVisual_UAPv15( + compositor + ); + return res; + } + + if (Synchronization_AnimatedVisual_UAPv7.IsRuntimeCompatible()) + { + var res = + new Synchronization_AnimatedVisual_UAPv7( + compositor + ); + return res; + } + + return null; + } + + /// + /// Gets the number of frames in the animation. + /// + public double FrameCount => 61d; + + /// + /// Gets the frame rate of the animation. + /// + public double Framerate => 60d; + + /// + /// Gets the duration of the animation. + /// + public TimeSpan Duration => TimeSpan.FromTicks(10166666); + + /// + /// Converts a zero-based frame number to the corresponding progress value denoting the + /// start of the frame. + /// + public double FrameToProgress(double frameNumber) + { + return frameNumber / 61d; + } + + /// + /// Returns a map from marker names to corresponding progress values. + /// + public IReadOnlyDictionary Markers => + new Dictionary + { + }; + + /// + /// Sets the color property with the given name, or does nothing if no such property + /// exists. + /// + public void SetColorProperty(string propertyName, Color value) + { + } + + /// + /// Sets the scalar property with the given name, or does nothing if no such property + /// exists. + /// + public void SetScalarProperty(string propertyName, double value) + { + } + + sealed class Synchronization_AnimatedVisual_UAPv15 + : Microsoft.UI.Xaml.Controls.IAnimatedVisual + { + const long c_durationTicks = 10166666; + readonly Compositor _c; + readonly ExpressionAnimation _reusableExpressionAnimation; + AnimationController _animationController_0; + CompositionColorBrush _colorBrush_AlmostDarkSlateGray_FF2D3846; + ContainerVisual _root; + + void BindProperty( + CompositionObject target, + string animatedPropertyName, + string expression, + string referenceParameterName, + CompositionObject referencedObject) + { + _reusableExpressionAnimation.ClearAllParameters(); + _reusableExpressionAnimation.Expression = expression; + _reusableExpressionAnimation.SetReferenceParameter(referenceParameterName, referencedObject); + target.StartAnimation(animatedPropertyName, _reusableExpressionAnimation); + } + + ScalarKeyFrameAnimation CreateScalarKeyFrameAnimation(float initialProgress, float initialValue, CompositionEasingFunction initialEasingFunction) + { + var result = _c.CreateScalarKeyFrameAnimation(); + result.Duration = TimeSpan.FromTicks(c_durationTicks); + result.InsertKeyFrame(initialProgress, initialValue, initialEasingFunction); + return result; + } + + CompositionSpriteShape CreateSpriteShape(CompositionGeometry geometry, Matrix3x2 transformMatrix, CompositionBrush fillBrush) + { + var result = _c.CreateSpriteShape(geometry); + result.TransformMatrix = transformMatrix; + result.FillBrush = fillBrush; + return result; + } + + // - Shape tree root for layer: main_library_shelf_icon_sync Outlines + AnimationController AnimationController_0() + { + var result = _animationController_0 = _c.CreateAnimationController(); + result.Pause(); + BindProperty(result, "Progress", "_.Progress", "_", _root); + return result; + } + + // - - - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // - - ShapeGroup: Group 2 Offset:<28.255, 18.903> + CanvasGeometry Geometry_0() + { + CanvasGeometry result; + using (var builder = new CanvasPathBuilder(null)) + { + builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding); + builder.BeginFigure(new Vector2(11.7449999F, 5.09700012F)); + builder.AddCubicBezier(new Vector2(11.7449999F, -3.66000009F), new Vector2(4.56699991F, -10.9189997F), new Vector2(-4.25500011F, -10.9189997F)); + builder.AddCubicBezier(new Vector2(-8.6239996F, -10.9189997F), new Vector2(-12.7040005F, -9.20300007F), new Vector2(-15.7449999F, -6.08900023F)); + builder.AddLine(new Vector2(-12.8739996F, -3.32599998F)); + builder.AddCubicBezier(new Vector2(-10.5930004F, -5.66200018F), new Vector2(-7.53200006F, -6.94799995F), new Vector2(-4.25500011F, -6.94799995F)); + builder.AddCubicBezier(new Vector2(2.36199999F, -6.94799995F), new Vector2(7.74499989F, -1.47099996F), new Vector2(7.74499989F, 5.09700012F)); + builder.AddLine(new Vector2(3.74499989F, 5.09700012F)); + builder.AddLine(new Vector2(9.74499989F, 10.9189997F)); + builder.AddLine(new Vector2(15.7449999F, 5.09700012F)); + builder.AddLine(new Vector2(11.7449999F, 5.09700012F)); + builder.EndFigure(CanvasFigureLoop.Closed); + result = CanvasGeometry.CreatePath(builder); + } + return result; + } + + // - - - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // - - ShapeGroup: Group 1 Offset:<19.745, 29.096> + CanvasGeometry Geometry_1() + { + CanvasGeometry result; + using (var builder = new CanvasPathBuilder(null)) + { + builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding); + builder.BeginFigure(new Vector2(4.25500011F, 6.94799995F)); + builder.AddCubicBezier(new Vector2(-2.36199999F, 6.94799995F), new Vector2(-7.74499989F, 1.472F), new Vector2(-7.74499989F, -5.09499979F)); + builder.AddLine(new Vector2(-3.74499989F, -5.09499979F)); + builder.AddLine(new Vector2(-9.74499989F, -10.9189997F)); + builder.AddLine(new Vector2(-15.7449999F, -5.09499979F)); + builder.AddLine(new Vector2(-11.7449999F, -5.09499979F)); + builder.AddCubicBezier(new Vector2(-11.7449999F, 3.66199994F), new Vector2(-4.56699991F, 10.9189997F), new Vector2(4.25500011F, 10.9189997F)); + builder.AddCubicBezier(new Vector2(8.6260004F, 10.9189997F), new Vector2(12.7060003F, 9.20300007F), new Vector2(15.7449999F, 6.08900023F)); + builder.AddLine(new Vector2(12.8739996F, 3.32500005F)); + builder.AddCubicBezier(new Vector2(10.5930004F, 5.66099977F), new Vector2(7.53200006F, 6.94799995F), new Vector2(4.25500011F, 6.94799995F)); + builder.EndFigure(CanvasFigureLoop.Closed); + result = CanvasGeometry.CreatePath(builder); + } + return result; + } + + CompositionColorBrush ColorBrush_AlmostDarkSlateGray_FF2D3846() + { + return _colorBrush_AlmostDarkSlateGray_FF2D3846 = _c.CreateColorBrush(Color.FromArgb(0xFF, 0x2D, 0x38, 0x46)); + } + + // Shape tree root for layer: main_library_shelf_icon_sync Outlines + CompositionContainerShape ContainerShape() + { + var result = _c.CreateContainerShape(); + result.CenterPoint = new Vector2(24F, 24F); + var shapes = result.Shapes; + // ShapeGroup: Group 2 Offset:<28.255, 18.903> + shapes.Add(SpriteShape_0()); + // ShapeGroup: Group 1 Offset:<19.745, 29.096> + shapes.Add(SpriteShape_1()); + result.StartAnimation("RotationAngleInDegrees", RotationAngleInDegreesScalarAnimation_0_to_360(), AnimationController_0()); + return result; + } + + // - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // ShapeGroup: Group 2 Offset:<28.255, 18.903> + CompositionPathGeometry PathGeometry_0() + { + return _c.CreatePathGeometry(new CompositionPath(Geometry_0())); + } + + // - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // ShapeGroup: Group 1 Offset:<19.745, 29.096> + CompositionPathGeometry PathGeometry_1() + { + return _c.CreatePathGeometry(new CompositionPath(Geometry_1())); + } + + // - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // Path 1 + CompositionSpriteShape SpriteShape_0() + { + // Offset:<28.255, 18.903> + var geometry = PathGeometry_0(); + var result = CreateSpriteShape(geometry, new Matrix3x2(1F, 0F, 0F, 1F, 28.2549992F, 18.9029999F), ColorBrush_AlmostDarkSlateGray_FF2D3846());; + return result; + } + + // - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // Path 1 + CompositionSpriteShape SpriteShape_1() + { + // Offset:<19.745, 29.096> + var geometry = PathGeometry_1(); + var result = CreateSpriteShape(geometry, new Matrix3x2(1F, 0F, 0F, 1F, 19.7450008F, 29.0960007F), _colorBrush_AlmostDarkSlateGray_FF2D3846);; + return result; + } + + // The root of the composition. + ContainerVisual Root() + { + var result = _root = _c.CreateContainerVisual(); + var propertySet = result.Properties; + propertySet.InsertScalar("Progress", 0F); + // Shape tree root for layer: main_library_shelf_icon_sync Outlines + result.Children.InsertAtTop(ShapeVisual_0()); + return result; + } + + // - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // Rotation + ScalarKeyFrameAnimation RotationAngleInDegreesScalarAnimation_0_to_360() + { + // Frame 0. + var result = CreateScalarKeyFrameAnimation(0F, 0F, HoldThenStepEasingFunction()); + // Frame 61. + result.InsertKeyFrame(1F, 360F, _c.CreateCubicBezierEasingFunction(new Vector2(0.314999998F, 0F), new Vector2(0.465000004F, 0.861999989F))); + return result; + } + + // Shape tree root for layer: main_library_shelf_icon_sync Outlines + ShapeVisual ShapeVisual_0() + { + var result = _c.CreateShapeVisual(); + result.Size = new Vector2(48F, 48F); + result.Shapes.Add(ContainerShape()); + return result; + } + + // - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // RotationAngleInDegrees + StepEasingFunction HoldThenStepEasingFunction() + { + var result = _c.CreateStepEasingFunction(); + result.IsFinalStepSingleFrame = true; + return result; + } + + internal Synchronization_AnimatedVisual_UAPv15( + Compositor compositor + ) + { + _c = compositor; + _reusableExpressionAnimation = compositor.CreateExpressionAnimation(); + Root(); + } + + public Visual RootVisual => _root; + public TimeSpan Duration => TimeSpan.FromTicks(c_durationTicks); + public Vector2 Size => new Vector2(48F, 48F); + void IDisposable.Dispose() => _root?.Dispose(); + + internal static bool IsRuntimeCompatible() + { + return Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 15); + } + } + + sealed class Synchronization_AnimatedVisual_UAPv7 + : Microsoft.UI.Xaml.Controls.IAnimatedVisual + { + const long c_durationTicks = 10166666; + readonly Compositor _c; + readonly ExpressionAnimation _reusableExpressionAnimation; + CompositionColorBrush _colorBrush_AlmostDarkSlateGray_FF2D3846; + ContainerVisual _root; + + void BindProperty( + CompositionObject target, + string animatedPropertyName, + string expression, + string referenceParameterName, + CompositionObject referencedObject) + { + _reusableExpressionAnimation.ClearAllParameters(); + _reusableExpressionAnimation.Expression = expression; + _reusableExpressionAnimation.SetReferenceParameter(referenceParameterName, referencedObject); + target.StartAnimation(animatedPropertyName, _reusableExpressionAnimation); + } + + ScalarKeyFrameAnimation CreateScalarKeyFrameAnimation(float initialProgress, float initialValue, CompositionEasingFunction initialEasingFunction) + { + var result = _c.CreateScalarKeyFrameAnimation(); + result.Duration = TimeSpan.FromTicks(c_durationTicks); + result.InsertKeyFrame(initialProgress, initialValue, initialEasingFunction); + return result; + } + + CompositionSpriteShape CreateSpriteShape(CompositionGeometry geometry, Matrix3x2 transformMatrix, CompositionBrush fillBrush) + { + var result = _c.CreateSpriteShape(geometry); + result.TransformMatrix = transformMatrix; + result.FillBrush = fillBrush; + return result; + } + + // - - - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // - - ShapeGroup: Group 2 Offset:<28.255, 18.903> + CanvasGeometry Geometry_0() + { + CanvasGeometry result; + using (var builder = new CanvasPathBuilder(null)) + { + builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding); + builder.BeginFigure(new Vector2(11.7449999F, 5.09700012F)); + builder.AddCubicBezier(new Vector2(11.7449999F, -3.66000009F), new Vector2(4.56699991F, -10.9189997F), new Vector2(-4.25500011F, -10.9189997F)); + builder.AddCubicBezier(new Vector2(-8.6239996F, -10.9189997F), new Vector2(-12.7040005F, -9.20300007F), new Vector2(-15.7449999F, -6.08900023F)); + builder.AddLine(new Vector2(-12.8739996F, -3.32599998F)); + builder.AddCubicBezier(new Vector2(-10.5930004F, -5.66200018F), new Vector2(-7.53200006F, -6.94799995F), new Vector2(-4.25500011F, -6.94799995F)); + builder.AddCubicBezier(new Vector2(2.36199999F, -6.94799995F), new Vector2(7.74499989F, -1.47099996F), new Vector2(7.74499989F, 5.09700012F)); + builder.AddLine(new Vector2(3.74499989F, 5.09700012F)); + builder.AddLine(new Vector2(9.74499989F, 10.9189997F)); + builder.AddLine(new Vector2(15.7449999F, 5.09700012F)); + builder.AddLine(new Vector2(11.7449999F, 5.09700012F)); + builder.EndFigure(CanvasFigureLoop.Closed); + result = CanvasGeometry.CreatePath(builder); + } + return result; + } + + // - - - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // - - ShapeGroup: Group 1 Offset:<19.745, 29.096> + CanvasGeometry Geometry_1() + { + CanvasGeometry result; + using (var builder = new CanvasPathBuilder(null)) + { + builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding); + builder.BeginFigure(new Vector2(4.25500011F, 6.94799995F)); + builder.AddCubicBezier(new Vector2(-2.36199999F, 6.94799995F), new Vector2(-7.74499989F, 1.472F), new Vector2(-7.74499989F, -5.09499979F)); + builder.AddLine(new Vector2(-3.74499989F, -5.09499979F)); + builder.AddLine(new Vector2(-9.74499989F, -10.9189997F)); + builder.AddLine(new Vector2(-15.7449999F, -5.09499979F)); + builder.AddLine(new Vector2(-11.7449999F, -5.09499979F)); + builder.AddCubicBezier(new Vector2(-11.7449999F, 3.66199994F), new Vector2(-4.56699991F, 10.9189997F), new Vector2(4.25500011F, 10.9189997F)); + builder.AddCubicBezier(new Vector2(8.6260004F, 10.9189997F), new Vector2(12.7060003F, 9.20300007F), new Vector2(15.7449999F, 6.08900023F)); + builder.AddLine(new Vector2(12.8739996F, 3.32500005F)); + builder.AddCubicBezier(new Vector2(10.5930004F, 5.66099977F), new Vector2(7.53200006F, 6.94799995F), new Vector2(4.25500011F, 6.94799995F)); + builder.EndFigure(CanvasFigureLoop.Closed); + result = CanvasGeometry.CreatePath(builder); + } + return result; + } + + CompositionColorBrush ColorBrush_AlmostDarkSlateGray_FF2D3846() + { + return _colorBrush_AlmostDarkSlateGray_FF2D3846 = _c.CreateColorBrush(Color.FromArgb(0xFF, 0x2D, 0x38, 0x46)); + } + + // Shape tree root for layer: main_library_shelf_icon_sync Outlines + CompositionContainerShape ContainerShape() + { + var result = _c.CreateContainerShape(); + result.CenterPoint = new Vector2(24F, 24F); + var shapes = result.Shapes; + // ShapeGroup: Group 2 Offset:<28.255, 18.903> + shapes.Add(SpriteShape_0()); + // ShapeGroup: Group 1 Offset:<19.745, 29.096> + shapes.Add(SpriteShape_1()); + result.StartAnimation("RotationAngleInDegrees", RotationAngleInDegreesScalarAnimation_0_to_360()); + var controller = result.TryGetAnimationController("RotationAngleInDegrees"); + controller.Pause(); + BindProperty(controller, "Progress", "_.Progress", "_", _root); + return result; + } + + // - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // ShapeGroup: Group 2 Offset:<28.255, 18.903> + CompositionPathGeometry PathGeometry_0() + { + return _c.CreatePathGeometry(new CompositionPath(Geometry_0())); + } + + // - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // ShapeGroup: Group 1 Offset:<19.745, 29.096> + CompositionPathGeometry PathGeometry_1() + { + return _c.CreatePathGeometry(new CompositionPath(Geometry_1())); + } + + // - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // Path 1 + CompositionSpriteShape SpriteShape_0() + { + // Offset:<28.255, 18.903> + var geometry = PathGeometry_0(); + var result = CreateSpriteShape(geometry, new Matrix3x2(1F, 0F, 0F, 1F, 28.2549992F, 18.9029999F), ColorBrush_AlmostDarkSlateGray_FF2D3846());; + return result; + } + + // - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // Path 1 + CompositionSpriteShape SpriteShape_1() + { + // Offset:<19.745, 29.096> + var geometry = PathGeometry_1(); + var result = CreateSpriteShape(geometry, new Matrix3x2(1F, 0F, 0F, 1F, 19.7450008F, 29.0960007F), _colorBrush_AlmostDarkSlateGray_FF2D3846);; + return result; + } + + // The root of the composition. + ContainerVisual Root() + { + var result = _root = _c.CreateContainerVisual(); + var propertySet = result.Properties; + propertySet.InsertScalar("Progress", 0F); + // Shape tree root for layer: main_library_shelf_icon_sync Outlines + result.Children.InsertAtTop(ShapeVisual_0()); + return result; + } + + // - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // Rotation + ScalarKeyFrameAnimation RotationAngleInDegreesScalarAnimation_0_to_360() + { + // Frame 0. + var result = CreateScalarKeyFrameAnimation(0F, 0F, HoldThenStepEasingFunction()); + // Frame 61. + result.InsertKeyFrame(1F, 360F, _c.CreateCubicBezierEasingFunction(new Vector2(0.314999998F, 0F), new Vector2(0.465000004F, 0.861999989F))); + return result; + } + + // Shape tree root for layer: main_library_shelf_icon_sync Outlines + ShapeVisual ShapeVisual_0() + { + var result = _c.CreateShapeVisual(); + result.Size = new Vector2(48F, 48F); + result.Shapes.Add(ContainerShape()); + return result; + } + + // - - Shape tree root for layer: main_library_shelf_icon_sync Outlines + // RotationAngleInDegrees + StepEasingFunction HoldThenStepEasingFunction() + { + var result = _c.CreateStepEasingFunction(); + result.IsFinalStepSingleFrame = true; + return result; + } + + internal Synchronization_AnimatedVisual_UAPv7( + Compositor compositor + ) + { + _c = compositor; + _reusableExpressionAnimation = compositor.CreateExpressionAnimation(); + Root(); + } + + public Visual RootVisual => _root; + public TimeSpan Duration => TimeSpan.FromTicks(c_durationTicks); + public Vector2 Size => new Vector2(48F, 48F); + void IDisposable.Dispose() => _root?.Dispose(); + + internal static bool IsRuntimeCompatible() + { + return Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 7); + } + } + } +} diff --git a/Wino.Mail/Services/MailAuthenticatorConfiguration.cs b/Wino.Mail/Services/MailAuthenticatorConfiguration.cs index 5c8c0388..f1be40f1 100644 --- a/Wino.Mail/Services/MailAuthenticatorConfiguration.cs +++ b/Wino.Mail/Services/MailAuthenticatorConfiguration.cs @@ -23,7 +23,8 @@ namespace Wino.Services { "https://mail.google.com/", "https://www.googleapis.com/auth/userinfo.profile", - "https://www.googleapis.com/auth/gmail.labels" + "https://www.googleapis.com/auth/gmail.labels", + "https://www.googleapis.com/auth/userinfo.email" }; public string GmailTokenStoreIdentifier => "WinoMailGmailTokenStore"; diff --git a/Wino.Mail/Wino.Mail.csproj b/Wino.Mail/Wino.Mail.csproj index e24d49ef..6ddfeac7 100644 --- a/Wino.Mail/Wino.Mail.csproj +++ b/Wino.Mail/Wino.Mail.csproj @@ -192,9 +192,6 @@ 5.1.2 - - 20.1.63 - 4.1.0 @@ -634,4 +631,4 @@ --> - \ No newline at end of file +