Added capability to detect disabled gmail service for Google Workspace accounts during account creation. (#580)

This commit is contained in:
Burak Kaan Köse
2025-02-22 17:51:38 +01:00
committed by GitHub
parent 1d5eb2eced
commit bd5b51c62f
4 changed files with 31 additions and 1 deletions

View File

@@ -0,0 +1,3 @@
namespace Wino.Core.Domain.Exceptions;
public class GmailServiceDisabledException : System.Exception { }

View File

@@ -214,6 +214,8 @@
"GeneralTitle_Error": "Error",
"GeneralTitle_Info": "Information",
"GeneralTitle_Warning": "Warning",
"GmailServiceDisabled_Title": "Gmail Error",
"GmailServiceDisabled_Message": "Your Google Workspace account seems to be disabled for Gmail service. Please contact your administrator to enable Gmail service for your account.",
"HoverActionOption_Archive": "Archive",
"HoverActionOption_Delete": "Delete",
"HoverActionOption_MoveJunk": "Move to Junk",

View File

@@ -5,6 +5,7 @@ using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Messaging;
using Google;
using Google.Apis.Calendar.v3.Data;
using Google.Apis.Gmail.v1;
using Google.Apis.Gmail.v1.Data;
@@ -120,7 +121,18 @@ public class GmailSynchronizer : WinoSynchronizer<IClientServiceRequest, Message
{
_logger.Information("Synchronizing folders for {Name}", Account.Name);
await SynchronizeFoldersAsync(cancellationToken).ConfigureAwait(false);
try
{
await SynchronizeFoldersAsync(cancellationToken).ConfigureAwait(false);
}
catch (GoogleApiException googleException) when (googleException.Message.Contains("Mail service not enabled"))
{
throw new GmailServiceDisabledException();
}
catch (Exception)
{
throw;
}
_logger.Information("Synchronizing folders for {Name} is completed", Account.Name);
}

View File

@@ -274,6 +274,19 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel
DialogService.InfoBarMessage(Translator.Info_AccountCreatedTitle, string.Format(Translator.Info_AccountCreatedMessage, createdAccount.Address), InfoBarMessageType.Success);
}
}
catch (GmailServiceDisabledException)
{
// For Google Workspace accounts, Gmail API might be disabled by the admin.
// Wino can't continue synchronization in this case.
// We must notify the user about this and prevent account creation.
DialogService.InfoBarMessage(Translator.GmailServiceDisabled_Title, Translator.GmailServiceDisabled_Message, InfoBarMessageType.Error);
if (createdAccount != null)
{
await AccountService.DeleteAccountAsync(createdAccount);
}
}
catch (AccountSetupCanceledException)
{
// Ignore