Fixing profile sync for gmail and separating authenticators token storage.
This commit is contained in:
@@ -11,8 +11,6 @@ namespace Wino.Authentication
|
|||||||
{
|
{
|
||||||
public class GmailAuthenticator : BaseAuthenticator, IGmailAuthenticator
|
public class GmailAuthenticator : BaseAuthenticator, IGmailAuthenticator
|
||||||
{
|
{
|
||||||
private const string FileDataStoreFolder = "WinoGmailStore";
|
|
||||||
|
|
||||||
public GmailAuthenticator(IAuthenticatorConfig authConfig) : base(authConfig)
|
public GmailAuthenticator(IAuthenticatorConfig authConfig) : base(authConfig)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -47,7 +45,7 @@ namespace Wino.Authentication
|
|||||||
return GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets()
|
return GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets()
|
||||||
{
|
{
|
||||||
ClientId = ClientId
|
ClientId = ClientId
|
||||||
}, AuthenticatorConfig.GmailScope, account.Id.ToString(), CancellationToken.None, new FileDataStore(FileDataStoreFolder));
|
}, AuthenticatorConfig.GmailScope, account.Id.ToString(), CancellationToken.None, new FileDataStore(AuthenticatorConfig.GmailTokenStoreIdentifier));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
13
Wino.Calendar.ViewModels/CalendarViewModelContainerSetup.cs
Normal file
13
Wino.Calendar.ViewModels/CalendarViewModelContainerSetup.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Wino.Core;
|
||||||
|
|
||||||
|
namespace Wino.Calendar.ViewModels
|
||||||
|
{
|
||||||
|
public static class CalendarViewModelContainerSetup
|
||||||
|
{
|
||||||
|
public static void RegisterCalendarViewModelServices(this IServiceCollection services)
|
||||||
|
{
|
||||||
|
services.RegisterCoreServices();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
<ProjectReference Include="..\Wino.Core.ViewModels\Wino.Core.ViewModels.csproj" />
|
<ProjectReference Include="..\Wino.Core.ViewModels\Wino.Core.ViewModels.csproj" />
|
||||||
<ProjectReference Include="..\Wino.Core\Wino.Core.csproj" />
|
<ProjectReference Include="..\Wino.Core\Wino.Core.csproj" />
|
||||||
<ProjectReference Include="..\Wino.Messages\Wino.Messaging.csproj" />
|
<ProjectReference Include="..\Wino.Messages\Wino.Messaging.csproj" />
|
||||||
|
<ProjectReference Include="..\Wino.Services\Wino.Services.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Wino.Calendar.Packaging", "
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wino.Calendar.ViewModels", "Wino.Calendar.ViewModels\Wino.Calendar.ViewModels.csproj", "{CF850F8C-5042-4376-9CBA-C8F2BB554083}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wino.Calendar.ViewModels", "Wino.Calendar.ViewModels\Wino.Calendar.ViewModels.csproj", "{CF850F8C-5042-4376-9CBA-C8F2BB554083}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wino.Services", "Wino.Services\Wino.Services.csproj", "{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wino.Authentication", "Wino.Authentication\Wino.Authentication.csproj", "{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -257,6 +261,46 @@ Global
|
|||||||
{CF850F8C-5042-4376-9CBA-C8F2BB554083}.Release|x64.Build.0 = Release|x64
|
{CF850F8C-5042-4376-9CBA-C8F2BB554083}.Release|x64.Build.0 = Release|x64
|
||||||
{CF850F8C-5042-4376-9CBA-C8F2BB554083}.Release|x86.ActiveCfg = Release|x86
|
{CF850F8C-5042-4376-9CBA-C8F2BB554083}.Release|x86.ActiveCfg = Release|x86
|
||||||
{CF850F8C-5042-4376-9CBA-C8F2BB554083}.Release|x86.Build.0 = Release|x86
|
{CF850F8C-5042-4376-9CBA-C8F2BB554083}.Release|x86.Build.0 = Release|x86
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{BBA49030-7277-48CF-B2FE-3D01CB6B6C81}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|x64.Build.0 = Release|x64
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{16A979C2-F308-464F-9B2A-0AF8ED5EDB43}.Release|x86.Build.0 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ using Wino.Activation;
|
|||||||
using Wino.Calendar.Activation;
|
using Wino.Calendar.Activation;
|
||||||
using Wino.Calendar.Services;
|
using Wino.Calendar.Services;
|
||||||
using Wino.Calendar.ViewModels;
|
using Wino.Calendar.ViewModels;
|
||||||
using Wino.Core;
|
|
||||||
using Wino.Core.Domain.Interfaces;
|
using Wino.Core.Domain.Interfaces;
|
||||||
using Wino.Core.UWP;
|
using Wino.Core.UWP;
|
||||||
using Wino.Messaging.Client.Connection;
|
using Wino.Messaging.Client.Connection;
|
||||||
using Wino.Messaging.Server;
|
using Wino.Messaging.Server;
|
||||||
|
using Wino.Services;
|
||||||
|
|
||||||
namespace Wino.Calendar
|
namespace Wino.Calendar
|
||||||
{
|
{
|
||||||
@@ -38,7 +38,8 @@ namespace Wino.Calendar
|
|||||||
{
|
{
|
||||||
var services = new ServiceCollection();
|
var services = new ServiceCollection();
|
||||||
|
|
||||||
services.RegisterCoreServices();
|
services.RegisterSharedServices();
|
||||||
|
services.RegisterCalendarViewModelServices();
|
||||||
services.RegisterCoreUWPServices();
|
services.RegisterCoreUWPServices();
|
||||||
services.RegisterCoreViewModels();
|
services.RegisterCoreViewModels();
|
||||||
|
|
||||||
|
|||||||
@@ -21,10 +21,13 @@ namespace Wino.Calendar.Services
|
|||||||
|
|
||||||
public string[] GmailScope => new string[]
|
public string[] GmailScope => new string[]
|
||||||
{
|
{
|
||||||
"https://mail.google.com/",
|
|
||||||
"https://www.googleapis.com/auth/calendar",
|
"https://www.googleapis.com/auth/calendar",
|
||||||
"https://www.googleapis.com/auth/calendar.events",
|
"https://www.googleapis.com/auth/calendar.events",
|
||||||
"https://www.googleapis.com/auth/calendar.settings.readonly"
|
"https://www.googleapis.com/auth/calendar.settings.readonly",
|
||||||
|
"https://www.googleapis.com/auth/userinfo.profile",
|
||||||
|
"https://www.googleapis.com/auth/userinfo.email"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public string GmailTokenStoreIdentifier => "WinoCalendarGmailTokenStore";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -326,14 +326,14 @@
|
|||||||
<Project>{53723ae8-7e7e-4d54-adab-0a6033255cc8}</Project>
|
<Project>{53723ae8-7e7e-4d54-adab-0a6033255cc8}</Project>
|
||||||
<Name>Wino.Core.ViewModels</Name>
|
<Name>Wino.Core.ViewModels</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Wino.Core\Wino.Core.csproj">
|
|
||||||
<Project>{e6b1632a-8901-41e8-9ddf-6793c7698b0b}</Project>
|
|
||||||
<Name>Wino.Core</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Wino.Messages\Wino.Messaging.csproj">
|
<ProjectReference Include="..\Wino.Messages\Wino.Messaging.csproj">
|
||||||
<Project>{0c307d7e-256f-448c-8265-5622a812fbcc}</Project>
|
<Project>{0c307d7e-256f-448c-8265-5622a812fbcc}</Project>
|
||||||
<Name>Wino.Messaging</Name>
|
<Name>Wino.Messaging</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Wino.Services\Wino.Services.csproj">
|
||||||
|
<Project>{bba49030-7277-48cf-b2fe-3d01cb6b6c81}</Project>
|
||||||
|
<Name>Wino.Services</Name>
|
||||||
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
||||||
<VisualStudioVersion>14.0</VisualStudioVersion>
|
<VisualStudioVersion>14.0</VisualStudioVersion>
|
||||||
|
|||||||
@@ -6,5 +6,6 @@
|
|||||||
string[] OutlookScope { get; }
|
string[] OutlookScope { get; }
|
||||||
string GmailAuthenticatorClientId { get; }
|
string GmailAuthenticatorClientId { get; }
|
||||||
string[] GmailScope { get; }
|
string[] GmailScope { get; }
|
||||||
|
string GmailTokenStoreIdentifier { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -2,6 +2,8 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CommunityToolkit.Mvvm.Messaging;
|
using CommunityToolkit.Mvvm.Messaging;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Windows.UI.Xaml;
|
||||||
|
using Wino.Core.Domain.Enums;
|
||||||
using Wino.Core.Domain.Interfaces;
|
using Wino.Core.Domain.Interfaces;
|
||||||
using Wino.Core.UWP;
|
using Wino.Core.UWP;
|
||||||
using Wino.Messaging.UI;
|
using Wino.Messaging.UI;
|
||||||
@@ -18,6 +20,11 @@ namespace Wino.Dialogs
|
|||||||
WeakReferenceMessenger.Default.Register(this);
|
WeakReferenceMessenger.Default.Register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void OnStateChanged(AccountCreationDialogState state)
|
||||||
|
{
|
||||||
|
var tt = VisualStateManager.GoToState(this, state.ToString(), true);
|
||||||
|
}
|
||||||
|
|
||||||
public async void Receive(CopyAuthURLRequested message)
|
public async void Receive(CopyAuthURLRequested message)
|
||||||
{
|
{
|
||||||
copyClipboardURL = message.AuthURL;
|
copyClipboardURL = message.AuthURL;
|
||||||
|
|||||||
@@ -16,7 +16,15 @@ namespace Wino.Dialogs
|
|||||||
|
|
||||||
public CancellationTokenSource CancellationTokenSource { get; private set; }
|
public CancellationTokenSource CancellationTokenSource { get; private set; }
|
||||||
|
|
||||||
public static readonly DependencyProperty StateProperty = DependencyProperty.Register(nameof(State), typeof(AccountCreationDialogState), typeof(BaseAccountCreationDialog), new PropertyMetadata(AccountCreationDialogState.Idle));
|
public static readonly DependencyProperty StateProperty = DependencyProperty.Register(nameof(State), typeof(AccountCreationDialogState), typeof(BaseAccountCreationDialog), new PropertyMetadata(AccountCreationDialogState.Idle, OnStateChanged));
|
||||||
|
|
||||||
|
private static void OnStateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||||
|
{
|
||||||
|
var dialog = d as BaseAccountCreationDialog;
|
||||||
|
dialog.OnStateChanged((AccountCreationDialogState)e.NewValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void OnStateChanged(AccountCreationDialogState state);
|
||||||
|
|
||||||
// Prevent users from dismissing it by ESC key.
|
// Prevent users from dismissing it by ESC key.
|
||||||
public void DialogClosing(ContentDialog sender, ContentDialogClosingEventArgs args)
|
public void DialogClosing(ContentDialog sender, ContentDialogClosingEventArgs args)
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ namespace Wino.Core.UWP
|
|||||||
protected IThemeService ThemeService { get; }
|
protected IThemeService ThemeService { get; }
|
||||||
protected IDatabaseService DatabaseService { get; }
|
protected IDatabaseService DatabaseService { get; }
|
||||||
protected ITranslationService TranslationService { get; }
|
protected ITranslationService TranslationService { get; }
|
||||||
protected IMailDialogService DialogService { get; }
|
|
||||||
|
|
||||||
// Order matters.
|
// Order matters.
|
||||||
private List<IInitializeAsync> initializeServices => new List<IInitializeAsync>()
|
private List<IInitializeAsync> initializeServices => new List<IInitializeAsync>()
|
||||||
@@ -69,7 +68,6 @@ namespace Wino.Core.UWP
|
|||||||
ThemeService = Services.GetService<IThemeService>();
|
ThemeService = Services.GetService<IThemeService>();
|
||||||
DatabaseService = Services.GetService<IDatabaseService>();
|
DatabaseService = Services.GetService<IDatabaseService>();
|
||||||
TranslationService = Services.GetService<ITranslationService>();
|
TranslationService = Services.GetService<ITranslationService>();
|
||||||
DialogService = Services.GetService<IMailDialogService>();
|
|
||||||
|
|
||||||
// Make sure the paths are setup on app start.
|
// Make sure the paths are setup on app start.
|
||||||
AppConfiguration.ApplicationDataFolderPath = ApplicationData.Current.LocalFolder.Path;
|
AppConfiguration.ApplicationDataFolderPath = ApplicationData.Current.LocalFolder.Path;
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ namespace Wino.Core.Synchronizers.Mail
|
|||||||
private readonly GmailService _gmailService;
|
private readonly GmailService _gmailService;
|
||||||
private readonly PeopleServiceService _peopleService;
|
private readonly PeopleServiceService _peopleService;
|
||||||
|
|
||||||
private readonly IGmailAuthenticator _authenticator;
|
|
||||||
private readonly IGmailChangeProcessor _gmailChangeProcessor;
|
private readonly IGmailChangeProcessor _gmailChangeProcessor;
|
||||||
private readonly ILogger _logger = Log.ForContext<GmailSynchronizer>();
|
private readonly ILogger _logger = Log.ForContext<GmailSynchronizer>();
|
||||||
|
|
||||||
@@ -68,9 +67,6 @@ namespace Wino.Core.Synchronizers.Mail
|
|||||||
|
|
||||||
_gmailService = new GmailService(initializer);
|
_gmailService = new GmailService(initializer);
|
||||||
_peopleService = new PeopleServiceService(initializer);
|
_peopleService = new PeopleServiceService(initializer);
|
||||||
|
|
||||||
|
|
||||||
_authenticator = authenticator;
|
|
||||||
_gmailChangeProcessor = gmailChangeProcessor;
|
_gmailChangeProcessor = gmailChangeProcessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,14 +75,14 @@ namespace Wino.Core.Synchronizers.Mail
|
|||||||
public override async Task<ProfileInformation> GetProfileInformationAsync()
|
public override async Task<ProfileInformation> GetProfileInformationAsync()
|
||||||
{
|
{
|
||||||
var profileRequest = _peopleService.People.Get("people/me");
|
var profileRequest = _peopleService.People.Get("people/me");
|
||||||
profileRequest.PersonFields = "names,photos";
|
profileRequest.PersonFields = "names,photos,emailAddresses";
|
||||||
|
|
||||||
string senderName = string.Empty, base64ProfilePicture = string.Empty, address = string.Empty;
|
string senderName = string.Empty, base64ProfilePicture = string.Empty, address = string.Empty;
|
||||||
|
|
||||||
var gmailUserData = _gmailService.Users.GetProfile("me");
|
//var gmailUserData = _gmailService.Users.GetProfile("me");
|
||||||
var gmailProfile = await gmailUserData.ExecuteAsync();
|
//var gmailProfile = await gmailUserData.ExecuteAsync();
|
||||||
|
|
||||||
|
|
||||||
address = gmailProfile.EmailAddress;
|
|
||||||
var userProfile = await profileRequest.ExecuteAsync();
|
var userProfile = await profileRequest.ExecuteAsync();
|
||||||
|
|
||||||
senderName = userProfile.Names?.FirstOrDefault()?.DisplayName ?? Account.SenderName;
|
senderName = userProfile.Names?.FirstOrDefault()?.DisplayName ?? Account.SenderName;
|
||||||
@@ -98,6 +94,8 @@ namespace Wino.Core.Synchronizers.Mail
|
|||||||
base64ProfilePicture = await GetProfilePictureBase64EncodedAsync(profilePicture).ConfigureAwait(false);
|
base64ProfilePicture = await GetProfilePictureBase64EncodedAsync(profilePicture).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
address = userProfile.EmailAddresses.FirstOrDefault().Value;
|
||||||
|
|
||||||
return new ProfileInformation(senderName, base64ProfilePicture, address);
|
return new ProfileInformation(senderName, base64ProfilePicture, address);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -233,7 +233,9 @@ namespace Wino
|
|||||||
}
|
}
|
||||||
catch (WinoServerException serverException)
|
catch (WinoServerException serverException)
|
||||||
{
|
{
|
||||||
DialogService.InfoBarMessage(Translator.Info_SyncFailedTitle, serverException.Message, InfoBarMessageType.Error);
|
var dialogService = Services.GetService<IMailDialogService>();
|
||||||
|
|
||||||
|
dialogService.InfoBarMessage(Translator.Info_SyncFailedTitle, serverException.Message, InfoBarMessageType.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,7 +262,7 @@ namespace Wino
|
|||||||
// Starting the server is fine, but check if server termination behavior is set to terminate.
|
// Starting the server is fine, but check if server termination behavior is set to terminate.
|
||||||
// This state will kill the server once the app is terminated.
|
// This state will kill the server once the app is terminated.
|
||||||
|
|
||||||
isGoToAppPreferencesRequested = await DialogService.ShowWinoCustomMessageDialogAsync(Translator.AppCloseBackgroundSynchronizationWarningTitle,
|
isGoToAppPreferencesRequested = await dialogService.ShowWinoCustomMessageDialogAsync(Translator.AppCloseBackgroundSynchronizationWarningTitle,
|
||||||
$"{Translator.AppCloseTerminateBehaviorWarningMessageFirstLine}\n{Translator.AppCloseTerminateBehaviorWarningMessageSecondLine}\n\n{Translator.AppCloseTerminateBehaviorWarningMessageThirdLine}",
|
$"{Translator.AppCloseTerminateBehaviorWarningMessageFirstLine}\n{Translator.AppCloseTerminateBehaviorWarningMessageSecondLine}\n\n{Translator.AppCloseTerminateBehaviorWarningMessageThirdLine}",
|
||||||
Translator.Buttons_Yes,
|
Translator.Buttons_Yes,
|
||||||
WinoCustomMessageDialogIcon.Warning,
|
WinoCustomMessageDialogIcon.Warning,
|
||||||
|
|||||||
@@ -25,5 +25,7 @@ namespace Wino.Services
|
|||||||
"https://www.googleapis.com/auth/userinfo.profile",
|
"https://www.googleapis.com/auth/userinfo.profile",
|
||||||
"https://www.googleapis.com/auth/gmail.labels"
|
"https://www.googleapis.com/auth/gmail.labels"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public string GmailTokenStoreIdentifier => "WinoMailGmailTokenStore";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user